Friday, March 20, 2009

The team acceleration concept

Continuing with the high school physics formulae, I turned my attention from the average velocity formula to the final velocity and acceleration formula.

I experimented the acceleration formula on the Agile project I was working on at the time: the sample project. I applied the acceleration formula on the sample project. The application of the acceleration formula on the sample project—and agile context--helped my team during the IPM (Iteration Planning Meeting). The details follow in this blog entry.

Team acceleration

From the physics high school formula explanation:
Final Velocity and acceleration: the final velocity V of an object which starts with velocity u and then accelerates at constant acceleration a for a period of time (t) is V = u + a.t"
And while relating physics high school formulae to the Agile development practices, I came up with the following parallel:

Final Velocity and acceleration (for Agile): the final velocity V of an team which starts with velocity u and then accelerates at constant acceleration a for a sequence of iterations (i) is V = u + a.i

Team acceleration is the change rate in the team velocity. Team acceleration is especially useful for the calculation of expected velocities for teams in early stages, helping them analyze and predict velocity variations.

In Agile terms, the final velocity and acceleration formula reads as:
V = u + a.i, where:
  • V is the velocity for the final iteration (final with respect to the context you are using the formula for)
  • u is the velocity for the initial iteration (initial with respect to the context you are using the formula for)
  • a is the team acceleration (rate of change in the velocity, from the initial to the final velocities)
  • i is the number of iterations (from the initial to the final iteration)

The sample project

The table below shows the velocity data for the sample project.

Iteration Velocity
1 5 story points
2 10 story points
3 How many points to sign up for?
The team was completing Iteration 2. The velocity from Iteration 1 to Iteration 2 was significantly different. Iteration 1 velocity was 5 story points and Iteration 2 velocity was 10 story points. The team had to decide the number of story points to sign up for the next Iteration, Iteration 3.

Exercise 1:

What is the team acceleration from iteration 1 to iteration 2 in the sample project?

Solution
In this case, considering the final iteration is Iteration 2 and the initial iteration is Iteration 1:
  • the velocity in Iteration 1 is 5 sp/it; u = 5 sp/it
  • the velocity in Iteration 2 is 10 sp/it; V = 10 sp/it
  • the number of iterations from iteration 1 and iteration 2 is 1; i = 1 it
Applying the formula (V = u + a.i):
10sp/it = 5 sp/it + a.1it
a = (10sp/it - 5 sp/it) / 1it
a = 5 sp/it2

Answer: the team acceleration from iteration 1 to iteration 2 is 5sp/it2.

Exercise 2:

In the sample project, if the team keeps constant acceleration for the first 3 iterations, what is the expected velocity for Iteration 3?


Solution

In this case, considering the final iteration is Iteration 3 and the initial iteration is Iteration 1:
  • the velocity in Iteration 1 is 5 sp/it (sample project table); u = 5 sp/it
  • the number of iterations from iteration 1 to iteration 3 is 2; i = 2 it
  • the team acceleration (as calculated in Exercise 1) is 5sp/it2; a = 5sp/it2
Applying the formula (V = u + a.i):
V = 5 sp/it + 5 sp/it2.2 it
V = 15 sp/it
Answer: If the team acceleration remains constant at 5 sp/it2, the team velocity for Iteration 3 will be 15 sp/it.

Planning the next Iteration

The team in the sample project was about to go for the Iteration 3 IPM. We had to decide how many story points to sign up for. For making this decision I calculated the average velocity, yesterday’s weather and the velocity based in a constant team acceleration.

Average Velocity

Average velocity is one way to go about how much you think the team will accomplish in the next iteration. Average velocity is very useful for agile team planning activities such as iteration and release planning.

From the sample project:
Average velocity = (5 sp/it + 10sp/it)/2 = 7.5 sp/it; therefore the team should plan for 7.5 points for Iteration 3.

Yesterday’s weather

I have worked with teams that used yesterday’s weather. The sample project iteration 2 velocity was 10sp/it; therefore the team should plan for 10 story points for Iteration 3.

Constant team acceleration

Considering the team acceleration to remain constant in iterations 1, 2 and 3 (calculated in Exercise 1, a = 5 sp/it2), the team would have a velocity of 15 story points in Iteration 3 (calculated in Exercise 2, V = 15 sp/it); therefore the team should sign up for 15 story points for Iteration 3.


From theory to practive

But, how many story points did the team (from the sample project) sign up for during the Iteration 3 IPM?

12 story points.

Yes, 12 story points! And 12 is not any of the numbers calculated before (average velocity, yesterday’s weather or constant team acceleration). Basically Agile is about adapting; Agile is not an exact science (like physics). I was having fun with the formulae, and I even came up with an interesting formula and concept that I might use again: team acceleration.

I found the team acceleration to be as useful as any other projection number (such as average velocity). It was handy during the sample project IPM for Iteration 3. I find it especially useful for the first few IPMs of a team, for which the team velocity is still accelerating.

Back to the sample project (from theory to practice); how did the team decide to sign up for 12 story points?

During the Iteration 3 IPM, I wrote the following on the whiteboard:
Average velocity: 7.5 sp/it
Yesterday’s weather: 10 sp/it
Constant team acceleration: 15 sp/it
Then I briefly explained the velocity based in the constant acceleration (as the team acceleration was a new concept to the team), and asked: So, how many story points should we plan for our next iteration planning and why?

The team talked about the learning curve in the project, their confidence on the domain and the technology stack, the schedule for the next iteration with regard to leaves and holidays. Then the team decided: “We should sign up for 12 story points”.