Incremental development slices work into small bite-sized pieces. These are called increments. Each increment builds on top of what has gone before. Fully functional modules grow bit-by-bit over time. Each evolution adds to preceding functionality.
Iterative development is the process of repeating and refining a cycle/way of working. This is called an iteration.
Upcoming FAQs LIVE events
Free interactive learning
13th January 2021
FAQs LIVE Special: How can you make processes and tools support individuals and interactions? In partnership with Targetprocess
20th January 2021
What are the roles in SAFe?
26th January 2021
What are the requirements in SAFe?
Visit our FAQs LIVE page for our full schedule of free webinars!
Consider a team building an e-commerce web site. The team might develop a small increment of working, yet unrefined, functionality and then iteratively refine that over time. They will then add more features until the functionality was considered satisfactory.
An iterative example:
- In the first iteration of a website check-out engine, payment with debit cards (a first increment) is implemented.
- The second iteration might produce an increment that supports payment by credit card.
- Finally, the third iteration might add an increment allowing payment via PayPal.
An incremental example:
- The first increment would be a thin slice through the entire system laying out the basic structure of the application.
- Subsequent increments would add the next thin layer to the system.
- The process repeats repeating until there is a fully functional end to end customer journey.
Outside of software development, the most common example used is that of an artist painting a picture.
If the picture was painted iteratively, but not incrementally, the artist might start with a sketch of the finished image (a prototype). Then the artist would iteratively add paint to the drawing over time. The artist would revisit the picture, changing it until he was happy with the finished image.
Now, consider painting the same picture but in a purely incremental, but not iterative way. The artist would first perfect one part of the picture before starting on any other part. Once he was happy with one section, he would only then start on the next, and so on. The artist perfects each element of the painting before the next one begins.
Example: house building
If a house building were incremental, you would construct one room entirely – including furniture, paint and carpet. Then create the next room in the same fashion until you had a finished house.
Due to their complementary characteristics, incremental and iterative development are most effective when used together, for example as part of agile frameworks, most notably Scrum.
The Scrum guide references iterative and incremental:
“Scrum employs an iterative, incremental approach to optimise predictability and control risk“, “Scrum Teams deliver products iteratively and incrementally, maximising opportunities for feedback. Incremental deliveries of “Done” product ensure a potentially useful version of a working product is always available”.
Scrum is iterative in that work is planned for one iteration and then improved upon in subsequent iterations, and incremental as completed work is delivered consistently throughout the project.
Recommended Training Courses
- Check out our public training course schedule
- Learn more about our certified SAFe training courses we offer