There is an old saying in the Army which is often wheeled out when asking for a new issue of kit from a Color Sergeant who likes to keep his shelves neat, cataloged and well stocked with shiny things – “The Stores are for storing. If it I was meant to give the kit out it would have been called ‘The Issues’”.
I am reminded of these frustrating exchanges whenever I hear of a developer being berated for failing to meet an estimate, by a Project Manager who is trying to keep his burn-down chart neat, well ordered and ‘toeing the line’. An estimate is just that, an estimate. It is the developer’s best guess at how long this task will take, not an exact timeframe for delivery.
I am just waiting for the day I hear a developer turn around the words of my grumpy old Color Sergeant and say back to the Project Manager - “It’s called an estimate because it is one. If it was meant to be definitive it would be called an ‘Exact’”.
I don’t want to beat up too much on Project Managers here. It is a tough job and, if I’m honest, not one I particularly relish when I am asked to do it from time to time. The PM is always under pressure to predict an accurate date for delivery and the only way she can achieve this is by working from the estimates given to her by the development team. Remember, ‘time is money’, and estimation is all about time…
The problem lies in the reliability of the estimates as a whole; as long as the overall estimate for all tasks within a delivery timeframe is reasonably accurate, then it doesn’t matter so much when some overrun and some come in short.
Reliable estimation comes down to the use of skill and experience and requires the developer to give it the proper amount of thought. A ‘finger in the air’ SWAG  is very different to a properly considered estimate. It is one of the signs of an experienced, professional developer to be able to give reliable estimates.
1: Scientific Wild-Assed Guess