Vous parlez de dette technique .
Nous accumulons tous une dette technique dans les produits que nous développons au fil du temps; le refactoring est l'un des moyens très courants et efficaces de réduire cette dette technique, bien que de nombreuses entreprises ne remboursent jamais leur dette technique. Ces entreprises ont tendance à trouver leurs logiciels extrêmement instables sur la route, et la dette technique devient si horrible que vous ne pouvez pas le payer progressivement, car il faudrait trop de temps pour le payer de cette façon.
La dette technique a le terme, car elle suit les mêmes comportements de dette. Vous obtenez la dette, et tant que vous continuez à dépenser (créer des fonctionnalités) et à ne pas rembourser cette dette, elle ne fera qu'augmenter. Tout comme la dette, quand elle devient trop importante, vous arrivez à des points où vous souhaiterez peut-être la supprimer entièrement avec des tâches dangereuses comme des réécritures complètes. Tout comme la dette réelle, car elle s'accumule jusqu'à un certain point, elle entrave complètement votre capacité à dépenser (créer des fonctionnalités).
Juste pour jeter un autre terme dans le mélange, la cohésion se réfère à la façon dont un système, micro au niveau ligne, ou macro au niveau système, s'assemble. Un système hautement cohésif aura toutes ses pièces très bien assemblées et ressemblera à un ingénieur qui a tout écrit. Votre référence ci-dessus à quelqu'un qui vient de coller son code à la fin violerait la cohésion de ce système.
Gérer la dette technique
Il existe de nombreuses façons de gérer la dette technique, mais comme pour la dette réelle, la meilleure approche consiste à la rembourser fréquemment. Malheureusement, comme la dette réelle, il est parfois préférable de cumuler davantage pour une courte période, par exemple, le temps de commercialisation d'une fonctionnalité peut doubler ou tripler vos revenus. La partie délicate consiste à évaluer ces priorités concurrentes ainsi qu'à identifier le moment où le retour sur investissement des dettes n'en vaut pas la peine pour la fonctionnalité donnée par rapport à la date à laquelle elle l'est.
Parfois, cela vaut donc la peine d'accumuler la dette pour une courte période, mais c'est rarement le cas, et comme pour toute dette, plus la période est courte, mieux c'est. Donc, finalement (de préférence rapidement ) après avoir accumulé une dette technique, vous devez la rembourser, ce sont des approches courantes:
- Refactoring
- Cela vous permet de prendre des morceaux de code qui n'ont été réalisés que partiellement à travers ou après la fin de l'implémentation, et de les mettre à leur place correcte (ou plus correcte de toute façon).
- Récrire
- C'est comme une faillite. Cela efface l'ardoise, mais vous commencez avec rien et avez toutes les chances de faire les mêmes erreurs, voire des plus grosses. Approche à haut risque et à récompense élevée de la dette technique, mais c'est parfois votre seule option. Bien que ce soit plus rarement le cas que beaucoup vous le diront.
- Présentation de l'architecture
- Il s'agit plus d'une approche active de remboursement de la dette technique. Cela se fait en ayant une personne ayant autorité sur les détails techniques pour arrêter une mise en œuvre quels que soient les plans et les calendriers du projet afin de s'assurer qu'elle accumule moins de dette technique.
- Gel de code
- Geler le code des changements peut vous permettre de respirer là où votre dette n'augmente pas ou ne diminue pas. Cela vous donne le temps de planifier votre approche de réduction de la dette technique dans l'espoir d'avoir le ROI le plus élevé de votre approche.
- Modularisation
- Cela ressemble à une approche de niveau 2 uniquement disponible lorsque vous utilisez soit Présentation de l'architecture pour avoir déjà un système modulaire, soit Refactorisation pour en adopter un. Lorsque vous avez un système modulaire, vous pouvez alors rembourser la dette en morceaux entiers du système de manière isolée. Cela vous permet de faire des réécritures partielles , une refactorisation partielle , ainsi que de minimiser le taux d'accumulation de la dette technique, car l'isolement ne maintient la dette que dans les zones où les fonctionnalités sont entrées, par opposition à la répartition dans le système.
- Tests automatisés
- Les tests automatisés peuvent vous aider à gérer votre dette technique, car ils peuvent vous aider à identifier les points chauds du système, espérons-le avant que la dette dans ces domaines ne soit devenue très importante, mais même après le fait, ils peuvent toujours informer les ingénieurs des zones dangereuses qu'ils peut ne pas avoir déjà réalisé. De plus, une fois que vous avez des tests automatisés, vous pouvez refaçonner plus librement les choses sans craindre d'en casser trop. Non pas parce que les développeurs ne casseront pas les choses, mais parce qu'ils découvriront quand ils cassent les choses , s'appuyer sur des testeurs manuels dans des systèmes très endettés a tendance à avoir un mauvais bilan pour trouver des problèmes.