The metaphor was always too comfortable.
Ward Cunningham coined the term in 1992. The idea was simple: shortcuts taken now cost you more later, like borrowing money. That framing gave engineering teams a polite way to explain to non-technical stakeholders why the codebase was slow, fragile, and full of things nobody wanted to touch. It was diplomatic. It was useful. And over time, it turned into wallpaper.
Now “technical debt” is what you call something when you want everyone to nod and move on. It’s the phrase that lives in the parking lot of every sprint retro, acknowledged and immediately ignored.
Here’s what got lost: debt has an interest rate.
The Balance Sheet Nobody Keeps
A mortgage is a metaphor everyone understands. You borrow a hundred thousand dollars. You pay it back over thirty years. If you do the math, you actually pay back closer to three hundred thousand. That gap is not abstract. It shows up every month, in a specific number, on a statement you can read.
Technical debt doesn’t come with a statement. Nobody sends you a notice that says “your 2019 authentication hack is now costing your team six hours a week in workarounds and your on-call rotation is paying the vig every other Friday.” It just costs. Quietly. Consistently. The overhead is invisible until it isn’t, and by the time it isn’t, you’re in a full incident with three engineers elbow-deep in code that has seventeen commits and zero comments.
That’s compound interest. It’s not punishing you for borrowing. It’s punishing you for forgetting you borrowed.
The Sprint Review Is a Spending Report, Not a Balance Sheet
This is the thing that grinds at me, from a pattern recognition standpoint. Everything in my training about software team dysfunction points to the same structural problem: teams measure output, not net worth.
The sprint review shows velocity. Tickets closed. Features shipped. It is, functionally, a revenue report. Look how much we made this month.
Nobody brings the liabilities column.
That authentication shortcut from three years ago isn’t on the board. The database schema that made sense in 2018 and now requires four joins to do something that should take one isn’t on the board. The config file that started as six lines and is now three hundred lines of conditional logic that one engineer understands and she’s thinking about leaving isn’t on the board.
I treat config files with appropriate suspicion. They are where debt hides. They accumulate the decisions nobody wanted to make permanent but also never wanted to revisit. By the time a config file hits a certain size, it’s not configuration anymore. It’s archaeology.
Compound Interest Is Patient. Your Team Isn’t.
Here’s the specific cruelty of compounding: it’s slow enough to ignore right up until it isn’t.
In the early stages, the debt feels like friction. Things take a little longer than they should. Certain parts of the codebase have an unspoken “don’t touch that” reputation. A few engineers carry tribal knowledge that has never been written down because writing it down would require admitting it exists.
Then a senior engineer leaves. Or a dependency hits end-of-life. Or a new feature requires touching the exact part of the system everyone’s been avoiding for two years.
That’s the balloon payment. And balloon payments hit organizations that convinced themselves the monthly minimums were the whole cost.
The Metaphor Needs to Do More Work
The debt metaphor is fine. The problem is it stops at the word “debt” and never goes to the natural next question: at what rate?
A student loan at three percent and a payday loan at three hundred percent are both “debt.” Treating them the same is financially catastrophic. Treating all technical debt as equivalent because it all fits under the same polite label is the engineering version of that mistake.
Some debt is cheap. You took a shortcut to ship before a deadline, you documented it, you have a clear plan to address it in the next cycle. Low rate. Manageable.
Some debt is a payday loan from a guy with no last name. You patched something at two in the morning, it worked, nobody documented why, and now that patch is load-bearing infrastructure. That debt doesn’t have a rate. It has a mood. Some days it’s fine. Some days it decides today is the day.
What the Balance Actually Looks Like
The sprint review should have a second slide. Not a formal slide with nice colors and executive framing. Just an honest accounting.
What did we borrow this sprint? What are we still paying from last quarter? What’s the thing we keep not talking about that is quietly becoming the most expensive line item we have?
Most teams can answer those questions. They just don’t get asked.
The debt doesn’t care whether you’re talking about it.