Technical debt is the accumulated cost of implementation choices that were expedient at the time but that make future changes slower or riskier. The metaphor is Ward Cunningham's: borrowing against future capacity to ship sooner now, with interest paid in every subsequent change until the debt is repaid. Like financial debt, it is not inherently bad, and the important distinction is between debt taken deliberately for a reason and debt accumulated through neglect.
The metaphor's value lies in making the trade-off discussable with people who do not write code. Framing a refactoring request as debt repayment communicates something a request to rewrite a module does not, namely that the cost is already being paid, in slower delivery and higher defect rates, and that the question is whether to keep paying it. Cunningham's original formulation also emphasized that debt arises from a growing gap between the code's structure and the team's current understanding of the problem, which is a broader idea than simply writing sloppy code under deadline.
Several distinct things get grouped under the term, and they need different responses. Deliberate debt, taken knowingly to meet a real deadline with a plan to address it, is a legitimate engineering decision. Accidental debt, arising because the team's understanding improved after the design was set, is unavoidable and is the normal cost of learning. Neglect debt, from absent tests, undocumented behavior, and unmaintained dependencies, accumulates silently and is the most expensive category because it makes every change riskier. Outdated dependencies in particular carry security exposure rather than merely inconvenience.
The symptoms are visible in delivery metrics before they are visible in code. Estimates growing for similar work, an increasing share of capacity spent on defects, reluctance to touch particular areas, and changes in one place breaking unrelated things are all indications that the interest payment has become substantial. Teams frequently report these symptoms as capacity problems and request more people, which usually makes the situation worse in the short term.
Managing it requires the work to be visible in the same planning process as everything else. Debt held on a separate list that is addressed only when there is spare capacity is never addressed, because there is never spare capacity. Allocating a fixed proportion of each cycle to it, or attaching remediation to feature work in the areas being changed, are the two approaches that survive contact with commercial pressure. The alternative, periodic large rewrites, is usually a symptom of having deferred the work too long, and carries far more risk than incremental improvement.
Communicating the case for remediation works better in delivery terms than in engineering ones. Stating that a particular area now takes three times longer to change than comparable areas, with evidence from recent work, connects the problem to something non-technical stakeholders already care about, whereas describing architectural concerns does not. Where the debt carries risk rather than cost, as with unmaintained dependencies or absent test coverage on critical paths, framing it as exposure with a probability and an impact is more effective than framing it as quality. In both cases, quantifying the ongoing cost is what converts an engineering preference into a business case that can compete with feature work for capacity.
Not all debt should be repaid. Code that works, changes rarely, and causes no problems can remain as it is regardless of how it looks, and effort spent improving it produces no return. The economically sound approach concentrates remediation where change is frequent and where the interest is therefore actually being paid. Making that trade-off visible, and reserving explicit capacity for it in planning, is a normal part of how a product development engagement is structured, and it belongs in the roadmap discussion within a product studio rather than being treated as an engineering matter outside the product conversation.