Alden Spiess of A Little Help Planning writes:
Rather than looking at specific estimation techniques, this article is about the problems involved: why estimates can be so far out sometimes, and so accurate at others; why we underestimate, or overestimate; and what happens when we're wrong.
As always, I'm writing primarily about problems with software development, particularly embedded software development - but a lot of the principles are general.
So: what makes estimation hard?
There are a few key conditions that make predicting the effort involved in a task difficult when they arise:
-
You do not yet properly understand the requirements
-
You do not yet know how to do the work involved
-
You do not yet know whether your planned approach can work
There is another condition - which is that it is very difficult to have an intuitive feel for the aggregated effort of a large number of small tasks. We tend to over-estimate big jobs slightly, but massively underestimate the way in which small jobs mount up. This is not a mistake you should ever make, however: if you explicitly list all the tasks involved in completing a job, even if they are minimal, you quickly reach an accurate figure. Having a good tool to use really helps with this.