Saturday, December 18, 2010

Sprint Velocity & Focus Factor

Sprint Velocity & Focus Factor

In Scrum, velocity is how much product backlog effort a team can handle in one sprint. This can be estimated by viewing previous sprints.

Velocity is the measure of the productivity of the team i.e. the rate at which the team is completing work from the product backlog. Velocity is the most important metric as it tells us how much work can be done in a sprint.

Estimated Velocity: The sum of the story point value of all those User Stories taken into the sprint backlog (at start of sprint).

Take all backlog items that were scheduled for last sprint (i.e. initially included in the sprint backlog for last sprint) and sum up their initial time estimates (story points) or just look at the first Y-value ("estimated remaining work") on the burndown chart from last sprint. This is your estimated velocity for last sprint.

Actual Velocity: The sum of the story point value of all those User Stories that are determined to be Done-Done at end of sprint.

For the actual velocity look at which backlog items were actually completed (ignore partially completed items). Sum up the initial estimates for those items (ignore any time estimate updates that were done during the sprint). This is your actual velocity.

Average Actual Velocity: This should be the Actual Velocity averaged out over a number of sprints (provided the team is relatively stable – or this will have little or no meaning).


As an Example: Let’s say I have a team consisting of 4 full-time individuals and one person working half-time with some other duties. Let’s say they work in 2 week sprints. Let’s further say that the team takes in a total of 35 story points at sprint start and they manage to complete (Done-Done) a total of 28 story points. So

Estimated Velocity = 35
Actual Velocity = 28

Average Actual Velocity = Avg(28) (So far only 1 sprint to average over)
Mandays in sprint = 4.5 persons * 10 days = 45.
Focus Factor = 28 / 45 = ~0.6.

So, what values do you use during Sprint Planning? I suggest the following:
> Average Actual Velocity, or at least last sprint’s Actual Velocity, to compare the new sprint’s Estimated Velocity to, as a sanity check.
> Probable Velocity = Mandays available in the new sprint X Focus Factor.
If the team and the sprint lengths remain unchanged then the team should probably not take in more than approximately 28-30 story points into the new sprint. If the new sprint is, for example, 15 days instead, you can use the previously measured Focus Factor to calculate the probable velocity; (4.5 persons * 15 days = 67.5 mandays) * 0.6 FocusFactor = ~41 story points.

Velocity is a technique very useful during sprint planning.

Last Sprint's Focus Factor:


                          Actual Velocity
Focus Factor = -----------------
                          Available Man-days

This Sprint's Estimated Velocity:

Available Man-days X Focus Factor = Estimated Velocity

How to Calculate Initial Velocity?
When we start a project, we do not know what our velocity is, we have to somehow work out an initial estimated velocity that we think we can achieve in the first sprint. When we are bit into our first sprint we will begin to realize our velocity as features begin to be completed.

The following options can be used to calculate an initial velocity:
> If you are lucky to have previous projects that have used scrum then use their actual velocity for similar work and team skill or composition. If it is the same team then even better.
> Predict the velocity, take some stories, expand them into tasks to work out what you think you can complete.
> Execute a short sprint to complete a few stories to work out velocity.

Also See:
Burndown Charts

References:
Scrumalliance
Scrumftw
Alistair
Agilekiwi
Scruminfo
Scrum_summary[pdf] from Helpserve