Agile Planning - Velocity and Control Charts
Applying Principles from The Agile Samurai: How Agile Masters Deliver Great Software by Jonathan Rasmusson
The very best samurai are always in control of themselves, their weapons, and how they approach their next battle. Even in the chaos of the moment the best samurai is a disciplined warrior who knows their own strengths and weaknesses.
The same is true for the Agile Samurai. One of the most important things that an Agile Samurai needs to know is how productive her team has been over a period of sprints. In agile we measure productivity by capturing velocity which is the number of story points completed by the of a sprint. The Agile Samurai will then take the average velocity from at least three sprints to understand how productive the team will be in the future.
The average velocity does not provide the Agile Samurai with the control necessary to predict what the teams performance will be in the future. To be able to bring a true level of control of sprint and release planning the Agile Samurai may look to Control Charts.
Here is an example of an Average Velocity Control Chart
The black line is the velocity for each sprint. The green line is the average velocity over time. The red line is the upper and lower limits of control for the process being measured. When the black line is between the red lines then we know the process (system) is 'in control.' When the black line is outside the red lines then we know the process (system) is 'out of control.'
When the situation changes it is important to change how the average velocity is calculated. In the case of this chart, the first third of the chart represents a team and product backlog for 2010. Most of the team continued in 2011 and continued working on the same product. They had a new product backlog in 2011. About midway through 2011 the members on the team changed dramatically. Almost immediately there was a drop in productivity which was expected. This was followed by a spike in productivity because the team completed all the work from the previous sprint and the new work planned in the sprint. The team has then been increasing in productivity over time. A very important piece of information which the chart shows is that the predictability of the team is currently poor because of how wide the upper and lower limits are.
So how do you calculate your own control chart?
First you need a velocity for at least three consecutive sprints. Then you need to calculate the following information:
Average velocity = (Velocity Sprint 1 + Velocity Sprint 2 + Velocity Sprint 3 + ... Velocity Sprint n) / n
Calculate Difference Squared for each velocity = (Current Velocity - Average Velocity) ^ 2
Deviation = SQRT (Average (Difference Squared for all velocities))
Lower Limit = Average Velocity - Deviation
Upper Limit = Average Velocity + Deviation
The easiest way to do this is with a spreadsheet and then use the spreadsheet's charting capabilities to product a nice chart. Here is an example of such a spreadsheet. You should be able to modify it for your needs.