The Cost of Complexity · Article 3 of 8
What coordination overhead costs a software company
Twenty coordination hours on a 40-hour feature add $3,000 on the coordination line. The annual figure for these inputs is $489,600.
The multiplier is 2.70x. Cost per feature is $16,200. The annual figure is $489,600. Twenty coordination hours on a 40-hour feature, with three modules moving, produce that multiplier. The coordination term is those 20 hours divided by the 40. The module term is interdependence times connascence degree, and it is separate.
Why it happens
Coordination hours enter the multiplier as coordination overhead divided by vacuum effort. The module term is separate: interdependence times connascence degree. How that overhead shows up in the way teams talk is covered in The Way Teams Talk Shapes the Software They Build.
The module term is the one that moves when the module count rises. Connascence degree is that count: how many modules have to change together for the feature to ship. Interdependence is the weight on each of those modules. On this page the degree is 3 and the weight is 0.4. Each added module adds that same weight into the module term. A diff that lists more than three modules raises the degree, the module term grows, and the multiplier rises with it. A diff that lists fewer modules lowers the degree and the multiplier falls with it.
The coordination term does not move with the module count. It is a ratio of hours. The numerator is the coordination overhead: review, alignment, and the meetings that unblock the change. On this page that is 20 hours. The denominator is the vacuum effort, the hours the feature would take as building. On this page that is 40 hours. An added module leaves those two hour counts where they are. The coordination term changes when the team spends more hours in review and meetings, or when the vacuum effort itself changes, because those are the only numbers in the ratio.
On a codebase the reader sees a pull request whose diff names three modules, and a calendar that shows 40 hours of building plus 20 hours around them. Each module has an owner. The hours those owners spend reading the change, answering questions, and sitting in the meeting that settles the interface are the coordination overhead. They land on this feature. The 40 hours were the estimate of the work. The 20 hours are the time the work spent with other people. One number is in the file list. The other is in the meetings attached to the feature.
A reader counting this on their own repository keeps the two inputs apart. The modules named in the pull request are the connascence degree. The review comments, the waiting, and the alignment meeting, added up in hours, are the coordination overhead. The hours the feature would have taken in a clean module are the vacuum effort. If the file list grows and the meeting hours stay flat, only the module term has moved. If the file list stays at three modules and the meetings grow, only the coordination term has moved. The worked example is the case where both are present: degree 3, weight 0.4, 20 coordination hours, and 40 hours of vacuum effort.
The year repeats that pair of terms. Features per year is 48. Each feature carries the same module term and the same coordination ratio while the inputs stay on the worked example. The annual figure is the per-feature gap, repeated. A team that ships the same shape of change all year pays the module term once per feature and the coordination term once per feature. Changing the module count changes only the first. Changing the hours around the feature changes only the second.
The meetings that produce the 20 hours are the coordination overhead this page prices. The three modules in the diff are the connascence degree. The change surface grows one of them. The conversation around the change grows the other. The worked example holds both still so the two terms can be read apart, and so a reader can see which input they would move first on their own codebase.
A worked example
Connascence degree is 3. Interdependence factor is 0.4. Coordination overhead is 20 hours. Vacuum effort is 40 hours. Blended rate is $150. Features per year is 48.
The multiplier is 1 + (0.4 * 3) + (20 / 40) = 2.70. Vacuum cost is 40 hours times $150, which is $6,000. Feature cost is $6,000 times 2.70, which is $16,200. The coordination line is (20 / 40) times $6,000, which is $3,000. The annual figure is ($16,200 minus $6,000) times 48, which is $489,600.
How to measure yours
Open the Engineering Cost Calculator and set Coordination Overhead to 20 and Vacuum Effort to 40. Keep the other inputs at the values in the worked example. Those two are the inputs to set first, because they are the numerator and the denominator of the coordination term. Connascence degree stays at 3. The interdependence factor stays at 0.4. Features per year stays at 48.
Move Coordination Overhead and the numerator of the ratio moves. The coordination line, the multiplier, the feature cost, and the annual figure move with it. The module term stays still, because degree and interdependence did not change. Move Vacuum Effort and the denominator of the same ratio moves, and the baseline hours of the feature move with it. The worked example holds the pair at 20 and 40 so the page and the calculator are reading the same ratio.
Move Connascence Degree after that pair is set, and only the module term moves. Each added module adds the interdependence weight of 0.4. The coordination term does not move with that degree. That is how you can see the two terms separately: hold the hours still and change the module count, or hold the module count still and change the hours.
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 2.70x. Three modules at an interdependence of 0.4, together with 20 coordination hours on 40 hours of vacuum effort, are what push the multiplier past 2.00x. Either term can carry a page across that line. Here both are present. The line to watch is which of the two you are about to increase.
← Previous: Why small features take months on a legacy codebase
Up next in The Cost of Complexity · Article 4
How to prove to the board that engineering is underfunded
These inputs put $933,120 a year on the engineering payroll above the work itself.
Frequently asked questions
What Coordination Overhead Costs a Software Company
How much is the coordination line on one feature?
With 20 coordination hours and 40 hours of vacuum effort at $150, the coordination line is $3,000 of that feature.
What does the whole feature cost?
Connascence degree 3 and interdependence 0.4, with those coordination hours, return 2.70x and $16,200 per feature.
What is the annual figure?
($16,200 minus $6,000) times 48 features is $489,600.
Which two inputs should I set first?
Set Coordination Overhead to 20 and Vacuum Effort to 40. Keep the other inputs from the worked example.
Newsletter
Be the first to get next articles in this series.