Guide

Managing technical debt without stopping the roadmap

Treat technical debt as a cost line, not a moral failing: quantify what each item costs you per month in slowed delivery, incidents or risk, then pay down the expensive ones continuously. A steady 10–20% of capacity beats an annual cleanup sprint that never gets scheduled.

6 min read · Updated 2026-08-06

What is technical debt, really?

Technical debt is the ongoing interest you pay for a past decision that no longer fits — deliberate shortcuts, decisions overtaken by scale, or code that outlived its assumptions. Not all of it is worth repaying; debt in a part of the system nobody touches costs nothing.

How do you quantify technical debt?

Convert each item into a monthly cost: engineer-hours lost, incidents caused, or risk exposure. Once debt has a number attached, prioritising it stops being an argument between engineering and product.

Debt itemInterest paid monthlyRepay?
Flaky test suite~20 engineer-hours of reruns and mistrustYes, immediately
Manual deploy process~10 hours + release-day riskYes
Legacy admin tool nobody touches0No — leave it
Unversioned public APIBlocks every change customers can seeYes, before more customers
Duplicated onboarding logicTwo places to fix each bugWhen it next causes a bug

How much capacity should go to paying down debt?

Ten to twenty percent of engineering capacity, continuously, attached to the features that touch the same code. Debt paid down alongside feature work is cheap; debt paid down in a dedicated project competes with revenue and loses.

How do you explain technical debt to a CEO or board?

Speak in delivery speed and risk, never in code quality. 'This change costs us three extra weeks per quarter and caused two of our last four incidents' gets funded; 'the code is messy' does not.

  • Tie each item to a business consequence: slower launches, incidents, security exposure, or hiring difficulty.
  • Offer options with costs, not a single demand.
  • Show the trend after you fix something — earned credibility funds the next one.

When is a rewrite the right answer?

Rarely, and almost never all at once. Prefer strangling the old system: put a stable interface in front of it and replace it component by component while it keeps serving customers.

  1. Define the interface the rest of the system will depend on.
  2. Route traffic through it while the old implementation still serves.
  3. Replace one component at a time, behind feature flags.
  4. Delete the old path as soon as it is unused — an unremoved old path is new debt.

Frequently asked questions

Is technical debt always bad?
No. Deliberate, documented shortcuts that buy you speed to a validated product are good business. The problem is undocumented debt that nobody chose and nobody is tracking.
Should you schedule dedicated tech debt sprints?
Occasionally, for large, indivisible items. As a default policy they get cancelled the first time a customer commitment slips, which is why continuous allocation works better.
Who decides what technical debt gets paid down?
Engineering proposes with costs attached; the CTO or VP of Engineering prioritises alongside the roadmap. It should be a portfolio decision, not an individual engineer's side project.

From the podcast

Founders who lived this

Keep reading

Related guides