Saturday, April 08, 2006

Agile adaptive planning and fast delivery sample

After seeing that there are very many people that find it hard to see how agile handles adaptive planning, letting the customer not know from the beginning what he wants, I wanted to develop a mini sample to show these concepts in practice.

A small agile process practice sample

Let’s consider that we have a new client who wants a new software product to manage and track his sales and customers. He wants the system to go live in 2 months. We meet and establish what is required, then plan to meet the deadline.

After the first meetings we come up with the following feature list, that he thinks he wants, that is afterwards estimated by us:

  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)

  4. Sales reports (3p)

  5. Client activity management (3p)

  6. User management (2p)

  7. Sales workflow (3p)

Now together with the customer, we make the first plan, dividing the work in two iterations:

Iteration #1: 10 p
  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)
Iteration #2: 11p
  1. Sales reports (3p)

  2. Client activity management (3p)

  3. User management (2p)

  4. Sales workflow (3p)

After we have a plan to deliver the 21 points features in 2 months, we start working, by starting on the first iteration, at the end of which we deliver features 1,2 and 3.

We now show the customer the first 3 features implemented, but he suddenly realizes that he needs more, then what was planned for the release. We start by adding what he wants to the list of features, which now becomes, after each of the new features are being estimated.

  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)

  4. Sales reports (3p)

  5. Client activity management (3p)

  6. User management (2p)

  7. Sales workflow (3p)

  8. Activity calendar (3p)

  9. Forecast reports (3p)

  10. Document templates and document merging (3p)

With the client we realize we cannot deliver all in the 2 months term, but we decide that we make a delivery after the two months and we plan another delivery after that will include other features that will make the system more compete. The new plan looks like:

Release #1: 2 months
Iteration #1: 10p
  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)
Iteration #2: 11p
  1. Sales reports (3p)

  2. Client activity management (3p)

  3. User management (2p)

  4. Forecast reports (3p)
Release #2
Iteration #3: 9p
  1. Sales workflow (3p)

  2. Activity calendar (3p)

  3. Document templates and document merging (3p)

As you can see, the customer considered that is more important to have the forecast reports in the first delivery so he moved the forecast report into the second iteration and the sales workflow to the 3rd iteration.

After the second iteration is over, we have the features 1-7 finished, in 2 1 month iterations, delivering on term what the customer wanted, and deploying it to be used by its end users.

At the beginning of the 3rd iteration, the customer realizes that he wants a few more things, and he would like to have the next delivery of the complete system, in another two months so he can fit his budget. He adds a few new features, having the following list now:

  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)

  4. Sales reports (3p)

  5. Client activity management (3p)

  6. User management (2p)

  7. Sales workflow (3p)

  8. Activity calendar (3p)

  9. Forecast reports (3p)

  10. Document templates and document merging (3p)

  11. Contact communication management (3p)

  12. Microsoft Outlook integration (2p)


The plan now becomes:

Release #1: 2 months
Iteration #1: 10p
  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)
Iteration #2: 11p
  1. Sales reports (3p)

  2. Client activity management (3p)

  3. User management (2p)

  4. Forecast reports (3p)
Release #2
Iteration #3: 9p
  1. Sales workflow (3p)

  2. Activity calendar (3p)

  3. Document templates and document merging (3p)
Iteration #4: 5p
  1. Contact communication management (3p)

  2. Microsoft outlook integration (2p)

After finishing and showing to the client the resulting product having now 10 features out of 12 implemented, he realizes that there is one more feature he’d like to have, and that can be implemented in the last iteration: sales processes. The list of feature becomes:

  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)

  4. Sales reports (3p)

  5. Client activity management (3p)

  6. User management (2p)

  7. Sales workflow (3p)

  8. Activity calendar (3p)

  9. Forecast reports (3p)

  10. Document templates and document merging (3p)

  11. Contact communication management (3p)

  12. Microsoft Outlook integration (2p)

  13. Sales Processes (5p)

And the updated plan:

Release #1: 2 months
Iteration #1: 10 p
  1. Client management (3p)

  2. Product management (3p)

  3. Sales leads management (4p)
Iteration #2: 11p
  1. Sales reports (3p)

  2. Client activity management (3p)

  3. User management (2p)

  4. Forecast reports (3p)
Release #2
Iteration #3 – 9p
  1. Sales workflow (3p)

  2. Activity calendar (3p)

  3. Document templates and document merging (3p)
Iteration #4 – 10p
  1. Contact communication management (3p)

  2. Microsoft outlook integration (2p)

  3. Sales processes (5p)

At the beginning of the 4th iteration the client says he’d like one more feature that is estimated by the team to be of 3 points. Adding that feature would mean not meeting the second release target, so after balancing the options he decides to drop it.

After the 4th iteration the final product is delivered. The sample above cannot show by any means how any project can be developed, but it shows the agile process at work, iteration by iteration, planning, adapting and delivering incrementally a product to the end customer.

The evolutive process of gathering the client requirements and a burn down chart, showing iteration by iteration the number of remaining features to be implemented would be like:



So after this very small sample do you think it could be useful for you?

2 comments:

Thiago said...

Why did you use about 10p for each iteration ?

Dan Bunea said...

Hi,

This is a very good point.

At first, I added in the article something about mesuring velocity. However, I had the feeling it made the reader focus on too many things at the same time so I removed it.

I considered the velocity of the team at 10.5 - 11 points, based on their previous experience. Maybe I should have explained my decision ...