On this page
What Is Technical Debt?
Technical debt is the future cost of shortcuts taken today — and AI-generated code creates it faster than ever. Learn to recognize and manage it.
Quick answer
- Technical debt is the future cost of a shortcut taken today: code that works but is hard to change safely.
- It’s like financial debt — a loan against future velocity, with interest paid as slower, riskier changes.
- Not all debt is bad; the problem is debt you don’t know you have.
What is technical debt?
Technical debt, a metaphor coined by Ward Cunningham, is the implied cost of future rework caused by choosing an easy solution now instead of a better one that would take longer. It’s not “bad code” in the moral sense — it’s a trade-off: ship today, pay the interest later in slower development, more bugs, and harder changes. Like financial debt, it’s sometimes a good decision and sometimes a slow-motion problem.
Why AI accelerates it
AI-generated code creates debt unusually fast because it’s optimized for “it works” rather than “it’s easy to change later.” Duplicated logic, no tests, inconsistent patterns, and shortcuts compound across every prompt — and unlike debt a human chose deliberately, the assistant’s shortcuts may not even be visible to you. The debt is created quickly and invisibly, then discovered only when it’s time to change something.
How to manage it
Technical debt is managed, not eliminated. Make it visible: name the shortcuts, keep a list, and review them. Prioritize by interest rate — debt in code you change every week costs far more than debt in code nobody touches. Pay it down opportunistically during normal work, and avoid new debt in the areas that matter (the ones you’ll change most).
Where this bites vibecoders
The vibecoder’s debt trap is compounding: fast generation produces code you can’t reason about, which makes every subsequent change slower and riskier — and the assistant can’t fix the debt because it can’t see the intent. The countermeasure is the same habits that keep debt low for humans: tests, boundaries, and actually reading the high-traffic parts of the code you’re about to change.
Where AI coding assistants get this wrong
- Producing duplicated logic instead of a shared abstraction.
- Shipping no tests, so any change risks regressions you can’t detect.
- Patching symptoms repeatedly instead of the underlying cause.
- Optimizing for the shortest diff rather than the clearest structure.
Checklist
- Keep a visible list of known shortcuts and their cost.
- Prioritize debt by how often the code changes.
- Pay down debt during normal work, not in a “big rewrite.”
- Add tests before refactoring debt-heavy code.
- Read the parts you’re changing; don’t build on unseen debt.
FAQ
Is all technical debt bad?
No. Deliberate debt to ship faster is a legitimate trade — the key is that it’s chosen and tracked. Accidental debt (shortcuts nobody noticed) is the dangerous kind, because you can’t plan around what you don’t see.
What is the difference between debt and a bug?
A bug is incorrect behavior; debt is correct behavior with hidden future cost. They interact — debt makes bugs likelier and fixes slower — but they’re distinct concepts that need different handling.
How do I pay down technical debt?
Targeted refactoring of the code you change most, with tests in place first. Avoid the “big rewrite” — it’s expensive, risky, and usually recreates the debt. Steady, prioritized paydown beats heroic cleanup.