This is a commonly asked question, and here’s a great analogy (reply by Michael Wolfe) posted on Quora. The question is also well summarized.
Basically draws an analogy of planning a hike from San Francisco to Los Angeles to meet friends. Initially, look at map, figure out distance and average speed, and set a date.
Start on hike, and discover not moving as fast as thought. So, decide to move a bit faster, and push out arrival date.
Next day, additional discoveries, and straying off the path. Obstacles that weren’t visible on the map. Physical limitations of the body. Tasks that take longer than expected.
Obviously as time goes by, the arrival date is further and further away.
One of the comments on Michael’s reply is also very good.
Devdas Bhagat, Just another geek.
Do you want precise estimates, or accurate ones? Accurate estimates have ranges (we will be done between 1 year and 3 years from now with a 95% chance of this being correct.). Precise estimates are absolute, but almost always absolutely wrong.
Developers are also the only group where they are asked to do something which has never been done before, and tell someone else how long it will take before they even know what actually needs to be done.