KPI Tree

Metric Definition

Debt growth as a percentage

Technical Debt Accumulation Rate = (New Debt Added - Debt Remediated) / Development Effort x 100
New Debt AddedEstimated remediation effort created this period, in hours
Debt RemediatedEstimated remediation effort cleared this period, in hours
Development EffortTotal engineering hours spent on delivery this period

Track from

Metric GlossaryOperations Metrics

Technical debt accumulation rate

Technical debt accumulation rate is the net debt a codebase adds in a period expressed as a percentage of the development effort spent in that period. It normalises debt growth against output so you can compare across teams and time. A rate above zero means debt is outpacing the work that creates it.

8 min read

Generate AI summary

What is technical debt accumulation rate?

Technical debt accumulation rate is the net debt a codebase adds in a period, expressed as a percentage of the development effort spent in that same period. If a team adds 400 hours of debt, clears 250 hours, and spent 3,000 hours on delivery, the net of 150 hours over 3,000 gives an accumulation rate of 5 percent. For every hour of work, the codebase got about three minutes deeper in debt.

The rate is the normalised cousin of raw accumulation. Net accumulation in hours tells you how much heavier the codebase got, but it scales with team size, so a 200-hour increase means something very different for a squad of three than for a department of fifty. Dividing by development effort strips out that scale and gives you a figure you can compare across teams, across quarters, and against a target.

The rate matters because it answers a sharper question than the raw number: is debt growing faster than the work that produces it? A growing team can post a rising hours figure while its accumulation rate falls, which is healthy. A shrinking team can post a falling hours figure while its rate climbs, which is not. The percentage is what keeps the trend honest as the organisation changes shape.

The accumulation rate is only meaningful if the development effort denominator covers the same work that produced the debt. Count delivery hours, and keep the estimation method for debt consistent between periods. A rate that drifts because the inputs were measured differently tells you nothing about the codebase.

How to calculate technical debt accumulation rate

The rate divides net debt added by the development effort spent in the period, then multiplies by 100 to give a percentage. You need three inputs, all measured over the same window: new debt added, debt remediated, and total development effort. Consistency between periods matters more than absolute precision, because the rate is read as a trend against a target.

  1. 1

    New debt added

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

  2. 2

    Debt remediated

    Sum the estimated effort of every debt item genuinely resolved this period through refactoring, coverage, dead-code removal, or dependency upgrades. Exclude new feature work that merely happens to be clean.

  3. 3

    Development effort

    Total the engineering hours spent on delivery in the period. This is the denominator that normalises debt growth against output, so use the same definition of delivery hours every time.

  4. 4

    The calculation

    Subtract remediated from added to get net debt, divide by development effort, and multiply by 100. A positive percentage means debt grew relative to the work, a negative one means the team paid down faster than it borrowed.

Read the result against a target band rather than as a pass or fail. A rate near zero means debt is broadly holding steady relative to output. A persistently positive rate means each unit of delivery is leaving the codebase a little worse, which compounds into the slower cycle time and reduced deployment frequency that teams feel long before they name the cause. Plotting the rate period over period is what surfaces the trajectory.

Technical debt accumulation rate in a metric tree

A metric tree decomposes the accumulation rate into the three quantities that produce it, debt added, debt remediated, and development effort, and traces each back to the practices that move it. Because the rate is a ratio, the tree has to explain both the numerator and the denominator, since the percentage can shift even when raw debt holds steady.

The numerator splits into the familiar pair of added and remediated debt, each with its own drivers. The denominator, development effort, is the part teams forget to model. A falling rate can come from genuinely better practices, or simply from a busier delivery quarter that inflated the denominator. The tree keeps these apart so you do not mistake a temporary surge in output for a real improvement in discipline.

This structure makes the rate diagnosable. If it rises, the tree shows whether the cause is more debt added, less debt cleared, or a quieter delivery period shrinking the denominator. Each of those points to a different owner and a different response, and only the first two are actually about codebase health.

Metric tree insight

Watch the denominator before you celebrate a falling rate. A rate that drops only because development effort spiked, with no real change to debt added or cleared, will rebound the moment delivery slows. Sustainable improvement shows up in the added and remediated branches, not in a busy quarter.

Technical debt accumulation rate benchmarks

