Agile: The Iterative vs Incremental Debate
Shahan Mafuz
Manager - Program & Project Delivery | Strategic Planner | PRINCE2 Agile Practitioner | SAFe Agilist
A few weeks ago I acted as a silent observer in an impromptu debate on whether agile software development is iterative or not. In the red corner was the argument in favour of agile as an iterative method. In the blue corner was a different school of thought arguing how agile and iterative software development were ‘different’.
The diagram conundrum
Now to shed some light where the debate sprung from, it evolved from a choice between diagrams that were meant to depict agile software development. Both exhibits are presented below-
Figure 1
Figure 2
To get to the bottom of the matter let’s define iterative and incremental processes.
Defining Iterative
Going by prevalent definition an iterative process is one that makes progress through successive refinement. For example, a software development team builds an initial version of a system, knowing it is incomplete or lacking in some (perhaps many) aspects. The team then iteratively refines those areas until the product meets the requirements satisfactorily. With each iteration, the product is improved by adding of greater level of detail. Let’s say, for instance, search functionality was being developed. The initial search screen might only cater for simple text search. In second iteration, additional filters might be added and error handling may be added in a later iteration.
To break it down for those outside software development industries, let’s consider sculpting as an analogy. To create a master piece akin to Michelangelo's David, at first the maestro selects a stone of the right size. Next, he carves the general shape from the stone. At this point, the head or body can perhaps be distinguishable and it can be assumed that the final work will be of a human body instead of an object. Subsequently, the sculptor refines his work by adding detail. However, the sculptor is not likely to look on any given area of the sculpture as complete until the entire work is complete.
Defining Incremental
On the other hand, an incremental process is one in which software is built and delivered in portions. Each increment, represents a (near) complete subset of functionality. The increment can be either small or large. For example, on the small side, it can range from just a system’s login screen, to robust data display screens on the large side.
In the above, each incremental version of software is fully developed and tested. The usual expectation is that the work undertaken in an iteration will not require revision. Going back to the analogy of an sculptor while following an incremental process, he would choose one part of his work and focus solely on it until it’s completed. He may select small increments (such as a facial feature like the eyes or nose) or bigger increments (Such as arms or legs) and complete those entirely before moving onto another area. However, regardless of the size of the increment, the sculptor in this case would try to finish the work of a given increment as close to completion as he possibly can.
Agile have incremental as well as iterative characteristics. They are iterative in the sense that they plan for the work of one iteration to be improved upon in subsequent iterations. They are incremental since completed work is delivered throughout the project.
So, where’s the distinction?
To better understand the differences between iterative and incremental, let’s consider development of an e-commerce website iteratively but not incrementally. In order to do this, the team would build a small portions of every functional part of the site like user account management, search, ads, etc. The team would then revisit all parts and improve each of them over multiple iterations. In this purely iterative way, the entire site is getting a little better.
Now, consider developing the same site using a purely incremental, but non-iterative process. In this case, the team would build and perfect a functional area such as user account management prior to starting on another part of the site. They would then develop and perfect a second area, say search function, before proceeding to the third area. Each functional area would be completed with finer details before work for the next area was started.
To sum up…
Both iterative and incremental processes have their ‘place in the sun’. However, in the context of value delivered neither of them can possibly stand alone.
However, when the characteristics of these processes are integrated together, as they are with Agile, they can deliver great value.
For those curious: figure 2 was chosen while figure 1 would be a better representation