Your tech debt list is overwhelming. Everything feels urgent. Engineers want to fix it all. Product wants to ship features. Nobody has a framework for deciding what actually matters.
List All Known Debt
Get it out of engineers' heads and into a shared list. Old TODOs. Known fragile areas. Things that slow you down. Be comprehensive.
Score Each Item: Impact × Frequency
Impact: How bad is it when this bites us? (1-5). Frequency: How often does it bite us? (1-5). Multiply for a rough priority score.
Sort Into Three Buckets
Use the scores to sort, but don't be mechanical. Apply judgment.
Fix
High impact, high frequency. Actively hurting you. Schedule these. They're real work.
Ignore
Low impact, low frequency. Ugly but harmless. Stop feeling guilty. Move on.
Kill
Debt attached to code nobody uses. Delete the code. The debt disappears with it.
Schedule The Fixes
Fix items go into the roadmap. Allocate a percentage of each sprint, or batch them into a "debt sprint." Make it real or it won't happen.
Delete The Kills
This is the fun part. Find the dead code. Delete it. The best way to fix debt is to make it cease to exist.
Archive The Ignores
Move them to a "known debt" doc. You're not fixing them. You're not forgetting them. You're consciously choosing not to care.
A prioritized debt backlog. Permission to ignore the unimportant stuff. Less code (from the kills). And a clear plan for the debt that actually matters.
This works for contained codebases. When debt is entangled with architecture, when fixing one thing breaks another, when you need to modernize while shipping: that's a different conversation.
