I have come across many people in life who are asking for an estimate for a job they need done and when I have provided them with the estimate, they turn around and take that as an actual number of hours it will take to do the job.  This is a wrong approach.

Estimates are ...... estimates.  The only way you can get actual’s is to look at the time spend after the job has been done.

Estimates are at best a good guess of the time we need to develop something brand new without all the details known up front.  And by the way, all development is brand new, not matter how many times you have tried developing something similar in the past.  There will always be new outside things influencing how your development is going; even just the fact that you have done this before, changes the way you would do it again.  Building software is not production of gizmos where we know that the machine can spit out 100 gizmos per hour so all we need to do is do the math.

Compare software development and estimating with a simple thing as going to and from work every day.  Even thou you have done this 200 times, you can still not estimate how long it will take you to get to work tomorrow or for that matter three weeks from now.  Weather affects the time is takes; other people in traffic affect the time it takes; your driving style on any particular day affect the time.  "Well" some would argue "I know that on a good day it takes me 30 minutes to get to work so I can apply the +/- X% rule and give you a better estimate."  Really?  So you are telling me that you can apply +/- 10% and tell me that you would get there in 27-33 minutes?  Or how about we make it more accurate and add +/- 50% just to be on the safe side?

So now we are looking at completing the task between 15 and 45 minutes.  What does that give me that the 30 minutes estimate does not?  Nothing I would argue.  All we are doing is fooling ourselves into believing that we can estimate more accurately.

 

Estimates are estimates and should be used for nothing else that that; our best guess on how much time a task will take.