Every team I've ever worked with has a pile of technical debt, and every team describes it the same way: like it's one thing. One big gray blob labeled "the stuff we should have done better."
It's not one thing. Technical debt has interest rates, and the rates are wildly different depending on what you borrowed against.
Some debt is a mortgage. You took it on deliberately, you know the monthly payment, and it's attached to an asset that's appreciating. The quick-and-dirty integration you shipped to land the enterprise customer? Mortgage. You'll pay it down on a schedule, and it bought you something real.
Some debt is a car loan. Depreciating, annoying, but manageable. The hand-rolled deployment script that only one person understands. It costs you a little every month in toil and anxiety, but it doesn't threaten the business.
And some debt is a payday loan. It compounds while you sleep, and by the time you notice the rate, you're working for the debt instead of the other way around. The authentication library pinned three major versions behind because upgrading it breaks everything. The database schema that makes every new feature take twice as long. The shared service with no owner that five teams depend on.
Here's the thing about payday-loan debt: the interest doesn't show up as a line item. It shows up as velocity decay. Features that used to take a week now take a month, and nobody can point to why. Engineers start padding estimates. The good ones leave, because they can feel the building rotting around them even if management can't see it.
So how do you tell which kind you're holding? I've got three questions I ask.
First: does this debt slow down *every* future change, or just some? A messy module that one team touches twice a year is a car loan. A tangled core that every feature has to route through is a payday loan. Compound interest applies to the critical path.
Second: does the debt block security work? This is the one that keeps me up at night. If you can't patch a vulnerability in under a week because the upgrade path is broken, your interest rate just became a breach waiting to happen. Debt that degrades your security posture isn't technical debt anymore. It's unpriced risk, and the market always collects.
Third: who owns paying it down, and when? Debt with an owner and a date is a mortgage. Debt with no owner and no date is a payday loan, full stop. "We'll fix it when we have time" is how you say "never" with extra syllables.
The uncomfortable truth is that most organizations are excellent at taking on debt and terrible at pricing it. Leadership sees the feature ship; they don't see the 40% tax on every subsequent sprint. And engineers, bless us, are complicit — we warn about the debt in the abstract and then quietly work around it instead of putting a number on it.
So put a number on it. Not a story-points-are-made-up number. A real one: this module costs us roughly two engineer-weeks per quarter in workarounds. This upgrade path means a critical patch takes nine days instead of one. Translate the debt into time and risk, because that's the language budgets understand.
And then refinance the payday loans first. Not all of them — you can't pay down everything, and trying will just stall the roadmap. But find the one piece of debt that taxes every future decision and kill it. The relief is immediate. Teams can feel the difference within a sprint, and suddenly the next piece of debt looks payable too.
Debt isn't the enemy. Unpriced debt is.
The interest is always compounding. The only question is whether you're the one collecting.