Dette technique :
la mesurer, la rembourser.
Technical debt:
measure it, pay it down.
La métaphore de Ward Cunningham est financière, et il faut la prendre au sérieux : on emprunte du temps aujourd'hui, on paie des intérêts à chaque livraison. Une dette bien choisie est un bon investissement. Une dette qu'on ne mesure pas finit par consommer toute la capacité de l'équipe.
La métaphore, correctement
Ward Cunningham a introduit le terme en 1992, et il est presque toujours mal cité. Sa formulation d'origine ne parlait pas de code bâclé. Elle parlait de l'écart entre votre compréhension du domaine au moment où vous avez écrit le code et votre compréhension aujourd'hui. Livrer vite pour apprendre est légitime ; ne pas mettre le code à jour quand la compréhension progresse, voilà la dette.
Le principal, c'est ce que coûterait la remise en état. Les intérêts, c'est le surcoût payé sur chaque changement tant qu'elle est là. Une dette dans du code jamais modifié ne produit aucun intérêt : elle est théorique. Une dette au cœur du système que vous touchez chaque semaine produit des intérêts composés.
Les quatre types (le quadrant de Fowler)
Martin Fowler distingue deux axes — délibérée ou involontaire, prudente ou imprudente — ce qui donne quatre cas très différents :
- Délibérée et prudente : « On sait que la bonne structure serait celle-là, mais on livre pour la démo de vendredi, et on revient. » Un vrai emprunt, avec un plan de remboursement. Parfaitement défendable.
- Délibérée et imprudente : « On n'a pas le temps de faire de la conception. » Un emprunt sans intention de rembourser, à taux variable.
- Involontaire et prudente : « Maintenant qu'on a livré, on comprend ce qu'il aurait fallu faire. » Inévitable, saine, et c'est exactement le cas d'origine de Cunningham. C'est le prix de l'apprentissage.
- Involontaire et imprudente : « C'était quoi, la conception ? » L'équipe ne savait pas ce qu'elle ne savait pas. Le seul remède est la montée en compétence.
L'intérêt du quadrant est managérial : la seule case qui relève d'un problème de processus est la deuxième. Traiter les quatre de la même façon revient à reprocher à une équipe d'avoir appris.
La mesurer avec des chiffres qui parlent
« Le code est sale » ne débloque aucun budget. Les mesures suivantes, oui, parce qu'elles se traduisent en argent et en dates :
- Délai de livraison — temps entre un commit et sa mise en production. S'il passe de deux jours à deux semaines, votre capacité de réaction commerciale a été divisée par cinq.
- Taux d'échec des changements — proportion des déploiements qui provoquent un incident ou un retour arrière. Au-dessus de quinze pour cent, l'équipe passe son temps à réparer.
- Répartition de l'effort — pourcentage du temps consacré aux correctifs et au support par rapport aux fonctionnalités neuves. La courbe de cette répartition sur douze mois est le graphique le plus convaincant que vous puissiez montrer à une direction.
- Zones à haut risque — croisez la fréquence de modification de chaque fichier avec sa complexité. Les fichiers en haut à droite sont votre dette réelle ; le reste est de la dette théorique.
- Délai d'intégration d'un nouvel arrivant — combien de semaines avant qu'une nouvelle personne livre en autonomie. C'est un excellent indicateur de la clarté de votre architecture.
Les outils qui affichent une dette en « jours-homme » à partir d'une analyse statique donnent un chiffre rassurant et largement fictif. Ils sont utiles pour suivre une tendance, pas pour bâtir un dossier d'affaires.
Une stratégie de remboursement qui tient
Trois approches, à combiner :
- L'amélioration opportuniste. Chaque fonctionnalité inclut le nettoyage du code qu'elle traverse. Ce n'est pas une ligne budgétaire séparée, c'est le coût normal du travail. C'est la seule approche qui survit à un trimestre difficile.
- Une capacité réservée. Dix à vingt pour cent de chaque sprint pour la dette, protégés comme du travail de fonctionnalité — dans le backlog, estimés, visibles. Ce qui n'est pas dans le sprint n'existe pas.
- Le chantier ciblé. Pour les gros blocages structurels, un projet nommé avec un résultat mesurable : « ramener le temps de build de 40 à 5 minutes », « supprimer la dépendance à la base partagée ». Jamais « refactorer le module de facturation », qui n'a ni fin ni preuve de succès.
Et la règle de survie : ne laissez jamais entrer de nouvelle dette imprudente pendant que vous remboursez l'ancienne. Une définition de « fini » sérieuse est ce qui tient cette ligne.
Quand la dette est trop grosse
Il existe un point où le remboursement progressif ne suffit plus : quand la plateforme n'est plus supportée, quand plus personne dans l'organisation ne comprend le système, ou quand le modèle de données interdit ce que le métier demande maintenant. Là, la question devient refactorer ou remplacer — et la réponse est presque toujours le remplacement progressif par le motif de l'étrangleur, pas la réécriture d'un bloc.
Notre position
On mesure votre situation de départ avant de bâtir quoi que ce soit, et on remesure après le déploiement. La dette technique fait partie de cette mesure : si votre système coûte trois fois trop cher à faire évoluer, c'est un chiffre, pas une opinion. Et si la bonne réponse est de garder ce que vous avez plutôt que de tout remplacer, on vous le dira — même si ça réduit le mandat.
Questions fréquentes
Qu'est-ce que la dette technique ?
C'est le coût futur des raccourcis pris dans la conception ou le code. Comme une dette financière, elle a un principal — le coût de la remise en état — et des intérêts — le surcoût payé sur chaque changement tant qu'elle est là.
La dette technique est-elle toujours mauvaise ?
Non. Une dette délibérée et assumée, contractée pour livrer plus tôt et apprendre du marché, est un investissement rationnel — à condition qu'elle soit inscrite quelque part et remboursée. La dette dangereuse est celle qu'on ne mesure pas et qu'on ne rembourse jamais.
Comment mesurer la dette technique ?
Avec des indicateurs qui se traduisent en argent : délai entre un commit et sa mise en production, taux d'échec des changements, part du temps consacrée aux correctifs plutôt qu'aux fonctionnalités, et croisement entre fréquence de modification et complexité des fichiers.
Quel pourcentage du temps consacrer à la dette technique ?
Dix à vingt pour cent de la capacité de chaque sprint est un point de départ courant, à condition que ce travail soit dans le backlog, estimé et visible. Le reste doit se faire de façon opportuniste, en nettoyant le code que les fonctionnalités traversent.
À lire ensuite
- Refactoring : changer sans casser
- Code smells : le catalogue utile
- Agile : c'est quoi, vraiment ?
- Développement logiciel sur mesure
Parlons de votre projet
Vous soupçonnez que votre système vous coûte plus cher qu'il ne devrait, sans pouvoir le chiffrer ? C'est exactement ce que la séance de direction IA met en chiffres.
Ward Cunningham's metaphor is financial, and it deserves to be taken seriously: you borrow time today and pay interest on every release. Well-chosen debt is a good investment. Debt nobody measures eventually consumes the team's entire capacity.
The metaphor, done properly
Ward Cunningham introduced the term in 1992, and it is almost always misquoted. His original formulation was not about sloppy code. It was about the gap between your understanding of the domain when you wrote the code and your understanding today. Shipping fast to learn is legitimate; failing to update the code as understanding improves is the debt.
Principal is what putting it right would cost. Interest is the surcharge paid on every change while it stays. Debt in code never modified generates no interest: it is theoretical. Debt at the heart of a system you touch weekly compounds.
The four types (Fowler's quadrant)
Martin Fowler distinguishes two axes — deliberate or inadvertent, prudent or reckless — giving four very different cases:
- Deliberate and prudent: "We know the right structure, but we ship for Friday's demo and come back." A real loan, with a repayment plan. Entirely defensible.
- Deliberate and reckless: "We don't have time for design." A loan with no intent to repay, at a variable rate.
- Inadvertent and prudent: "Now that we've shipped, we understand what we should have done." Unavoidable, healthy, and exactly Cunningham's original case. It is the price of learning.
- Inadvertent and reckless: "What's design?" The team did not know what it did not know. The only remedy is skill.
The quadrant's value is managerial: the only quadrant that indicates a process problem is the second. Treating all four the same amounts to blaming a team for having learned.
Measuring it with numbers that land
"The code is messy" unlocks no budget. These do, because they translate into money and dates:
- Lead time — time from commit to production. If it goes from two days to two weeks, your commercial responsiveness has been cut fivefold.
- Change failure rate — share of deployments causing an incident or rollback. Above fifteen percent, the team spends its life repairing.
- Effort split — percentage of time spent on fixes and support versus new features. That curve over twelve months is the most persuasive chart you can put in front of an executive.
- High-risk zones — cross each file's change frequency with its complexity. The files in the top right are your real debt; the rest is theoretical.
- Onboarding time — how many weeks until a new hire ships independently. An excellent proxy for architectural clarity.
Tools that report debt in "person-days" from static analysis give a reassuring and largely fictional number. Useful for trend, not for a business case.
A repayment strategy that holds
Three approaches, to combine:
- Opportunistic improvement. Every feature includes cleaning the code it passes through. Not a separate budget line — the normal cost of the work. It is the only approach that survives a bad quarter.
- Reserved capacity. Ten to twenty percent of each sprint for debt, protected like feature work — in the backlog, estimated, visible. What is not in the sprint does not exist.
- Targeted campaigns. For large structural blockers, a named project with a measurable outcome: "bring build time from 40 minutes to 5", "remove the shared-database dependency". Never "refactor the billing module", which has neither an end nor proof of success.
And the survival rule: never let new reckless debt in while repaying the old. A serious definition of done is what holds that line.
When the debt is too large
There is a point where incremental repayment no longer suffices: when the platform is unsupported, when nobody in the organisation understands the system, or when the data model forbids what the business now needs. There the question becomes refactor or replace — and the answer is almost always progressive replacement via the strangler fig pattern, not a big-bang rewrite.
Where we stand
We measure your baseline before building anything, and measure again after deployment. Technical debt is part of that measurement: if your system costs three times what it should to evolve, that is a number, not an opinion. And if the right answer is to keep what you have rather than replace it, we will say so — even when it shrinks the engagement.
Frequently asked questions
What is technical debt?
The future cost of shortcuts taken in design or code. Like financial debt it has a principal — the cost of putting it right — and interest — the surcharge paid on every change while it remains.
Is technical debt always bad?
No. Deliberate, acknowledged debt taken on to ship earlier and learn from the market is a rational investment — provided it is recorded somewhere and repaid. The dangerous kind is debt nobody measures and nobody repays.
How do you measure technical debt?
With indicators that translate into money: lead time from commit to production, change failure rate, share of time spent on fixes versus features, and the intersection of file change frequency with complexity.
What percentage of time should go to technical debt?
Ten to twenty percent of each sprint's capacity is a common starting point, provided the work sits in the backlog, estimated and visible. The rest should happen opportunistically, cleaning the code features pass through.
Read next
- Refactoring: change without breaking
- Code smells: the useful catalogue
- What is agile, really?
- Custom software development
Let's talk about your project
Suspect your system costs more than it should but cannot put a number on it? That is exactly what the AI Direction Session quantifies.