icetray - Fotolia
Développement Agile : comment gérer et réduire la dette technique
Ne laissez pas la dette technique faire boule de neige. Voici comment surveiller, maintenir et réduire cet élément problématique des projets de développement d’applications agiles et en continu.
Lorsque l’on contracte une dette auprès d’une banque, elle doit être remboursée au fil du temps, sans oublier les intérêts qui vont avec. La dette technique dans le développement Agile n’est pas différente. D’une manière ou d’une autre, il faudra la payer.
Lorsque les développeurs ajoutent des fonctionnalités et veulent faire évoluer ou rendre interopérable une application donnée, ils risquent d’accumuler une dette technique. Par exemple, si les programmeurs déploient une fonctionnalité issue des demandes des métiers, tous les problèmes qui découlent de ce projet et qui nécessitent plus de travail par la suite – comme le remaniement – sont appelés dette technique.
Examinons comment calculer, surveiller et, idéalement, éliminer la dette technique dans le cadre d’un développement Agile.
Mesurer et surveiller la dette technique
Bien que les organisations ne cherchent pas à créer et à aggraver la dette technique, celle-ci est extrêmement courante – et prévisible. Si les entreprises attendent que chaque ligne de code soit parfaite, les projets ne quitteront jamais le stade du développement.
Cependant, les équipes peuvent surveiller et gérer la dette technique pour établir le ratio idéal, entre administrer l’existant et poursuivre le développement de l’application. Par exemple, des outils tels que SonarQube et Coverity mesurent la dette technique et fournissent des données pour calculer ce ratio afin de respecter les délais de développement.
Une fois que les équipes ont trouvé l’équilibre idéal, elles peuvent continuer ces tâches de supervision de manière proactive et contrôler les problèmes potentiels à l’avenir.
La dette technique et l’Agile
Le développement Agile repose sur la rapidité. Les fonctionnalités de l’application doivent s’exécuter correctement pour que le développement se poursuive. Même si l’application ne rencontre aucun problème, les équipes accumuleront probablement une dette technique, car elles privilégient la rapidité et l’accélération des livraisons continues au détriment des meilleures pratiques et de l’assurance qualité.
Lorsque les équipes se bousculent pour respecter les délais d’un sprint, cela se traduit généralement par des méthodes fastidieuses, des routines inefficaces ou un code de mauvaise qualité. Si les équipes mettent l’accent sur les nouvelles fonctionnalités plutôt que sur la résolution des bugs, cela crée également une dette technique qui devra être résolue avant de passer à l’étape de développement suivante.
Les développeurs Agile doivent assumer la responsabilité de leur travail, même si cela signifie admettre qu’ils prennent des raccourcis pour effectuer un rendu à temps. L’excellence et la cohérence font partie intégrante des sprints agiles, mais elles peuvent avoir un coût.
Surveillez le montant de la dette technique accumulée par votre équipe et prévoyez d’y remédier au moment de remplir le carnet de produit (backlog).
Coûts de la dette technique
Voici les quatre coûts les plus courants associés à la dette technique dans le développement Agile.
Faible qualité du code. Si les développeurs se précipitent pour respecter un délai, ils peuvent le faire au détriment d’un code propre et bien organisé. De mauvaises pratiques de conception et de codage peuvent permettre de terminer le projet à temps, mais elles créent des problèmes à long terme. Les développeurs qui arriveront plus tard devront faire face à ces erreurs, et ils auront peut-être du mal à maintenir et à surveiller la base de code. L’équipe contracte une dette technique à cause de cette mauvaise conception, ce qui entraîne un arriéré de tâches liées au nettoyage du code.
Une progression ralentie. Au fur et à mesure que la dette technique s’accumule, la quantité de travail nécessaire pour faire avancer le projet augmente proportionnellement. Que ce soit en raison de la complexité du code, des tests ou de tout autre problème, cela allonge le projet. Par conséquent, vos développeurs passeront du temps à résoudre ces problèmes au lieu de fournir d’autres travaux ayant une valeur commerciale.
Augmentation des défauts. Les défauts sont une conséquence courante de la dette technique. Ces défauts affectent l’expérience du client et augmentent les coûts de maintenance du produit tout au long de sa durée de vie.
Baisse de moral de l’équipe. À mesure que la dette technique s’accumule, il devient plus difficile de comprendre l’état actuel du système et la quantité de travail nécessaire pour ajouter de nouvelles fonctionnalités. La dette technique peut réduire considérablement la productivité de votre équipe. L’avancée d’un projet ralentissant, le moral de l’équipe va sans aucun doute chuter, car elle passe du temps à résoudre des problèmes évitables, sans en créer de nouveaux, espérons-le.
Comment réduire ou éliminer la dette technique
Voici plusieurs façons de réduire ou d’éliminer la dette technique :
Les tests automatisés. Ne perdez pas de temps avec les tests manuels ; ils sont largement inefficaces. L’un des moyens les plus efficaces de réduire ou d’éliminer la dette technique est l’automatisation des tests. Ces cycles bien établis de détection de bugs et d’analyse de code, à chaque mise à jour d’un module, permettent de minimiser en partie la dette technique. En revanche, la revue de code manuelle par des pairs et la vérification de ces tests par un architecte ou le responsable d’un projet demeurent indispensables.
La structure du projet. Une bonne gestion de projet demeure l’un des moyens les plus efficaces pour empêcher les débordements. Les outils de gestion de projet – tels que Trello, Asana, Planner, etc. – peuvent aider les équipes à suivre l’état du développement et à respecter le calendrier. Une autre façon de réduire la dette technique consiste à surveiller les problèmes de code et à les corriger le plus rapidement possible. Des outils d’analyse du code tels que Sonargraph et Klocwork peuvent aider à identifier ces problèmes et à les classer par ordre de priorité.
Établir les meilleures pratiques de programmation. Les organisations devraient préparer un document sur les normes à suivre en matière de développement en incluant les meilleures pratiques à suivre par les développeurs. L’adhésion des équipes à cette charte réduit considérablement la dette technique. Vous pouvez également tirer parti de la programmation en binôme pour obtenir de meilleurs résultats.
Refactorisez votre code source. Le remaniement est un autre moyen de traiter la dette technique. Vous pouvez profiter de la refactorisation pour améliorer la qualité interne du code source sans altérer le comportement externe. Cette phase vise à modifier le code mal écrit – souvent appelé code sale – qui contribue à la dette technique. Ces défauts peuvent être dus à l’incompétence ou à l’inexpérience des développeurs ou à leur désir de fournir une solution de rechange rapide. Si les équipes analysent et réécrivent le code à intervalles réguliers, vous pouvez réduire la dette technique existante et améliorer la maintenabilité, la lisibilité et l’efficacité de votre code.
Choisissez une architecture évolutive et flexible. Pour éviter le remaniement, les équipes doivent identifier une architecture sûre, évolutive et flexible. Les dettes d’architecture sont coûteuses non seulement techniquement, mais aussi en argent sonnant et trébuchant. Examinez les nouvelles technologies et architectures compatibles avec la plateforme qui offrent une intégration transparente et facilitent l’ajout de fonctionnalités. À l’inverse, ne vous précipitez pas pour adopter certaines solutions émergentes.
La dette technique n’est pas si mauvaise que ça
La dette technique n’est pas toujours néfaste. Par exemple, si le backlog de développement consiste à améliorer l’application plutôt qu’à corriger des bugs, celle-ci est acceptable.
Néanmoins, il est préférable de l’éviter. Lorsque les équipes identifient les causes profondes de la dette, cela permet d’améliorer le développement et de prévenir ces problèmes à l’avenir.