Now that we have understood what a Story point is and why we should be using story points for our estimation, it is time we learnt another key Scrum topic – “Velocity”.
Velocity is a term that is very frequently used in Scrum Projects and to be fair, is very easy to understand. When you start working on an Agile project as the Scrum Master, you will be responsible to measure the velocity of your scrum team and hence it is very important that you understand this concept well. The purpose of this article is to do just that.
What is Velocity?
In physics Velocity refers to the speed at which an object is moving in a particular direction. Without Direction, we only have Speed which may not be as useful as when we know the Direction. The meaning of Velocity in Scrum is very close to what we know in Physics.
To put it simply – Velocity is simply a measure of how fast the scrum team is going towards achieving the product functionality or goal. We measure this at the end of every iteration and use the number to predict how much the team may be able to deliver in upcoming Iterations as well.
In real life projects, Velocity is nothing but the total of the Story Point Estimates of all the feature user stories the team was able to complete in the Sprint or Iteration under consideration.
Again, the emphasis here is on achieving product functionality because the team may be able to build a lot of things but if they do not contribute towards the product functionality that can be shipped out to customer, they do not count towards Velocity.
A simple example here would be bug-fixes on code. While the team is testing a user story, they may identify bugs in the code and would eventually fix them during the Sprint. As bug-fixing is part of the initial story point estimate that was given for the story, a fresh estimate is not required and hence this effort does not contribute to Velocity.
Are Work In Progress Stories Counted towards Velocity?
One of the biggest questions new Scrum masters have is; whether Work In Progress User Stories contribute toward Velocity. The Answer is “No”. let me explain…
Firstly, Scrum recommends that user stories be broken down into smaller/granular pieces that can be completed in a single Sprint or Iteration. If for some reason the team is unable to finish a certain user story, the partial completion of the user story does not contribute towards the Velocity because the story was not “Completed” and hence does not add any value to the Product as a whole.
You may be wondering what about the effort spent on that partially completed user story and why it did not contribute to the teams Velocity – are you?
Like I explained in the previous paragraph, Velocity is a measure of the usable or shippable functionality the team was able to produce in a sprint. Half-finished work items will not be counted towards the Sprint’s Velocity for the team.
On a related note, Scrum recommends that, at the end of each sprint, the team review such unfinished story with the product owner to decide whether it is worthwhile to continue work on the story or should they focus on any newer or higher priority user story.
Keeping Teams Velocity Clean
Sometimes, scrum teams pay a lot of attention to the velocity and try to do stories just to boost up the velocity. There could be activities the team does as part of their job (maybe code refactoring or environment maintenance etc) that don’t really count towards the teams velocity. A team that understands its purpose does not bother about these day to day activities while some scrum teams try to create user stories even for such routine activities just to boost up their velocity output for the iteration.
Any time we hear a team talk about including some work they've done toward the velocity being counted, it's a bad sign that something is amiss. Often this is the result of a culture that is overly focused on looking at velocity as proof the team is delivering stuff towards a release. Sometimes, this pressure for a high velocity comes from the team itself.
Setting a target velocity to aim for the team is a good idea but, achieving a velocity should not become the team's goal. The team's goal is to deliver incremental improvements to the product - PERIOD.