Sunday, April 4, 2010

Determing Velocity

Agile Estimating and PlanningIn his book Agile Estimating and Planning, Mike Cohn explains that there are 3 ways to determine a team’s velocity:

1. Observation: Run a couple of iterations and observe the team’s actual velocity.

2. Historical data: Use historical data from previously run similar projects with the same team.

3. Forecasting: Estimate the team’s velocity by following these steps:
  • a. Determine total hours available per iteration. Assuming a 2 week iteration then there are 80 hours per iteration (8 hours/day * 10 calendar days = 80 hours). For a 6 member team this becomes 6*80=480 ideal man hours.
  • b. Assume a focus factor of 50%. This takes into account time spent in meetings, sending emails, answering phone calls, preparing for presentations or demos, etc... 480/2=240 hours.
  • c. From the product backlog, pick stories of various sizes (2, 3, 5, 8) and expand them into tasks. In this case it is not necessary to pick stories based on priority. Instead try to find a representative set of stories (different complexity and varied topics.)
  • d. Estimate the tasks and repeat until you have enough tasks to fill the team’s capacity of 240 hours.
  • e. The team’s forecast velocity is the sum of the selected story points.

Your 1st option should always be to use observation. However, if you do not have the time to run a couple of iterations, then choose historical or forecast velocity but remember to always switch to the actual observed velocity after completing a couple of iterations.