The larger your user stories are, the less accurately you are able to estimate them
The smaller your user stories are, the more accurately you are able to estimate them
At the new company I work at, one of the biggest problems they have had in the last few sprints is a lack of accuracy in story estimates. They did not complete all the work in the last sprint because they under-estimated the time it would take to do so. While there are many factors that contribute to the accuracy of estimates, I would like to focus on one: User Story size.
I propose that smaller stories are easier to estimate accurately, whereas large stories are not.
A small story has a shorter duration, less functionality and fewer unknowns and thus, less room for error. However, a large story contains a lot of functionality, and a longer duration, and therefore much greater room for error.
A large user story has much more room for unknowns, and the fact that it is large, and not broken down to a more granular level may indicate that the details have not yet been fully thought through. The estimates are less likely to be accurate because there is a lack of understanding of the functionality to be implemented. However, using smaller user stories forces the developer to break down large stories into smaller ones, and in the process, think through the stories in a higher level of detail. In doing so, the developer gains more understanding of the functionality and exposes more of the unknowns. Thus, the estimates will be more accurate.
In projects I have worked on in the past, our estimates have been surprisingly accurate. In those projects, estimating fine-grained stories was the key to that accuracy. If you feel your accuracy is suffering, try to start using smaller stories. I have found that stories that are less than 2 days or so are ideal. I would break them down into tasks with a duration of no more than 8-10 hours (most of our tasks were estimated at 2-6 hours of uninterrupted programming time). These figures are not cast in stone…they worked well for the project I was on, but every project is different. Find what works for you and stick with it.
-=CE=-