26 août 2016

Gérer la Dette Technique : Un défi au quotidien

Design & Code

Portrait collaborateur.

Chaouki

Bouchouicha

Image d'une équipe en réunion.

26 août 2016

Gérer la Dette Technique : Un défi au quotidien

Design & Code

Portrait collaborateur.

Chaouki

Bouchouicha

Image d'une équipe en réunion.

26 août 2016

Gérer la Dette Technique : Un défi au quotidien

Design & Code

Portrait collaborateur.

Chaouki

Bouchouicha

Image d'une équipe en réunion.

La gestion de la dette technique est un défi majeur que nous devons relever chaque jour en tant que développeur. Elle représente les compromis effectués pendant les différentes phases du processus de développement d'un produit logiciel. En effet, cela ne se produit pas exclusivement pendant le développement, comme on peut souvent le penser. Si on ne fait pas attention on peut générer de la dette technique dès la phase de collecte des exigences, lors de la rédaction des tests ou même pendant la phase de maintenance. Elle peut potentiellement mettre en péril l'ensemble du projet si elle n'est pas gérée efficacement et résolue de manière proactive.

Dans cet article, nous explorerons ce qu'est exactement la dette technique, les causes, comment elle se manifeste, et surtout, comment la gérer pour garantir le succès continu de vos projets.


Qu'est-ce que la Dette Technique ?

Ward Cunningham, auteur du livre "Ward Explains Debt Metaphor" a introduit le terme "dette technique" dans le domaine du développement logiciel en 1992. Une de ses célèbres citations est : "La dette technique est comme une dette financière. Si elle n'est pas remboursée régulièrement, elle peut devenir un fardeau écrasant qui freine le développement futur du projet ".

Toute altération de la qualité du code ou de l'architecture logicielle pendant le processus de développement est considérée comme une dette technique. En général, cette altération de la qualité est en échange d'un gain immédiat, comme un délai de livraison plus court.

Ces compromis faits au détriment de la qualité du livrable peuvent inclure des raccourcis, des solutions temporaires, des pratiques de codage qui ne respectent pas les normes de qualité, ou même le report des tâches de maintenance nécessaires.


Quelles sont les causes ?

Ses causes peuvent être multiples. L'une des causes les plus courantes est la pression des délais ou encore le manque de ressources qu'il s'agisse de temps, de personnel ou de budget. La pression peut pousser les développeurs à intégrer des solutions temporaires, à contourner les bonnes pratiques de codage ou à diminuer de la couverture des tests. On a tous entendu l’excuse : « Je ne dispose pas de suffisamment de temps pour rédiger les tests. »


Comment se manifeste la dette technique ?

Elle peut se manifester de plusieurs manières. La première est qu’elle est visible dans un code source qui n’est pas élégant, mal organisé et difficile à comprendre c’est-à-dire un code qui ne respecte pas les règles et les normes de codage (clean code). La deuxième manifestation de la dette technique est qu’elle peut être à travers une architecture complexe et fragile, avec des dépendances excessives entre les différents composants du système.

Un signe commun de l'existence d'une dette technique est la difficulté à intégrer de nouvelles fonctionnalités sans introduire de nouveaux bugs, ou encore un taux élevé d'incidents. Dans de telles situations, il est préférable d'avoir une politique claire de gestion de la dette technique en place.


Comment la gérer efficacement ?

Une gestion efficace est essentielle pour assurer la santé à long terme de vos projets. Voici quelques stratégies clés pour le gérer :

  1. Conscience et Transparence : La première étape pour gérer la dette technique est de reconnaître son existence et de la documenter. Cela nécessite une culture de transparence au sein de l'équipe de développement, où les développeurs se sentent à l'aise de signaler les zones où la dette technique s'est accumulée.

  2. Évaluation et Priorisation : Une fois qu'elle est identifiée, il est important de l'évaluer et de la prioriser en fonction de son impact sur le projet. Il est possible que certaines dettes techniques nécessitent une action immédiate, tandis que d'autres peuvent être tolérées temporairement.

  3. Remboursement Progressif : Comme pour toute dette, il est essentiel de commencer à rembourser la dette technique progressivement. Cela peut impliquer de consacrer du temps pour effectuer des tâches de refactorisation du code, d'amélioration de la documentation, ou de réduction de la complexité du code. En règle générale, lorsqu'une dette technique est importante, l'équipe essaie de prendre un ou deux tickets spécifiques lors de chaque itération.

  4. Rien n'est plus important que la qualité : Au lieu de voir la dette technique comme un fardeau, il est important de la considérer comme un investissement dans la qualité du produit que vous développez. En accordant le temps nécessaire pour la rembourser, vous évitez des coûts de maintenance plus élevés à long terme et assurez la pérennité du projet.


Aller plus loin

Dans ce paragraphe nous nous pencherons sur la littérature en vous proposant une sélection de livres pertinents abordant le thème du Clean Code et de la dette technique :

  1. Ward Cunningham - "The WyCash Portfolio Management System" (1992). Cette première référence que je vous propose n’ai pas un livre, mais plutôt un article. Ward Cunningham a introduit le concept de dette technique pour la première fois dans cet article, où il l'a comparée à la dette financière. Vous pouvez consulter l'article en cliquant ici.

  2. Steve McConnell - "Code Complete: A Practical Handbook of Software Construction" (1993). Ce livre explore les meilleures pratiques de construction de logiciels et aborde les implications de la dette technique sur la qualité du code. Ce livre classique a été entièrement mis à jour et révisé avec des pratiques de pointe et de nouveaux exemples de code. Vous pouvez retrouver ce livre en cliquant ici.

  3. Martin Fowler - "Refactoring: Improving the Design of Existing Code" (1999). Martin Fowler présente des techniques de refactoring pour améliorer la conception et la qualité du code, ce qui peut contribuer à réduire la dette technique. Vous pouvez retrouver ce livre en cliquant ici.

  4. Michael C. Feathers - "Working Effectively with Legacy Code" (2004). Ce livre fournit des stratégies pour travailler avec du code existant de manière efficace, en abordant les défis liés à la dette technique. Vous pouvez retrouver ce livre en cliquant ici.

  5. Robert C. Martin - "Clean Code: A Handbook of Agile Software Craftsmanship" (2008). Ce livre offre des conseils pratiques pour écrire un code propre et maintenable, en abordant également les risques associés à la dette technique. Vous pouvez retrouver ce livre en cliquant ici.

N'hésitez pas à consulter notre blog, où vous pouvez trouver quelques articles qui traitent la thématique « Comment écrire un code propre ? ».
Par exemple : 


Conclusion

Dans le domaine du développement logiciel, la dette technique est une réalité incontournable. Cependant, en mettant en place une approche proactive pour la gérer, vous pouvez réduire son impact sur votre projet. En investissant dans la qualité du code, vous construisez des fondations solides pour l'avenir de votre projet, assurant ainsi sa durabilité et sa capacité à s'adapter aux changements de votre entreprise et de vos utilisateurs.