Technical debt is the gap between how the code is and how it should be, taken on (deliberately or not) to move faster. Some debt is fine; the job is to manage it, not eliminate it. The key is prioritizing the debt that actually hurts.
Prioritize by impact, not annoyance
For each piece of debt, ask:
- How often does it slow us down or cause bugs? (frequency)
- How bad is it when it bites? (severity)
- How risky/expensive is it to fix? (cost)
High frequency + high severity + low cost → fix now
Low frequency + low severity → leave it, document it
A concrete example
A fragile module that breaks on every release and blocks the team weekly is worth fixing. An ugly-but-stable utility that nobody touches is , even if it offends you. Refactoring it is vanity, not value.