Because the rate is normalised, it travels better between teams than raw accumulation, but it still varies with codebase maturity and the deliberate trade-offs a team is making. Read it as a band and watch the direction across several periods rather than fixating on a single reading.

BandAccumulation rateWhat it signals
HealthyZero or negativeDebt is flat or shrinking relative to output. The team clears at least as much as it adds, and roughly 10 to 20 percent of effort goes to remediation.
AcceptableUp to about 5 percentDebt grows slowly relative to work. Often fine for a maturing product, provided the rate is stable and there is a credible plan to draw it back down.
ElevatedRoughly 5 to 15 percentDebt is clearly outpacing remediation. Delivery friction usually starts to show here, with changes taking longer and reviews catching more rework.
HighAbove about 15 percentMost delivery is making the codebase worse and almost nothing is being paid back. This rate is unsustainable and leads to the spiral where everything takes longer.

The strongest signal is not the level but the slope. A rate that climbs steadily across three quarters is a problem even if it is still inside an acceptable band, because the compounding will carry it out of that band soon enough. A high but falling rate, by contrast, is a team that has recognised the issue and is actively working it down.

How to improve technical debt accumulation rate

Lowering the rate means moving the same levers as raw accumulation, slowing debt added and raising debt cleared, but with one extra caution: do not chase the number by inflating the denominator. Real improvement comes from the numerator. Pushing more hours into delivery to dilute the rate just hides the problem.

Tighten the quality gate

Make tests and a code-review quality check part of the definition of done, so shortcuts become explicit, logged decisions. This is the most direct way to shrink the new-debt numerator without touching delivery output.

Protect remediation capacity

Ring-fence a fixed slice of each sprint for paying down debt. A protected allocation lifts the remediated term reliably, whereas an open-ended plan to refactor later rarely survives a busy roadmap.

Automate dependency upgrades

Keep libraries within one major version of support so debt does not accrue silently while the team focuses elsewhere. Automation here keeps the added branch low even in quarters with no other remediation.

Read the rate alongside the raw hours

Always pair the percentage with net accumulation in hours so a busy delivery quarter cannot mask a worsening codebase. If the rate falls but the hours rise, the improvement is an illusion created by the denominator.

The metric tree approach to lowering the rate starts by checking whether the numerator or the denominator is moving. If net debt is climbing, the work sits in the quality gate and the remediation allocation, owned by engineering leads. If the rate only moved because delivery hours swung, the right response may be to do nothing at all and wait for the denominator to settle.

KPI Tree lets you model this by connecting each branch of the rate tree to the team and the practice behind it. Engineering leads own the gate that limits new debt. Platform owns the upgrade cadence. Delivery leads own both the protected remediation time and the delivery-hours denominator. With RACI ownership on every node, a rising rate is investigated by the person accountable for the branch that actually moved, not debated in the abstract. When the rate shifts, that owner is pushed the change and can confirm whether it reflects real decay or just a swing in output.

Common mistakes when tracking technical debt accumulation rate

  1. 1

    Ignoring the denominator

    Treating the rate as if only debt moves it misses that development effort sits underneath. A change in delivery hours shifts the percentage on its own, so always read the numerator and denominator together.

  2. 2

    Inconsistent effort measurement

    If development hours are counted generously one quarter and tightly the next, the rate swings for reasons that have nothing to do with the codebase. Fix one definition of delivery effort and keep it.

  3. 3

    Comparing rates across very different codebases

    Normalisation helps, but a greenfield service and a legacy monolith still behave differently. Compare a team mostly against its own history rather than ranking unlike codebases on a single number.

  4. 4

    Optimising the rate by adding delivery

    Throwing more hours at features to dilute the percentage lowers the rate without improving anything. The codebase is no better, the number just looks calmer.

  5. 5

    Reading a single period in isolation

    One quarter is noisy. The rate is built to be read as a trend, so a single reading rarely justifies a major decision. Look at the slope across several periods before acting.

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

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

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

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

Metric trees for engineering teams

Metric Definition

See how technical debt accumulation rate fits alongside the other delivery and quality measures an engineering team owns in a metric tree.

View metric

Input metrics vs output metrics

Metric Definition

Understand whether debt growth is an input you can act on directly or an output of upstream delivery choices, so you target the right lever.

View metric

Normalise debt growth and keep the rate honest

Build a technical debt accumulation rate metric tree that connects new debt, remediated debt, and delivery effort to the owners who can move 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