Estimates Are Not Commitments, and the Confusion Costs You

The estimate became a date, the date became a promise, and the promise taught engineers to pad, hide and cut corners.

Share
Estimates Are Not Commitments, and the Confusion Is Costing You Roadmaps. Abstract opinion illustration in orange and dark grey on debugly.dev

Here is the thesis. An estimate is a measurement of uncertainty, and a commitment is a promise about the future, and the single most expensive confusion in software planning is treating the first as the second. The moment an estimate is read as a commitment, the estimate stops being information and starts being a negotiation, the engineer stops reporting what they believe and starts reporting what is safe, and the roadmap built on the padded number inherits the padding as if it were truth.

I am not arguing that deadlines are illegitimate or that planning is pointless. I am arguing that the estimate to commitment pipeline destroys the information the plan needs, and that the destruction is systematic, not accidental.

What an estimate actually is

An estimate is a compressed statement about a probability distribution: given what we know now, the work is likely to land somewhere in this range, and the range reflects the unknowns, the unfamiliar code, the untested dependency, the hidden integration. The range is the information. The single number extracted from it is a lossy projection, and the loss is precisely the uncertainty, which is the part the decision maker needs.

When the number is taken as a commitment, the range is discarded at the moment of extraction, and every downstream decision, the roadmap, the hire, the marketing date, is made as if the uncertainty were zero, which it is not, and the error compounds as the plan hardens.

What the confusion does to the estimator

People respond to incentives, and the incentive under a commitment reading is to avoid being wrong in the visible direction, late. So the estimator pads, and the padding is rational, because the unpadded estimate that is honest about uncertainty will be quoted as its optimistic end and become the date anyway. The padded estimate is the only one that survives contact with the planning process.

The padding then becomes the new baseline, which the next round of planning compresses, "we need it tighter", and the estimator pads more, and the number drifts further from any belief, until the estimate is a politically stable figure with no informational content, which is the worst of both worlds: it is treated as a commitment and it is not even an honest guess.

This is the estimation analogue of code coverage is a marketing metric: the number is optimised for the audience rather than the truth, and the audience, having optimised it, no longer has the truth.

What the confusion does to the work

A committed estimate changes the work's shape, and not for the better. Under a hard date derived from a guess, the first thing cut is the invisible quality: the tests, the error paths, the documentation, the refactor that would have paid next quarter, because those are the parts whose absence is not visible at the demo. The date is met, the debt is shipped, and the debt is the subject of technical debt is the wrong metaphor, same mechanism, different costume.

The commitment reading also kills the early warning. An engineer who sees the estimate failing is, under a promise, a promise breaker, so the bad news is delayed, softened and batched, arriving at the deadline instead of the week the risk appeared, which is the exact inversion of what planning needs, which is early signal.

The counterargument, fairly

The honest defence of commitments is that coordination requires them. A company cannot schedule a launch, a contract, a dependency on another team, on a range, and someone must own a date, because the date is how separate groups align. I accept this fully. Coordination needs commitments.

The defect is not the commitment. It is the source. A commitment made from an estimate, without a decision about what to spend on the uncertainty, is a commitment made from a number that was never owned. The mature move is to convert the estimate into a commitment deliberately: here is the range, here is the confidence, here is what we will cut or add if the range resolves badly, and here is the person who owns the date and the tradeoffs. The conversion makes the uncertainty a budgeted item instead of a hidden one, and the date, owned with its tradeoffs, becomes a real commitment rather than a guess in a costume.

There is also the fixed bid reality, where the customer demands a date and a price. Even there the discipline holds internally: the team keeps the range and the contingency private but real, and the commitment is priced with the contingency, which is the difference between a bid and a gamble.

What works instead

The teams that plan well share practices, and none of them abolish dates.

They estimate in ranges and confidence, and they publish the range, so the uncertainty survives extraction. They re estimate as information arrives, because an estimate is a measurement at a point in time, and holding an old estimate as a commitment is holding an old measurement as current, which nobody would do with a latency number.

They separate the coordination date from the engineering estimate: the date is chosen with the contingency and the cuts explicit, and the estimate stays a living measurement, so the two can disagree without either being a lie.

And they reward early bad news, because the early bad news is the estimate updating, and the culture that punishes it is buying silence with the roadmap.

The working rule

An estimate answers "what do we believe", a commitment answers "what will we deliver", and the bridge between them is a decision about uncertainty, not a relabelling. Publish the range, re estimate as you learn, convert to a commitment deliberately with the contingency and the cuts named, and punish nothing but hidden bad news.

The estimate that becomes a commitment by accident stops being either, and the roadmap built on it is a structure founded on a number nobody believes, which is the most common fiction in software, and the least necessary.


Published on debugly.dev by Rohit Bhadani | Founder of Krova Cloud