Incremental development refers to the rollout of useful/valuable changes in a product or service one (or a small batch) at a time.
Teams employing an incremental development approach will deliver a new or improved capability and then ask the question: What shall we add to this product next?
Iterative development refers to repeating cycles of holistic adaption for a product or service.
Here teams ask the question: How might we improve this product?
Iterative/incremental development combines the two strategies above, describing an approach where teams add to a product's capabilities while also improving its current capabilities, reach and appeal, thus increasing the overall product's utility and value.
Agile organisations use a combination of iterative and incremental development and delivery as a strategy for generating rapid learning, customer value and business value early and often.
This approach sees teams use short cycles (often timeboxed, such as 2 weeks) in which they explore their options, prioritise and deliver end-to-end “slices” of valuable working products and services incrementally rather than in a “big batch” over a longer timeframe. These slices enable the release of value earlier, and along the way show working, demonstrable progress toward something which can be released to customers.
Sometimes the slices address improvements to existing aspects of the product or service, often revisiting features and ares of the product previously considered “done”. This describes a truly iterative approach to product development, where we look holistically at what we are delivering and see where most value can be had in our next cycle, rather than purely adding new capability. Without iterating on the product, the approach is purely incremental.
In order to do both effectively, agile teams employ some key principles and techniques: