7.4 Technical Debt As Engineering Finance
Technical debt is not "old code I dislike." Technical debt is a technical choice that buys present speed, validation, or constraint relief while creating extra future cost.
Debt is not automatically wrong. The dangerous debt is invisible, has no interest estimate, has no payback plan, and slows the team every day.
Principal, Interest, And Risk
Technical debt can be analyzed like engineering finance:
- Principal: the cost saved by not doing the fuller solution then, or the cost to fix it now.
- Interest: the extra cost paid in future development, testing, delivery, and debugging.
- Risk: the chance that the debt causes incidents, security issues, scaling failure, or knowledge bottlenecks.
- Due date: pressure from regulation, dependency deprecation, business growth, or team expansion.
If an old module is stable, rarely changed, and not causing incidents, it may just be old. It may not be high-priority debt.
Rational Debt Must Be Recorded
Some debt is rational. A team may use manual operations to validate a market. It may ship a conservative implementation to meet a compliance deadline. It may accept small duplication to avoid premature abstraction.
Rational debt should make clear:
- Why are we borrowing now?
- What did we save?
- What is the interest?
- Which signal shows the debt is becoming dangerous?
- When will we repay it?
Pay Down A Portfolio
Technical debt paydown should not become "rewrite every old thing." A better approach is to maintain a portfolio and rank by interest, risk, cost, and business window.
Prioritize:
- High interest: slows development or release every day.
- High risk: may cause security, data, or stability incidents.
- Low effort with high return: small fix removes large noise.
- Future blocking: prevents important work if left unpaid.
- Near due date: dependency end-of-life, regulation date, traffic growth.
The goal is not zero debt. The goal is knowing what the team owes, why it owes it, when it will pay it back, and what interest it pays if it waits.