Agile Estimation
Estimation in Agile tends to land in two camps:
- those that want to estimate work items as a means to roughly predict what is going to happen during a Sprint whilst Sprint Planning for example
- those that focus instead on the exhibited flow by measuring the Cycle Time at periodic intervals of how many uniform sized work items are completed when implementing the Kanban Framework for example.
This article addresses the former situation when a forward predictive estimate is needed.
Story Points
This approach of using abstract units of measure for estimates often causes quite a bit of confusion especially if teams are conditioned to use time based estimates.
Story Points are used to indicate the size of effort or complexity associated with a User Story or work item in terms of the amount of effort to complete it to a potentially shippable, or done, done, done state. They are abstract, in that, they do not relate to time but instead are a magnitude of effort needed to complete a work item.
Velocity
Consider a situation where we have a number of equal sized rocks and need to transport them from station A to station B. A traditional estimation approach would involve guessing how long it would take to move all of the rocks to station B. An agile approach by comparison will involve obtaining a few samples first and then obtaining an average velocity.
- Set the timer for 30s and see how many rocks we can move in that time from station A to station B
- In our example we manage to move 1 rock in 30 seconds
- Repeat the same step again, setting the timer to 30s and see how many rocks we can move in the time-box
- In our example we manage to move 2 rocks this time in 30 seconds
- Now we can take an average of the two time-boxes
- In our example this is 3 rocks / 2 time-boxes = 1.5 rocks per time-box (or a velocity of 1.5)
- All we have to do now is total up the number of rocks to be moved
- In our example there are 15 rocks to be moved
- Divide the total number of rocks by the velocity now gives us the number of time-boxes, Sprints or iterations it will take to move all of the rocks
- In our example 15 rocks / 1.5 velocity = 10 time-boxes or sprints that are 30 seconds long = 300 seconds = 5 minutes
- As we do more sprints or iterations the accuracy of our average velocity improves helping us to understand how long it will take to move all of the rocks
Story Points as a Unit of Measure
When using Story Points with User Stories for example, metrics such as the Velocity show the total number of Story Points on completed User Stories for a Sprint, or more plainly, how much work was done in a fixed time period.
Story Points then become an indication of how much work is attributed to a work item, or User Story.
Relative Sizing
Using an abstract measure such as Story Points to provide an indicator of effort tends to work best when work items or User Stories are compared and can be sized relative to each other. For example, a work item or User Story can be sized relative to another by asking simple questions such as "is this more or less effort than the other item?" and "is this item twice or 3 times more effort than another item?".
With relative sizing, the first item to be sized is the hardest as it then sets the benchmark for others relative to it. Hence, it is recommended to initially find a work item that is a small size that can then be sized and other items sized relative to it.
As more items are sized then the Story Point sizes begin to normalise and it gets easier to size additional items as there are more to compare them to.
Techniques
- Planning Poker is a basic technique that allows a team to provide a detailed estimate based upon a holistic approach to complete a work item. This technique can be a little slow when compared to others.
- Affinity Sizing is a simple technique that allows a quick rough estimate to be provided, and is useful is a large number of items are needed to be estimated quickly such as when initially creating a Product Backlog for example.
See Also
- Agile Metrics
- User Stories
- Scrum Framework
- Sprint Planning & Product Backlog Refinement
- Cycle Time
- Kanban Framework