Friday, September 25, 2015

Deliver soon and frequently - an Agile approach to planning

My family and I, live in a minuscule Italian country town. We are lucky enough to inhabit a house surrounded by a private garden, in which our kids can safely play. Our sons are seven and four years old. 

As a side effect, my house is often crowded with children from April to October. In some particular occasion, as birthdays, I have personally counted more than 20 children playing around.

The “Sandwich” project

So, let us imagine preparing sandwiches for 20 kids, following a waterfall approach
  • Ask each child what kind of sandwich he/she would prefer (initiation - requirements gathering).
  • Put all the needed ingredients on the kitchen table (planning).
  • Lay on the table 20 slices of bread (executing).
  • Cover the bread slices with the selected sausages (executing).
  • Add the selected type of ham (executing).
  • Add to each sandwich a cheese’s slice (executing).
  • Complete the sandwiches with the upper slices of bread (executing).
  • Deliver the sandwiches to your stakeholders (closing - delivery).


The kind of approach described in the previous paragraph is probably the most efficient and organized, to manage the “Sandwich” project.

What is wrong?

If you think that this could work, you probably have never had to deal with third-grade kids. At least not with 20 of them in a bunch. 

When you are ready to enter the executing phase, requirements will start to change. Kids will start thinking that they would prefer other types of sandwich, instead of the one they chose; this typically goes on to the delivery phase.

In addition, as soon as you start to deliver your outputs (the sandwiches) to your stakeholder (the kids), they will begin complaining about the sandwich they chose.
Probably a great part of them will begin asking for the same kind of sandwiches selected by their best friends.
It is a kind of nightmare. 

You will be bound to deal continuously with scraps, rework, out of specifications…and to eat yourself for dinner a good share of your products.

How can agile help?

The answer is easy. 
Start delivering soon, and deliver frequently. 

The fast delivery of finished outputs, at the end of short execution cycles, is a disruptive characteristic of agile project management, as we have seen in an old post. The fast and continuous delivery approach can easily cope with projects, or work packages, in which requirements are not clear or bound to change frequently.

The key here is not to plan recursively; the key is to plan recursively and to deliver, at the end of each cycle, completed outputs, or partial outputs with newly completed functionalities. The focus here is to have, at the end of each execution period, something ready to be immediately delivered to production.

The “Sandwich” project in an agile framework




As an example, let us add a little agility to the “Sandwich” project
  • Ask each kid which kind of sandwich he/she would prefer (initiation - requirements gathering).
  • Put all the needed ingredients on the kitchen table (planning).
  • Start the first delivery cycle
    • Lay on the table 1 slices of bread (executing).
    • Cover the bread slice with the selected sausage (executing).
    • Add the selected type of ham (executing).
    • Add to the sandwich a cheese’s slice (executing).
    • Complete the sandwich with the upper slices of bread (executing).
    • Deliver the sandwich to your stakeholder (delivery).
  • Listen to feedbacks (planning).
  • Start a new delivery cycle. 

This approach may be a little more time consuming, but in an environment plagued by uncertainty and requirements changes, will deliver the maximum benefits, minimizing the wastes.



Licenza Creative Commons
Quest' opera รจ distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 3.0 Unported.