Is Scrum incremental or iterative?
Sprints are iterations, yet in every Sprint we deliver an Increment. So, is it incremental or iterative?
Let’s look at the difference between these two approaches first.
In an incremental approach, the development process is broken down into small, manageable portions called Increments. Each Increment is a working slice of the system.
While an Increment may not deliver the full functionality of the end-system, it delivers some functionality that can potentially be used by end-users while the rest of the system is built. End-users don’t have to wait for the full project to be completed before they can use the system.
An incremental approach starts with a clear end-state in mind. Typically, the system is scoped out first, and then it’s delivered one increment at a time. This approach allows end-users to start using a (partially built) system without waiting for the full project to be completed.
In an iterative approach, the development of a new system goes through repeated cycles of refinement. In an iterative approach, the work of one iteration is improved upon in subsequent iterations.
After one iteration, the end result of the work is presented to the end-users and their feedback helps to decide what to do next. The plan for the system is refined, and a new iteration starts with a new goal in mind.
In an iterative approach, the end-state of the system is not known upfront. The system is refined through multiple iterations. This approach allows for experimentation and refinement of ideas.
Let’s imagine that we want to make a delicious hamburger sandwich. We could approach this task in two different ways.
INCREMENTAL: If we know upfront what kind of hamburger sandwich we want, which toppings, cooking level, etc. we can define the end-state and use an incremental approach to build the hamburger sandwich. Each Increment is potentially usable by the users (they may eat it, although many will prefer waiting for the full sandwich :-).
The incremental approach answers the question: “How do we make a hamburger sandwich?”
ITERATIVE: Instead, if we are trying to figure out how to create a sandwich with a hamburger, we may go through repeated iterations and try out different ideas. In each iteration we build a possible solution for the sandwich, get feedback, and then decide what to build in the next iteration.
The iterative approach answers the question: “How might we make a sandwich with a hamburger?”
Let’s go back to Scrum and the opening question: Scrum is both an incremental and an iterative approach.
Adopting both approaches together allows a team to deliver functionality incrementally to the end-users while at the same time experimenting and refining solutions. Scrum provides the flexibility of both approaches.