Tuesday, November 10, 2009

Making Release prediction on an Agile Project?

Let me show a very easy way of how a release can be predicted using an example.

Let's say, for a particular product under development, there are 5 scrum teams. Each team has special expertise and they contribute to a very specific area of the product i.e. UI, Infra, Security, etc. For this exercise also assume there are 20 epics that need to be developed before the product can be shipped to the customers. The management is trying to figure out a tentative schedule that can be published to the customers with enough confidence. How do we do it? The simple answer is using "Velocity".

And here are the steps to achieve it

Form a core team with subject matter experts from each of the 5 scrum teams, include the product owners and the Architects. This core team should breakdown each epic into sizeable stories that can be estimated.

These stories should then be assigned to respective teams. The output of this exercise might look like this.

Team A = 30 stories
Team B = 20 stories
Team C = 25 stories
Team D = 40 stories
Team E = 35 stories

The next step is to ask teams to do some high level story point estimation using planning poker for their assigned stories. Note that these estimations might not be very accurate, as most of these stories might not be granular enough to start work on. Let the team take a stab using their judgment and come up with estimations for each stories. Add story points for all the stories for each team and come up with an aggregate number for the overall effort. The output of this exercise might look like this.

Team A = 30 stories, 200 story points
Team B = 20 stories, 300 story points
Team C = 25 stories, 350 story points
Team D = 40 stories, 150 story points
Team E = 35 stories, 400 story points

You also need to determine the average velocity at which each team delivers business value. It sounds simple, but based on my experience, it can take as many as 6 to 7 iterations to predict with confidence what an average velocity of a team is. Now let's say these teams have been together for a while and are self-organized and their average velocity might look like this.

Team A = 20
Team B = 30
Team C = 25
Team D = 10
Team E = 25

Based on these numbers, you can easily calculate how many sprints the team will take to deliver the stories in their backlog. Here's the output after calculation

Team A = 30 stories, 200 story points, 200/20 = 10 iterations
Team B = 20 stories, 300 story points, 300/30 = 10 iterations
Team C = 25 stories, 350 story points, 350/25 = 14 iterations
Team D = 40 stories, 150 story points, 150/10 = 15 iterations
Team E = 35 stories, 400 story points, 400/25 = 16 iterations

Based on this calculation, you can easily predict that it will most likely take 16 iterations to have a release candidate. And if each iteration is of 2 weeks, it will take approximately 8 months to have a potential release.

0 comments:

Post a Comment