Skip to main content

Complexité accidentelle et croissance de l'entreprise

Complexité du logiciel et croissance

Complexité accidentelle et croissance de l'entreprise

Saviez-vous que la complexité accidentelle peut fortement impacter la croissance de votre entreprise ?

❓ Qu'est-ce que la "complexité accidentelle" ?

La complexité d'un logiciel peut être décomposée en 3 parties :

1️⃣ Complexité essentielle

Complexité directement liée au problème métier que l’on cherche à résoudre. Un système de livraison multimodale n’a pas la même complexité qu’un blog personnel en ligne. Les complexités essentielles de ces deux projets sont différentes.

2️⃣ Complexité obligatoire

Complexité qui est nécessaire pour que le logiciel rende un service. Par exemple si vous codez une API de paiement pour une plateforme web, il vous faudra un serveur HTTP.

Ce serveur HTTP ne fait pas partie de la complexité essentielle (qui est liée au système de paiement), mais il est obligatoire pour que votre application soit utile.

Les contraintes techniques et réglementaires qui pèsent sur un projet peuvent modifier radicalement la complexité obligatoire de celui-ci.

3️⃣ Complexité accidentelle

Complexité qui n’est pas lié au problème métier et n’est pas nécessaire à celui-ci. C’est une complexité qui ne devrait théoriquement pas exister.

Elle peut être liée à des choix malheureux dans la conception du code, dans la sélection des outils, mais aussi le fait de l’entropie du logiciel (tendance naturelle d'un système à se désordonner).

Cette catégorisation permet de mieux évaluer les risques en termes de maintenabilité future d’un logiciel.

✅ Savoir classifier la complexité nous permet de mieux appréhender les situations que nous rencontrons au quotidien et de savoir dans quelle direction concentrer nos efforts afin de garder la complexité sous contrôle.

⚠️ Les risques d'une complexité accidentelle importante :

  • Des clients dérangés par des bogues ou des fonctionnalités manquantes dues à une faible productivité
  • des coûts additionnel (support, …)
  • Les développements ralentis et les problèmes de qualité qui sont un problème pour le marketing
  • Les bugs mènent à des patchs fréquents qui contrarient les équipes opérationnelles
  • De nombreux acteurs agacés, des décideurs frustrés (mauvaise publicité due aux bogues, retards ou problèmes de sécurité, …)
  • Dernier point et pas des moindres, les développeurs souffrent. Personne ne souhaite livrer du travail de mauvaise qualité et personne ne veut reprendre le mauvais travail des autres.

👉 La mise en place de bonnes pratiques de développement (SOLID, revue de code, Tests, TDD, DDD, pair-programming, …) vous permettra de minimiser la complexité accidentelle et donc son impact sur la croissance de votre entreprise.

📌 Sources

🔗 Certaines complexités sont plus utiles que d’autres (Arnaud LEMAIRE)

https://www.lilobase.me/certaines-complexites-sont-plus-utiles-que-dautres/

🔗 Gérer la dette technique (InfoQ)

https://www.infoq.com/fr/articles/managing-technical-debt/