As Giovanni Asproni says it “estimation is a fundamental activity of every project”. Or at least it should be. The meaning of “estimation” varies however often for the different participants to software development projects. For the customer, “estimation” means an almost accurate amount of money he will spend and time it will need before he gets what he wants. For the project manager, it is an early commitment to the customer and from the developer to do something for a deadline. For the developer, it is the amount of time that he thinks he could do the stuff, if everything goes right.
The experienced developer will often add a 50% cushion to his estimates, knowing that not everything goes right. You can have an additional meaning in the case of outsourcing. For the salesperson, the estimation is the maximum price he can ask, while still having a lot of chances to sign a deal. A lot of young engineers will remind with astonishment hearing in a pre-sales meeting a salesperson answering to the customer that everything he wants is indeed possible… and for a cheap price too ;o)
For a developer, estimation is often equaled to fixing deadlines. He could then feel trapped by the original commitment that created expectations for management and customers. Customers have often two fixed expectations: delivery date and functionalities. Therefore, the effort is the only variable left to adjust the project activity. You can often witness a poor transition from estimation to planning with project managers that dream to have a baby in one month, if only they could manage a team of nine women. Because initial expectations cannot be achieved in many projects, the finger in the air used for estimating get then pointed downwards for blaming people: first from customers to project managers, then from project managers to developers. So print Giovanni’s article and give it to your customer before your next project planning meeting.