When you estimate how long something will take, about half the time it should be done early or on time. Almost anyone reading this will know things are rarely done sooner than expected, especially if they’re difficult. People have been shown experimentally to be poor estimators, with a marked bias towards underestimation of time required to complete tasks.
The Agile approach of working iteratively provides a neat way to mitigate the effects of this bias. Let’s review a typical process:
You now have an idea of how much you can take on in your next time-box (your “story points”). For each subsequent iteration you can follow this process:
A word of caution: even though what you are estimating at the start of a story is time to completion, your estimate is biased, so it is an error to treat the “points” as “time”. If you hear complaints that “stories are taking 3 times as long as they’re supposed to” or “we only got 2 days work done this week”, these are mistaken. You did 5 days of work and the stories took longer than you estimated. You just aren’t very good at estimating, which is why you should measure your bias.
See Wikipedia’s list of cognitive biases for a fuller list and better description of planning-related biases. There are some links in there that suggest more general conclusions than the one I reach above… perhaps we should be funding projects incrementally as well, for example.