The difference between estimates and commitments
There are many traps one can fall into when talking about software estimates. One of the most dangerous ones is to not make it clear if the discussed estimate is understood as a commitment.
An estimate is a guess, while a commitment is a promise. And different people will think of one of those when talking about the expected effort needed for future development.
estimate
An approximate calculation or judgement of the value, number, quantity, or extent of something
— Oxford dictionary
When people think of estimates, they often think in terms of a single estimation, a one-time event that produces one result. But if estimates are created for some future software development, chances are that the requirements and many other assumptions will change many times before the development even starts. And then, after it starts. So to produce the best estimate, the estimate has to change over time to accommodate new information.
Whenever new data are available, and anything about the previous assumptions changes, the estimate should change too. George Dinwiddie stated it well in his book Software Estimation Without Guessing that many bad estimates are not bad, just obsolete. And we should treat them like that.
So the trouble with taking estimates as commitments is that commitments are not expected to change, while the best estimates always will.
Petr