At 8th Light, we determine our commitments over the course of any given iteration by estimating how long each story in the iteration is likely to take. Estimation is notoriously challenging to get right. I've been off more than I've been precise, certainly due to limited experience with the process. Though, even veterans have told me that they "struggle with it" (paraphrasing for politeness).
Nevertheless, it is an important and necessary part of the software development process, and there is much to be learned. I continue to seek advice on ways to make my estimations more accurate, and have yet to settle into an approach which shows promise. Lately, I've been taking notes on things I know can impact my efficiency. Each story being relatively unique, it's tough to find some common concerns between them.
Given what I know needs to be done, and assuming there are no surprises, how long will the given story take to reach completion?
Unless I am extremely confident that I've accounted for all requirements in a story, I can expect this estimate to be a rather unrealistic expectation. The chances that I'll hit this goal will be quite slim.
Given the requirements, and accounting for past experience, what is the most likely duration for this story? How will this story likely play out? What sorts of problems have arisen in the past? How clean is the source? Does it need to be refactored?
This estimation should represent the most likely length of time required to complete the story. A loose approach to use after accounting for all other factors is to consider the estimated duration versus actual duration of previous stories. If I am repeatedly taking an extra point or two beyond my original estimate, then perhaps I should incorporate that into future estimates.
What can possibly go wrong to add time to this story? This is the worst-case-scenario. This should be as unlikely to occur as absolutely everything going right.
"All that can go wrong will go wrong."
Having a team makes it easier to account for the unexpected, if not also easier to estimate in general. Additional perspectives and concerns shed light on aspects of the work that might otherwise have gone unconsidered. With apprenticeship stories, it remains a greater challenge to anticipate time requirements for assignments, especially when there's still so much left to learn.