technical debt
expressionops cultureprogramming
The future cost of choosing a quick solution now over a better one later.
Ward Cunningham's metaphor: shortcuts borrow time today and charge interest tomorrow, in the extra effort every later change requires. A little can be a sensible trade; left unpaid, it compounds until the code resists all change.
Ward Cunningham coined technical debt to explain to non-technical stakeholders why shipping fast has a cost, and the metaphor is more precise than its popular use. His version is about deliberately shipping code that reflects an incomplete understanding, then paying interest until you refactor to match what you learned. Debt taken knowingly, for a reason, with a plan to repay.
The popular usage has drifted to mean any bad code, which loses the distinction that made it useful. Code that is bad because nobody knew better is not debt, it is a mistake. Debt is a decision: we understand the right shape, we are choosing the faster wrong shape now, and we accept that everything built on it costs more until we fix it. Cunningham himself pushed back on the sloppy reading.
The reason the distinction matters is that the two need different responses. Deliberate debt needs a repayment schedule and an owner. Accidental mess needs education and review. Calling both debt lets a team feel financially sophisticated about a codebase nobody understands, and the interest metaphor is honest about the mechanism: you do not pay it back in one payment, you pay it on every feature that touches the compromised area, forever, until you do.
Also known as: tech debt, technical-debt, tech-debt
Sources
- Ward Cunningham, 1992