Story points and velocity are probably the most well known tools for estimation in Agile environments. They are the basis for predictability with Scrum. To begin with, we should be clear on what a story point is. Most people reading this will have heard at least one definition, and probably more than one. I’m going to go with the king of planning poker, Mike Cohn.
Mike defines story points in the following way :
“They are a unit of measure for expressing the overall size of a user story or feature. They tell us how big a story is, relative to others, either in terms of size or complexity”
With that understanding, let’s set the scene. We are in our sprint planning meeting. The Development Team (DT) are sat alongside the Product Owner (PO) who has bought along their prioritised product backlog, and the Scrum Master (SM) is about to kick the session off by defining the desired outcome of the meeting. The desired outcome of the sprint planning meeting may be as follows:
- There is an agreed sprint backlog
- The DT have reached a consensus on the size and complexity of each story in the sprint backlog (in story points)
- The DT and the PO have a shared understanding of each story in the sprint backlog
- The SM has ensured that the team have not planned too much work by checking the story points planned against a known velocity
As the session goes on, the product owner will talk through each story on the the product backlog. The team will ask questions of the PO and of each other in order to gain a shared understanding of the story. Once they think they have this, the SM will provide them with planning poker cards and the act of sizing will begin.
The DT will be a group made up of people with different levels of experience, knowledge and skill. Sizing with planning poker helps to ensure that everyone’s voice is heard, and that all opinions are taken into account, not just those of the team lead or architect. In this way it may be possible for anyone in the DT to pick up any story during the sprint.
To begin, the DT find a benchmark to relatively size each new story against. In sprint one, the SM may ask them to find an average size story on the product backlog. In later sprints, perhaps more appropriately, they may look back at stories already completed and find one with a size they now know to be accurate.
The SM will ask the DT to decide individually the size of the story being discussed, and the DT will hold up the card representing that number of story points. They will do so simultaneously so as not to be influenced by any other member of the team. If the DT don’t have consensus on the size of the story, further important discussion will ensue, facilitated by the SM. It may require another round or two of poker, but eventually consensus will be reached on size as members of the DT persuade each other with constructive reasoning.
This process will be repeated with the next story on the product backlog, and then the next, and so on until the DT believe they have enough work to fill the sprint. Now the SM will check to see how many story points have been planned. If this is the first sprint the DT have undertaken they will probably agree to start with what they have. If not, the SM will compare the number of points planned against team velocity.
What is our team velocity?
Velocity = total story points / no. of sprints
Last 5 sprints completed points were:
30, 40, 50, 60, 70 = 250 points / 5 sprints = velocity of 50 points
Now that we have our velocity, we may want to turn that into a time estimate.
How big is my project?
Total estimate (points) / velocity = number of sprints
e.g. 500 story points for project / 50 points = 10 sprints
How long will it take?
Number of sprints x length of sprint (weeks)
e.g. 2 weeks sprints = 10 sprints x 2 weeks = 20 weeks
Of course, this still requires you to have broken down the entire project into stories and to have sized all of them. This is a significant up front task.
The alternative is to try and keep projects relatively small, and to plan at a number of different levels. At a project level, use ranges for the length of the project leaving more granular estimates for each sprint as you plan them. Perhaps you can break a project into rough sprint blocks (i.e. this section of the project is 1-3 sprints) and use this to calculate your range. Ensure that you provide your project estimate with a level of confidence attached. As you learn more from the granular process and as you complete work, you can begin to narrow the range for the overall project estimate and provide a greater level of confidence.
Photo credit (homepage): Mountain Goat Softare