Engineers treat technical debt like credit card debt — something shameful to avoid.
Wrong metaphor.
Technical debt is more like a business loan. Used strategically, it lets you move faster than competitors. Used blindly, it crushes you.
The difference isn’t whether you have debt. It’s whether you took it on intentionally.
Two Types of Debt
Strategic Debt:
- You know the shortcuts you’re taking
- You know what they cost
- You have a plan to pay them back
- You took them to win time
Sloppy Debt:
- You didn’t know you were taking shortcuts
- You don’t track the costs
- You have no repayment plan
- You’ll pay interest forever
Most teams have sloppy debt. They call it “tech debt” but it’s just mess. They didn’t choose it. It accumulated while they weren’t looking.
When I Take On Debt
Launch pressure: “We need users before we run out of runway. Skip the optimization.”
Learning phase: “We don’t know what users want yet. Don’t build the scalable version of the wrong thing.”
Competitive speed: “If we don’t ship this month, we’re dead. We can refactor in Q2.”
Experimentation: “This might not work. Don’t invest in perfection until we know it does.”
In each case, I’m borrowing time from the future to win in the present. And I’m keeping a ledger.
The Debt Ledger
When I take on strategic debt, I document:
- What: The specific shortcut
- Why: The business reason
- Cost: What slows down because of this
- Payback trigger: When we fix it
Example:
Debt: No caching layer
Why: Need to ship this week for launch
Cost: Page loads in 2s instead of 200ms
Payback: When we hit 1000 daily users
This keeps debt visible. Invisible debt becomes permanent. Visible debt gets paid.
When NOT to Take Debt
Core architecture: The foundation needs to be solid. Fixing foundations later is expensive.
Data integrity: Sloppy data practices compound. You can’t refactor your way out of corrupted data.
Security: This isn’t debt, it’s negligence. Never skip security for speed.
Team onboarding: Messy code slows new hires. The tax compounds with team size.
The Payback Plan
Strategic debt without a payback plan is just sloppy debt with extra steps.
My rules:
- Schedule it: Debt payback is work, put it on the roadmap
- Tie it to triggers: “When X happens, we fix Y”
- Interest payments: If I can’t pay back yet, I pay interest — small refactors to keep it from getting worse
- Bankruptcy: Sometimes you declare bankruptcy and rewrite. Do this once, not continuously.
The Real Cost
People think debt is about code quality. It’s not. It’s about optionality.
Debt-heavy systems are harder to change. They lock you into paths. The cost isn’t the mess — it’s the inability to pivot.
This is why strategic debt is tied to learning. You take debt to learn fast, then pay it back once you know where you’re going.
The Framework
-
Is this strategic or sloppy? If you can’t articulate the business reason, it’s sloppy. Fix it now.
-
What’s the payback trigger? If you don’t know when you’ll fix it, don’t take it.
-
Can we survive the interest? Some shortcuts create drag forever. Don’t take those.
-
Is the foundation solid? Debt on shaky ground collapses. Build the core right, cut corners at the edges.
The bottom line: Technical debt isn’t evil. It’s a tool. Like any tool, it works when you use it intentionally and hurts when you use it blindly.
The best engineers I know take on debt constantly. They also pay it back religiously.
Be intentional. Keep a ledger. Ship faster.