Key Takeaways
- The ninety-ninety rule, attributed to Tom Cargill of Bell Labs, says the first 90% of the code takes 90% of the time and the remaining 10% takes the other 90%. The percentages add to 180 on purpose.
- It is not a story about teams estimating badly. A confidence vote is expert engineering judgment and it was true on planning day; the last stretch is simply where erosion concentrates.
- Three forces land hardest at the end: scope returning as rework when the Definition of Done was loose, dependencies surfacing on the critical path, and capacity drained by unplanned fixes.
- Percent-complete is the wrong instrument for the final stretch because its denominator moves. Remaining work measured against live throughput is the right one.
- Release Management, Roadmaps, Portfolio PPM & Timeline re-forecasts the committed date at 50/85/95% confidence from real Jira throughput, so “almost done” becomes a number of days you can act on.
Three weeks ago the team said the release was ninety percent done. Last week it was ninety percent done. This morning, in standup, it is ninety percent done — and the launch date is nine days out.
Nobody in that room is lying. That is the uncomfortable part.
The joke that keeps being right
The ninety-ninety rule is credited to Tom Cargill of Bell Labs and was published by Jon Bentley in his Programming Pearls column in Communications of the ACM in September 1985: “The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”
The percentages add up to 180. That is the joke. It has survived four decades because every engineer has lived it: the integration that only bites when both sides are real, the edge case that turns out to be a design decision, the last defect that is architectural rather than local. The work that remains at the end is not a scaled-down version of the work that came before. It is a different kind of work, and it arrives with less room to absorb it.
Your team’s judgment wasn’t the problem
It is tempting to read the rule as evidence that engineers are bad at estimating. That reading is wrong, and acting on it makes planning worse.
When a room of professional engineers raises a fist of five, that vote is the most honest signal in the increment. It reflects what was knowable on planning day: the scope as agreed, the dependencies as mapped, the team as staffed. The vote is expert judgment, and it is usually right about the day it was taken.
A confidence vote is a snapshot. The problem is not the snapshot. The problem is that the increment keeps moving after the hands go down, and by the final stretch the plan the team voted on and the plan they are actually executing have drifted apart.
Why erosion concentrates in the last 10%
The three things that erode a release date — scope creep, dependencies surfaced too late, and capacity changes — do not distribute themselves evenly across the increment. They pile up at the end.
Scope returns as rework. Work marked done under a loose Definition of Done comes back in the final weeks as bugs, missing tests, or documentation nobody scheduled. To the forecast it is indistinguishable from new scope: it is simply more remaining work.
Dependencies finally get exercised. A hard link to another team is theoretical until the day you integrate. That day is usually near the end, which is exactly when there is no slack left to resequence around it.
Capacity quietly leaves. The final stretch competes with production incidents, release logistics, and the people already being pulled onto whatever comes next. The vote assumed a team that is no longer entirely present.
Percent-complete is the wrong instrument
Here is why “ninety percent done” can stay true for a month without anyone misreporting. Percent-complete has a denominator, and the denominator moves. If a release grows from 100 issues to 120 while 90 are finished, reported completion drops from 90% to 75% without a single piece of work being undone. Run that in reverse and a team can clear real work for three weeks while the number sits still.
A ratio that both scope and progress can move is not a schedule instrument. The honest question is not “what fraction is finished” but “how much work is actually left, and how fast is this team clearing work like it right now.” That is the same reason a release burndown can say you’re on track while the committed date disagrees, and the same reason a hardening sprint is buffer the vote already priced rather than time you get back.
What it looks like in Jira
This is the job Release Management, Roadmaps, Portfolio PPM & Timeline does. It does not re-run the confidence vote with better math or replace the team’s judgment. The team still owns the assumptions: which throughput window to trust, whose capacity is genuinely in, what is really in scope. The app does the arithmetic at Monte Carlo scale and keeps it current.
Instead of a completion percentage, you get a committed date carried with its confidence — June 7 at 85%, say — sitting on a band the whole room can read. Because the forecast reads remaining work rather than reported progress, a release stuck in its last stretch produces a date that stops improving. Rework returning from Done and scope added after the commitment both land in the same measure. The gap between the forecast and the committed date shows up in days, in week two, while pulling scope back across the cut-line or resequencing a dependency is still a real option.
You cannot repeal the ninety-ninety rule. You can stop it from working in the dark. See it on your next Fix Version, free for 30 days. It Runs on Atlassian, so your Jira data never leaves Atlassian.
Frequently asked questions
What is the ninety-ninety rule in software development?
The ninety-ninety rule is an observation attributed to Tom Cargill of Bell Labs and popularised by Jon Bentley in Communications of the ACM in 1985: the first 90% of the code accounts for the first 90% of the development time, and the remaining 10% of the code accounts for the other 90%. The total of 180% is deliberate. It describes how the final stretch of a project consumes far more schedule than its apparent size suggests, because integration, edge cases, and rework surface late — usually with no buffer left to absorb them.
How do you track the last 10% of a release without percent-complete?
Track the absolute quantity of work remaining against the team’s observed throughput, rather than a completion ratio whose denominator changes with scope. In Jira, that means counting issues in the Fix Version that have not reached a Done-category status and forecasting how long the team’s real throughput needs to clear them. Release Management, Roadmaps & Portfolio does this continuously and expresses the result as a committed date with 50/85/95% confidence, so late rework and late scope both show up as days against the date. The mechanics are documented in how nearly-done work is counted in a committed date forecast.




Leave a Reply
Your email is safe with us.