KPI Tree

Metric Definition

Debt growth over time

Technical Debt Accumulation = New Debt Added (period) - Debt Remediated (period)
New Debt AddedEstimated remediation effort created this period, in hours
Debt RemediatedEstimated remediation effort cleared this period, in hours

Track from

Metric GlossaryOperations Metrics

Technical debt accumulation

Technical debt accumulation is the net amount of remediation effort a codebase adds over a period, measured as new debt created minus debt paid down. It tells you whether your codebase is getting healthier or quietly decaying. When accumulation is positive and rising, future delivery slows and defect rates climb.

8 min read

Generate AI summary

What is technical debt accumulation?

Technical debt accumulation is the net amount of remediation effort a codebase adds over a period of time, calculated as new debt created minus debt paid down. If a quarter introduces 400 hours of estimated remediation work through shortcuts, skipped tests, and ageing dependencies, and the team clears 250 hours of older debt, accumulation for that quarter is 150 hours. The codebase ended the quarter deeper in debt than it started.

The distinction that matters is flow, not stock. Total technical debt tells you how deep the hole is. Accumulation tells you whether you are still digging. A team can carry a large debt balance and be perfectly healthy if it is steadily paying down more than it adds. A team with a small balance can be in trouble if every sprint adds more than it removes, because the trend compounds.

Accumulation matters because it is a leading indicator of delivery speed. Debt added today shows up months later as slower feature work, more regressions, and longer onboarding for new engineers. Tracking the flow lets you intervene before the stock becomes unmanageable, rather than discovering the problem when a simple change takes three times as long as it should.

Accumulation is a net figure, so always track new debt and remediated debt as separate inputs. A net of zero can hide a team adding 500 hours and clearing 500 hours, which is very different from a team adding 50 and clearing 50. The two numbers tell you about pace and discipline independently.

How to calculate technical debt accumulation

Accumulation is the difference between debt added and debt remediated over a fixed period, usually a sprint, month, or quarter. The hard part is not the arithmetic, it is estimating the two inputs consistently. Pick a unit, normally remediation hours, and apply the same estimation method every period so the trend stays comparable.

  1. 1

    New debt added

    Sum the estimated remediation effort for every shortcut, untested change, deferred refactor, and newly flagged code-quality issue created this period. Pull candidates from static analysis tools, code review comments tagged as debt, and tickets explicitly logged as deferred work.

  2. 2

    Debt remediated

    Sum the estimated effort of every debt item resolved this period, whether through refactoring, deleting dead code, raising test coverage, or upgrading dependencies. Only count work that genuinely reduced existing debt, not new feature work.

  3. 3

    Estimation method

    Decide how each item gets sized, for example a fixed banding of one, four, or sixteen hours by severity. Consistency between periods matters far more than precision, because the metric is read as a trend.

  4. 4

    Period boundary

    Fix the window so that added and remediated debt are counted over the same dates. Mixing a monthly add against a quarterly remediation total produces a meaningless net.

Once you have the two inputs, accumulation is simply New Debt Added minus Debt Remediated. A positive number means the codebase is getting heavier. A negative number means the team is paying down faster than it borrows. Plotting accumulation period over period reveals the trajectory, which is far more actionable than any single snapshot. The related technical debt ratio view, expressed as remediation cost over development cost, complements this flow figure by sizing the standing balance against the effort it takes to build features.

Technical debt accumulation in a metric tree

A metric tree decomposes accumulation into the two flows that create it, debt added and debt remediated, and then traces each flow back to the engineering practices that drive it. This turns a vague worry about codebase health into a set of specific levers that named teams can own.

The added branch breaks down into the sources of new debt: shortcuts taken under deadline pressure, gaps in test coverage, and ageing libraries that drift further out of support each month. The remediated branch breaks down into how debt gets cleared: dedicated refactoring time, coverage added alongside features, and a steady cadence of dependency upgrades. Reading the two sides together tells you whether accumulation is rising because the team is borrowing more or paying down less.

This structure is what makes accumulation diagnosable rather than just observable. If the number is climbing, the tree shows whether the cause is deadline-driven shortcuts in one squad, a stalled upgrade backlog, or refactoring time being squeezed out by feature commitments. Each cause sits with a different owner and calls for a different intervention.

Metric tree insight

Dependency ageing is the branch most teams ignore and the cheapest to control. Debt accrues silently here even in periods with no shortcuts, because libraries fall behind on their own. A steady upgrade cadence keeps this branch flat with almost no impact on feature delivery.

Technical debt accumulation benchmarks

There is no universal hours figure for healthy accumulation, because it scales with team size and codebase volume. The useful benchmark is the direction and the proportion of capacity spent paying debt down. Read accumulation relative to the effort the team puts into remediation, not as an absolute.

TrajectoryNet accumulation per quarterWhat it signals
HealthyZero or slightly negativeThe team clears as much debt as it creates, or a little more. Roughly 10 to 20 percent of engineering capacity goes to remediation and the standing balance is flat or shrinking.
WatchMildly positive and stableDebt is growing slowly but predictably. Often acceptable during a deliberate growth push, provided there is a credible plan to pay it back later.
At riskPositive and rising quarter over quarterRemediation is being squeezed out by feature work. Delivery speed has usually started to slip and defect rates are creeping up, even if the team has not named the cause yet.
CriticalSharply positive with near-zero remediationThe team is borrowing heavily and paying back almost nothing. Onboarding is slow, simple changes are risky, and the codebase is approaching the point where a rewrite gets discussed.

