Development teams know that estimating is one of the more difficult tasks to get right. One of the frustrating things about estimating is that it often
takes quite a bit of research to derive a fairly close estimate of a task’s required effort (usually given in time). Furthermore, estimating is not a quote. It is not intended to be accurate and we all know that…well, except the people asking for the estimate. Sometimes deriving an estimate takes just as much time as it would to simply implement the feature. Finally, estimates are always based on the best information had at the time which, most likely will change.
Story point estimating
Story point estimating (feature point estimating) helps to alleviate some of the frustrations of units of time estimating. Rather than trying to derive how long something will take, a developer can focus on the overall scope of the task and assign it a value relative to other tasks. In other words, it is an estimate of a feature’s size and complexity as perceived by the developer.
For instance a simple feature might carry the value of 1 whereas a feature twice the size might carry the value of 2, and so on. Over time, a team gets a sense of how many points they can complete in a 1-week or 2-week sprint. Here’s an illustration; consider the following questions:
How long will it take you (in hours) to mow your front lawn?
How long will it take you (in hours) to add another room to your house?
Which of your answers do you think is more accurate? Now consider the following questions:
On a scale of 1 to 10, how difficult is it to mow your front lawn?
On a scale of 1 to 10, how difficult is it to add another room to your house?
There is a good likelihood that both answers are reasonably correct based on your experience and know-how.
There are some real benefits to this type of estimating. Some of these are:
- A team can better predict how much work they will get done in a sprint because they are targeting points rather than specific features.
- It is a self-correcting model. As the team develops, they will only improve their estimating and eventually be able to confidently say how many points they can achieve for a sprint.
- It promotes breaking apart larger, complex features into smaller, less complex tasks to be estimated against. Overall, this reduces uncertainty and risk.
- Estimating happens more quickly because it is not intended to be precise.
Fibonacci points
There is a variation of estimating points that takes into account risk and uncertainty. Instead of using a uniform distribution of points to effort (1, 2, 3, 4, 5) a team can use points based on the Fibonacci sequence (1, 2, 3, 5, 8, 13 …). It was stated earlier that as the feature increases in size, so does its risk and uncertainty. In a sense, this model enforces that risk and uncertainty are taken into account in estimating (something developers are not prone to doing when estimating). For instance if a team considers a task to have a 6 on the proportional scale, it would need to be assigned a value of 8 according to this model. Hence, risk and uncertainty are taken into account
So just tell me how long will it take?
The key here is to ask the team the following question: How many points can you typically achieve in the given period of time? The answer is not when it will get gone, but how much will be done within a given time frame. This is a much better and more accurate way of determining what it is going to take to accomplish the overall goal.
Stay tuned for a future post on team-based estimating while playing Poker.