Iterative, incremental delivery is critical to a successful Agile team. Without it, Agile is really just window dressing.
What is iterative, incremental delivery?
Iterative means that a team delivers work frequently rather than all at once. Incremental means that they deliver it in small packets of end-to-end functionality.
Here are five examples that illustrate the concept of iterative, incremental delivery. No example is perfect. Let me know what you think in the comments and if you have another way to explain these concepts.
The mile-long peanut butter and jelly sandwich
One way to describe iterative, incremental delivery is to imagine a team whose goal is to deliver a mine-long peanut butter and jelly sandwich.
A team using a more traditional approach like waterfall might try to deliver the sandwich in one - very large - deliverable. They might break up the job by using separate teams to focus on making the bread, jelly, peanut butter, and assembly.
A team using incremental, iterative delivery would supply the sandwich in smaller “bites.” The team would all work together to deliver each bite.
Is this a good example?
The strength of this example is that it nicely demonstrates how work is cut differently with an iterative, incremental approach. The weakness of this example is that it is impractical. When have YOU ever had to deliver a mile-long peanut butter and jelly sandwich?
A software development lifecycle perspective
Another way to discuss iterative, incremental delivery is to look at it from the software development life cycle (SDLC) perspective. The diagram below shows the SDLC for a typical waterfall approach compared to Agile product development. As you can see, Agile teams might perform all of the standard steps in the SDLC, but they might do this work in smaller pieces.
Is this a good example?
The strength of this example is that it speaks well to folks who are involved in software development. Its weakness is that this example may not translate well to teams who are not supporting a software-based product. It does not fully address the concept of incremental delivery or illustrate that the work must be fully usable and potentially releasable.
The hexagon
Another way to discuss iterative, incremental delivery is to generalize the product by depicting it as a simple hexagon. The image below shows an individual trying to deliver a hexagon in one deliverable. The second part of the image shows an individual using incremental delivery to deliver a hexagon. Each of the smaller deliveries is a complete, usable hexagon.
Is this a good example?
The strength of this example is that it is easy to understand. It clearly demonstrates the concept of delivering value in smaller pieces. It also speaks to the idea of providing end-to-end functionality (because the deliveries are small hexagons). The weakness of this example is that some individuals may not understand the message of the small hexagons being end-to-end deliveries because of how they are stacked in the image.