Skip to content

The Cost of Complexity · Article 5 of 8

How to calculate technical debt in dollars

A 20-hour feature costs $3,200 alone and $18,560 when eight modules move. The annual figure is $614,400.

David Vartanian6 min read

The multiplier is 5.80x. Cost per feature is $18,560. The annual figure is $614,400. A 20-hour feature opens that gap once eight modules move. Eight modules at an interdependence of 0.5, plus 16 coordination hours, produce the multiplier. The gap above the planned hours is the debt.

Why it happens

Debt here is the multiplier on hours you already planned, priced at the loaded rate. The maintenance side of that bill is in The Build Is a Down Payment on a Liability Nobody Budgets For. The vacuum work is the 20 hours that were already on the plan. The module term is interdependence times connascence degree: a weight of 0.5 on 8 modules. The coordination term is 16 coordination hours divided by those 20 hours. The debt is the gap the multiplier opens between the planned hours and the feature after both terms.

The module term is what moves when the module count rises. Each added module adds the interdependence weight of 0.5. A diff that lists more than eight modules raises the degree, the module term grows, and the multiplier rises with it. The coordination term does not move with that count. It stays the ratio of 16 hours to 20 hours until one of those hour counts changes. Eight modules on a 20-hour feature are enough to take a planned estimate through both terms. The debt is that distance, on hours the plan already contained.

On a codebase the reader sees a feature that was estimated at 20 hours, in a clean module. The diff then names eight modules. The hours of review and alignment around the change are the 16 coordination hours. The feature that ships is the same feature after the multiplier. The gap between the planned hours and the multiplied feature is the debt on that one feature. The gap is the module term and the coordination term on work the team had already scheduled.

Across the year the same gap repeats. Features per year is 40. The annual figure is the per-feature gap, repeated. That is the debt for this set of inputs: eight modules, interdependence 0.5, 16 coordination hours, and 20 hours of vacuum effort. The multiplier is the bridge from the planned hours to the feature that actually ships. The maintenance bill in the linked essay is this gap, once per feature and then across the 40.

A reader pricing their own repository starts from the estimate they already trust, the vacuum effort. Here it is 20 hours. Then they count the modules the feature actually touches. Here the count is 8, and the weight on each is 0.5. Then they add the coordination hours around the change. Here that is 16. If the estimate stays at 20 hours and the diff grows past eight modules, only the module term has moved, and the debt grows with it. If the diff stays at eight modules and the meetings grow past 16 hours, only the coordination term has moved. The worked example is both, held still, so the gap has a single reading.

The 20 hours stay the baseline so the debt has a floor. They are the hours in a clean module. The eight modules and the 16 coordination hours are what the current codebase adds on top of that plan. The coordination term does not grow when the file list grows. The module term does not grow when a meeting runs long and the diff stays the same length. Keeping those apart is how the dollar gap, once the worked example has priced it, can be traced to a count someone can go and change.

A worked example

Connascence degree is 8. Interdependence factor is 0.5. Coordination overhead is 16 hours. Vacuum effort is 20 hours. Blended rate is $160. Features per year is 40.

The multiplier is 1 + (0.5 * 8) + (16 / 20) = 5.80. Vacuum cost is 20 hours times $160, which is $3,200. Feature cost is $3,200 times 5.80, which is $18,560. The gap on one feature is $18,560 minus $3,200, which is $15,360. The annual figure is $15,360 times 40, which is $614,400.

How to measure yours

Open the Engineering Cost Calculator and set Connascence Degree to 8 and Vacuum Effort to 20. Keep the other inputs at the values in the worked example. Those two are the inputs to set first. Connascence degree 8 is the module count in the module term. Vacuum effort of 20 hours is the planned work, and it is the denominator of the coordination term. Interdependence stays at 0.5. Coordination Overhead stays at 16 hours. Features per year stays at 40.

Move Connascence Degree and the module term moves. Each added module adds the interdependence weight of 0.5, so the multiplier grows with the module count. The feature cost, the gap, and the annual figure move with it. The coordination term does not move with the degree, while the 16 hours and the 20 hours stay put. Move Vacuum Effort and two things move together. The baseline hours move, because vacuum effort is the planned work. The coordination term moves, because those hours are its denominator. The worked example holds vacuum effort at 20 so both stay on this page’s reading of the debt.

Coordination Overhead stays at 16 hours while those two inputs are set, so the numerator of the coordination term stays on the worked example. Interdependence stays at 0.5, the weight on each of the eight modules. Features per year stays at 40 so the year remains the per-feature gap times 40. The inputs to set first are still Connascence Degree and Vacuum Effort.

Cost is the vacuum work times the multiplier, so the work is one divided by the multiplier of what you pay. Above 2.00x, more than half of every feature’s cost is overhead. These inputs sit at 5.80x. Eight modules at an interdependence of 0.5, plus 16 coordination hours on 20 hours of vacuum effort, are what push the multiplier past 2.00x. The debt is that overhead share of a feature whose hours were already planned. The line to watch is how far the diff and the meetings sit past the 20 hours on the plan.

← Previous: How to prove to the board that engineering is underfunded

Up next in The Cost of Complexity · Article 6

What module coupling actually costs you

Seven modules moving together, with coordination hours at zero, returns 4.50x, $27,000 per feature, and $1,008,000 a year.

Continue reading →

Frequently asked questions

How to Calculate Technical Debt in Dollars

How do you put technical debt in dollars?

Price the hours you already planned, then price the same feature after the multiplier. The gap is the debt. Here that gap is $15,360 on one feature.

Which inputs produce 5.80x?

Connascence degree 8, interdependence 0.5, 16 coordination hours, 20 hours of vacuum effort, and a $160 rate.

What does that cost over a year?

The $15,360 gap times 40 features is $614,400.

Which two inputs should I set first?

Set Connascence Degree to 8 and Vacuum Effort to 20. Keep the other inputs from the worked example.

Newsletter

Be the first to get next articles in this series.