Tech debt is a loan at a floating rate
It never shows up on an invoice. It shows up in how long the next thing takes.
- Tech debt
- 62%
- Ship speed
- −31%
- Bugs / week
- 7
- Refactor
- 3 days
Why it is a loan and not a mess
“Messy code” is an aesthetic complaint and founders are right to ignore it. Debt is different, and the metaphor is exact: you took something now — a shipped feature, a closed deal, a demo that worked — and you agreed to pay more later. There is a principal, there is interest, and the rate is not fixed.
The rate floats with two things: how many people touch the code, and how far the product has moved from what the shortcut assumed. A hack written for one customer costs almost nothing while there is one customer. At forty customers, in a codebase with four engineers, the same hack is charging you every week.
The interest is paid in weeks, by everyone
You never get an invoice. What you get is a feature that was estimated at three days taking eight, and nobody being able to say exactly why. That is what interest looks like from the inside: the estimate is not wrong because the engineer was optimistic. It is wrong because the work now includes an unpriced detour through something that was left half-built in March.
Two other places it surfaces. Bugs, because every shortcut is a special case somebody will forget. And onboarding, because a new engineer’s ramp time is a direct measurement of how much of your system exists only in someone’s head.
Not all debt is bad debt
Deliberate debt is cheap financing. You do not know whether anyone wants the feature, so you build the ugly version, ship it in four days instead of three weeks, and find out. If nobody wants it, you delete it and the debt goes with it — that shortcut was the cheapest research you will ever run.
Accidental debt is the expensive kind: nobody chose it, nobody wrote it down, and it compounds silently. And the worst case is deliberate debt that outlived its purpose — the throwaway prototype that shipped, got customers, and is now load-bearing. That is a payday loan you forgot you signed.
The practical difference is one sentence in a ticket. Debt you name is debt you can pay. Debt you do not name becomes the architecture.
The signal that it is time to pay
Not ugliness. Not a developer saying they hate the codebase — that is a permanent condition of the profession. The signal is the second time an estimate doubles for the same underlying reason. Once is bad luck. Twice is a rate, and rates compound.
When it happens, do not schedule a rewrite. Rewrites are how a three-day problem becomes a two-quarter problem, and the new system inherits the old system’s debt anyway, minus the parts you forgot it handled. Pay down the specific thing that made both estimates double, ship something on top of it the same week to prove it worked, and go back to building.
“Your last three features each took twice as long as the one before. That is not a people problem. That is interest.”
Tech debt in Axon is a percentage that quietly taxes everything you ship. Nothing announces it: features simply cost more Focus than they used to, and bugs start eating the week. Refactoring buys the percentage back — and costs you the days you wanted to spend on growth.