A practical rule is that sustained positive accumulation across three or more quarters always warrants action, regardless of the absolute number. The compounding is what does the damage. A team adding a modest net surplus every quarter will eventually spend the majority of its time working around its own past decisions.

How to improve technical debt accumulation

Bringing accumulation back to zero or below means working both sides of the equation: slowing the debt you add and raising the debt you clear. Cutting new debt is usually faster and cheaper than out-running it with remediation, so start there.

Slow new debt at the source

Set a definition of done that includes tests and a quality gate in code review, so shortcuts get logged as explicit decisions rather than slipping in silently. Most avoidable debt is added under deadline pressure, so make the trade-off visible at the moment it is taken.

Ring-fence remediation capacity

Reserve a fixed share of each sprint, commonly 15 to 20 percent, for paying down debt. A protected allocation survives roadmap pressure far better than a vague intention to refactor when there is time, which there never is.

Keep dependencies current

Automate dependency upgrades so libraries never drift more than one major version behind support. This holds the ageing branch of the tree flat and prevents the large, risky catch-up upgrades that accumulate when this work is deferred.

Pay down the highest-traffic debt first

Prioritise remediation in the files that change most often, because that is where debt costs the most in slowed delivery. Refactoring code nobody touches feels productive but moves the metric without improving how the team actually works.

The metric tree approach to controlling accumulation starts by finding which branch is moving the number. If the added side is climbing, the fix is a tighter quality gate, owned by engineering leads. If the remediated side has collapsed, the fix is protecting refactoring time, owned by whoever sets the sprint commitment.

KPI Tree lets you model this by connecting each branch of the accumulation tree to the team and the practice that influences it. Engineering leads own the quality gate that limits new debt. Platform owns the dependency upgrade cadence. Delivery leads own the protected remediation allocation. With RACI ownership on every node, accountability for a rising number lands with a specific person rather than being shared by everyone and therefore no one. When accumulation moves, the accountable owner is the one who sees it first and can act before the trend compounds.

Common mistakes when tracking technical debt accumulation

  1. 1

    Tracking the balance instead of the flow

    Reporting total debt without the period-over-period change hides whether things are improving or decaying. A large balance that is shrinking is healthier than a small balance that is growing. Always track the net flow alongside the stock.

  2. 2

    Changing the estimation method mid-trend

    If you re-size debt items differently from one quarter to the next, the trend becomes unreadable. Lock the banding and apply it consistently, because comparability over time is the whole point of the metric.

  3. 3

    Counting feature work as remediation

    Building a new module is not paying down debt, even if the new code is cleaner than the old. Only count effort that genuinely reduced existing debt, or remediation will look artificially high.

  4. 4

    Ignoring dependency debt

    Many teams only log debt they create by hand and miss the debt that accrues automatically as libraries age. This branch grows even in quiet periods and is a common reason a team is surprised by a rising number.

  5. 5

    Treating zero accumulation as the only goal

    A deliberate, time-boxed period of positive accumulation can be the right call during a growth push. The mistake is positive accumulation with no plan to pay it back, which is how a temporary trade-off becomes permanent decay.

Related metrics

Cycle time

Process speed

Operations Metrics
Jira

Metric Definition

Cycle Time = Process End Time − Process Start Time

Cycle time measures the total elapsed time from the start to the end of a process. It is a fundamental operations metric used in manufacturing, software development, service delivery, and any context where the speed of a process directly affects throughput, cost, and customer satisfaction.

View metric

Deployment frequency

DORA metric

Operations Metrics
GitHub

Metric Definition

Deployment Frequency = Number of Production Deployments / Time Period

Deployment frequency measures how often an organisation successfully releases code to production. It is one of the four DORA (DevOps Research and Assessment) metrics that predict software delivery performance and organisational outcomes. Teams that deploy more frequently deliver value to users faster, reduce the risk of each individual release, and create tighter feedback loops between development and production.

View metric

Sprint velocity

Agile planning metric

Operations Metrics
Jira

Metric Definition

Sprint Velocity = Sum of Story Points Completed in a Sprint

Sprint velocity measures the amount of work a team completes during a sprint, typically expressed in story points, ideal days, or another unit of estimation. It is a planning tool that helps agile teams forecast how much work they can commit to in future sprints based on their historical completion rate. Velocity is one of the most widely used and most frequently misunderstood metrics in agile software development.

View metric

Escalation rate

Customer Support Metrics
Pylon

Metric Definition

Escalation Rate = (Escalated Tickets / Total Tickets Handled) x 100

Escalation rate measures the percentage of support tickets that are transferred from one tier or team to a higher tier or specialist group for resolution. It reflects the gap between the issues customers raise and the ability of frontline agents to resolve them, making it a key indicator of agent readiness, process maturity, and product complexity.

View metric

Why did my metric change?

Metric Definition

When technical debt accumulation accelerates, this diagnostic framework helps you isolate which underlying drivers pushed the debt growth higher.

View metric

Metric trees for engineering teams

Metric Definition

See how engineering teams place technical debt accumulation alongside delivery and quality measures inside a connected metric tree.

View metric

Decompose technical debt accumulation and stop the drift

Build a technical debt accumulation metric tree that connects new debt and remediated debt to the engineering practices and owners that drive each one.

Experience That Matters

Built by a team that's been in your shoes

Our team brings deep experience from leading Data, Growth and People teams at some of the fastest growing scaleups in Europe through to IPO and beyond. We've faced the same challenges you're facing now.

Checkout.com
Planet
UK Government
Travelex
BT
Sainsbury's
Goldman Sachs
Dojo
Redpin
Farfetch
Just Eat for Business