Contents

Technical debt is the accumulated shortcuts and outdated decisions in code that make every new change cost more than it should. Explain it to the business not as "bad code" but in money and time: hours lost to workarounds, releases breaking what worked, risks from outdated dependencies. Manage it steadily — with a set share of time and priorities, not a one-off big rewrite.

Here is where debt comes from, how to measure it and how to agree with the business on paying it down.

Where does technical debt come from?

Technical debt comes from deliberate trade-offs made for speed and from code ageing unnoticed: the product changes while the architecture and dependencies stay the same. Debt itself is a normal tool: shipping an MVP with shortcuts is often right. The problem starts when the debt is never repaid.

Typical sources:

  • shortcuts taken for a deadline that were promised to be "fixed later";
  • requirements changed and code was patched to fit;
  • the framework and libraries were not updated for years;
  • there are no tests, so every change needs lengthy manual checking;
  • knowledge of the system left with the people who built it.

How do you know debt has become a problem?

Debt has become a problem when it noticeably hurts speed and reliability: simple tasks take days, old bugs return after releases and developers are afraid to touch certain modules. These signs show up in team metrics, not just feelings.

Sign How to measure What it means for the business
Tasks take longer Time from start to deploy is rising Features ship slower and cost more
Releases break working features Bugs after release Customers run into problems
Outdated dependencies Version lag, known vulnerabilities Risk of breaches and forced emergency upgrades
"Dangerous" modules Tasks there are estimated with big buffers Part of the product is effectively frozen
Slow onboarding Time until a newcomer's first independent task Growing the team is expensive

For an objective picture, an outside view helps — we described how a technical audit works separately.

A pen beside sticky notes Photo: Unsplash

How do you explain technical debt to the business?

Explain technical debt in terms of money, time and risk: not "the code is bad" but "features in this module cost us twice as much", "our framework version stops getting security fixes at year end", "every third release needs an urgent fix". The loan analogy works well: the interest is the time the team pays on every task.

How to frame a proposal

  1. Describe the problem through its impact: time, bugs, risks.
  2. Show data: metrics from recent months and example tasks.
  3. Propose specific work with an estimate and expected effect.
  4. Offer a staged plan that does not stop product development.
Tech debt proposal
Problem: the orders module has no tests; every change needs 2–3 days of manual regression
Data: 5 of 12 releases last quarter needed urgent fixes
Work: tests for key flows and refactoring price calculation, ~3 weeks
Effect: regression in hours instead of days, fewer post-release bugs
Plan: 20% of team time over two months

How do you manage technical debt continuously?

Manage debt continuously: reserve a fixed share of team time, keep a debt list next to the product backlog and pay it down together with product work in the same modules. Big "rewrite projects" usually lose to steady incremental work.

Practices that work:

  • a fixed share of time for technical work — for example, a fifth of each iteration;
  • the boy scout rule: leave any code you touch a little better than you found it;
  • technical debt in the same backlog with the same prioritisation — see backlog prioritisation;
  • regular dependency updates in small steps;
  • automated tests before refactoring so changes are safe.

When is it better not to pay debt down?

It is better not to pay down debt in code that will soon be deleted, in modules that rarely change and run stably, and in prototypes testing a hypothesis. Pay it down where it genuinely gets in the way: in frequently changed and critical parts of the product.

Where paying down pays off fastest:

  • modules that change every iteration;
  • payments, authentication and calculations — where mistakes are expensive;
  • outdated dependencies with known vulnerabilities;
  • areas that slow new developers' onboarding.

In short

  • Technical debt is shortcuts and outdated decisions that make changes more expensive.
  • Debt is a normal tool for speed; the problem is never paying it back.
  • Explain debt to the business in money, time and risk, with data and a concrete proposal.
  • Pay it down steadily: a share of team time, a shared backlog, small steps and tests.
  • Start with frequently changed and critical modules; stable code can be left alone.

FAQ

  • Is it possible to have no technical debt at all?

    Practically no: products and technologies keep changing and some decisions inevitably age. The goal is not zero debt but debt under control that does not block product development.

  • How much team time should go to technical debt?

    Around a fifth of each iteration is a common allocation. If debt already slows development badly, raise the share temporarily and then return to the steady level.

  • When is rewriting better than paying down debt?

    Rarely: rewrites are expensive and risky. They are justified when the technology is no longer supported or the architecture fundamentally cannot meet new requirements — and even then, do it gradually.