This has always been a contentious topic and one which has always been up for debate in all the companies I have worked for.
From my understanding, a sprint velocity is supposed to be an approximate, and not an absolute measure, on what a team can accomplish within a given sprint taking into consideration certain assumption and environmental factors. This number, from my understanding, is simply a guideline but should not be used to solely determine what a team can accomplish in future sprints. Some teams view this number as sheer complexity of the task. Others view this number as a combination of complexity and effort. The beauty of agile is each team decides how exactly they want to interpret this number. That’s an internal implementation of the team. For the sake of this exercise, we will view this number as relative complexity of a task at hand, which somewhat is related to effort assuming no external factors.
For our Rabbit Hat Mechanics agile team, let’s model a sprint as follows:
y = ƒ(c_1x_1,c_2x_2,c_3x_3, c_4x_4) where
- x_1 = previous points from last sprint
- x_2 = number of staff on holidays or sick
- x_3 = team familiarity with tooling and working environment
- x_4 = environmental stability
and c_1 to c_4 and constants.
I have modeled a sprint using four possibly independent variables but each team is different and some could possibly be modeled using more than four variables. Some could be
- x_5 = capacity of team leads
- x_6 = quality of scrum master/manager
- x_7 = number of company meetings
- x_8 = quality of requirements
This is multi-variable equation with several input parameters one of which is the previous sprint velocity. The point here is, since human resource management is never an absolute science, is more of a nonlinear and possibly nth order differential equation, one can appreciate that the previous sprint velocity is just one factor, albeit a heavy one, which should go into the equation while determining what the team can deliver.
When folks advocate for the fact that the previous sprint velocity of, say x_1, should be the only variable or determinant to be considered when determining the next sprint throughput, what they are effectively saying is that the above equation reduces to a linear one in the form
y = ƒ (x_1)
and from my experience dealing with people and teams, this is simply not the case. Humans are not robots and even with robots, there is usually a discrepancy between theory and reality and that x_1 = 40 points from the last sprint will not necessarily be the same number of points a robot can accomplish this sprint taking into consideration external factors.
So, I am saying treat the sprint velocity for what it is:
A parameter, and not the only parameter, which you should take into consideration when determining the team’s potential through put for next sprint.