What Technical Debt Really Is
What Technical Debt Really Is
"Technical debt" is overused to the point of meaninglessness. Let's reclaim the concept.
The Original Metaphor
Ward Cunningham coined the term to describe a specific thing:
When you write code that works but isn't ideal, you've taken on "debt." Like financial debt, it has interest: the ongoing cost of working with suboptimal code.
This was meant to help business people understand why refactoring matters.
How the Term Got Corrupted
Today, "technical debt" is used for everything:
- Code I don't like
- Decisions I disagreed with
- Systems that are old
- Any work that's not new features
When everything is debt, the concept loses meaning.
What Debt Actually Means
For something to be debt, it must:
1. Have been a choice: Someone decided to take a shortcut. Accidental complexity isn't debtâit's just mess.
2. Have ongoing cost: There's interest. Working with this code is harder than it would be if we'd done it right.
3. Be repayable: There's a path to fixing it. If there's no fix, it's not debtâit's a sunk cost.
Types of Debt
It helps to distinguish:
Intentional debt: "We know this isn't ideal, but we're choosing it for speed/learning/survival."
Accidental debt: "We didn't know better at the time. Now we do."
Bit rot: "This was fine when we wrote it. The world changed."
Mess: "This is just bad code. No one chose it."
These require different responses.
Interest Rates
Not all debt is equal. Some debt:
- Is in code no one touches (low interest)
- Is in critical paths (high interest)
- Compounds with every change (increasing interest)
- Causes bugs and incidents (very high interest)
High-interest debt should be paid first.
The Bankruptcy Risk
Eventually, systems accumulate so much debt that paying it down isn't viable. At that point, you're not refactoringâyou're rewriting.
This is the equivalent of technical bankruptcy. It's expensive, risky, and often means starting from scratch.
Avoiding bankruptcy requires regular debt serviceâpaying down some debt as you go.
Key Takeaways
- â˘Technical debt should mean deliberate shortcuts with ongoing costs
- â˘The term has been corrupted to mean "any code I don't like"
- â˘Different types of debt require different responses
- â˘High-interest debt should be paid first; bankruptcy risk grows with neglect