← All Resources / Tech Debt vs Features
Free Canvas · Decision Framework

Tech Debt
vs Features.

A canvas for the recurring fight. Decision rules, target ratios, negotiation script. End the planning-meeting deadlock.

PM: ______
Quarter: ______
Date: ______

The Framing Problem

The fight stalls because the question is wrong. “Should we do tech debt or features?” is binary; reality is portfolio. Debt isn’t a single bucket — some debt compounds, some is dormant, some is fictional engineering preference. Features aren’t a single bucket — some unlock revenue, some are vanity. Stop arguing in the abstract. Score each item on impact and decay rate, allocate capacity by ratio, and the meeting is over in 30 minutes.

The 4-Quadrant Decision Matrix

Every debt item lands in one quadrant. The action is determined by the quadrant, not by who’s loudest.

High impact / High decay
Fix Now
Compounding pain on a hot path. Every week makes it harder.
Ex: flaky deploy pipeline blocking 3+ engineers a week.
High impact / Low decay
Schedule
Real cost, but stable. Plan a debt-week or a refactor project this quarter.
Ex: monolithic billing module — painful but not getting worse weekly.
Low impact / High decay
Cap & Watch
Will hurt later, doesn’t hurt now. Add a tripwire metric and revisit when it’s breached.
Ex: legacy library on EOL track, current usage stable.
Low impact / Low decay
Ignore
Engineer preference. Document, don’t fund. Most rewrite asks live here.
Ex: “we should rewrite this in Rust.”

Debt Cost Over Time

Hand-waving (“this slows us down”) loses the meeting. Math wins it. A debt item that adds X% friction to a daily task costs N hours/year per engineer. Pick the row that matches your worst friction point and put a real number on the table.

Friction addedPer dayPer engineer / yr (250d)Team of 8 (annual hrs)
5% on a 1-hour task3 min12.5 hrs100 hrs
10% on a 2-hour task12 min50 hrs400 hrs
15% on a 3-hour task27 min112 hrs896 hrs
25% on a 4-hour task60 min250 hrs2,000 hrs

Convert hours to dollars at fully-loaded engineering cost. The middle row alone, at $80/hr loaded cost on an 8-person team, is $71,680 of friction per year.

Target Ratios

The 70/20/10 model is the default. 70% feature work, 20% targeted debt reduction, 10% exploration / spike / instrumentation. Most teams under-allocate the 20%; a few over-allocate when an engineer becomes the loudest voice.

70% Features
20% Debt
10% Explore
  • Flex up to 60/30/10 when 2+ items are in “Fix Now” or after a major incident.
  • Flex down to 80/15/5 for 1 quarter only when there’s a board-committed launch. Never two quarters in a row — that’s how you become a debt bankruptcy story.
  • Reset to 70/20/10 at the start of every quarter unless the canvas justifies otherwise.

The Capacity Ladder

Not every debt item gets the same vehicle. Use the lowest rung that fits.

RungUse whenTrigger to escalate
Fix next sprintDiscrete, < 3 days, single engineerItem recurs across 2 sprints unfixed
Roadmap item1–3 weeks, single teamEffort estimate doubles or pulls in a 2nd team
Debt-weekWhole team, 1 sprint, multiple itemsQuarterly debt backlog > 3 weeks of work
Refactor projectCross-team, 4–12 weeks, named initiativeHits the rewrite criteria below

The “Should We Rewrite?” Decision

All five must be true. If any one is false, refactor instead. Most rewrite asks fail this test — that’s the point.

  • 1. The current system has a documented architectural ceiling (scale, security, compliance) that refactoring cannot lift.
  • 2. You can run old and new in parallel through a shared interface for 90+ days without a hard cutover.
  • 3. The team that will own the rewrite has shipped a comparable greenfield system in the last 24 months.
  • 4. Feature freeze on the legacy system is acceptable to the business for the rewrite duration plus 30%.
  • 5. There’s a written kill criterion: at what milestone do we abandon the rewrite and double down on refactor?

Negotiation Script for the Planning Meeting

Before we debate items, let’s frame the quarter: 70/20/10 means we have [X] feature-weeks, [Y] debt-weeks, [Z] explore-weeks. I’ve mapped each candidate to a quadrant on this canvas. Let’s walk through the “Fix Now” quadrant first — those come out of the 20%. Anything left over rolls into the 70%. Disagreements go on the canvas, not in the air.

When someone says “but customers are screaming”: “Customer screams move features up the 70%. They don’t consume the 20%. The 20% is what keeps us shipping the 70% next quarter. Cutting debt allocation to handle a single customer escalation is how teams end up at 0% feature velocity in Q4.”

Tracking Debt Without a Separate Tool

You don’t need a debt tracker. You need three tags in the existing tracker (Jira, Linear, GitHub) and a 15-minute monthly cadence.

  • Tag 1: debt:hot — Fix Now quadrant. Goes into the 20% allocation immediately.
  • Tag 2: debt:scheduled — Schedule quadrant. Has a target quarter set.
  • Tag 3: debt:watching — Cap & Watch quadrant. Has a tripwire metric in the description.

Monthly: 15-minute review with the tech lead. Move items between tags. Promote any watching item whose tripwire fired. Don’t add new tools to manage this.

Example Fillable Canvas

Debt itemDecayCustomer impactCost nowCost Q4Decision
CI pipeline flakeHighIndirect (ship velocity)2 wks5 wksFix Now
Billing module monolithLowSlow new pricing changes6 wks7 wksSchedule Q3
Legacy auth library (EOL)HighFuture security risk3 wks8 wksCap & watch (tripwire: CVE published)
“Rewrite frontend in X”LowNone measurable12 wks12 wksIgnore (fails rewrite test)
__________________________________________________
Get the template + a weekly tip

One short product-intelligence tip per week. Unsubscribe anytime.