People talk a lot about “sprints” and “iterations” in an agile context. You might have heard those terms a bunch. If you’re not sure is the meaning of sprint or iteration, this article will clear it up. So you’ll know what it means in agile when people talk about a sprint vs an iteration. Let’s get straight into it!
Agile is a modern approach to software development. It is an alternative to the traditional “heavyweight” plan-driven approaches. Those are informed by project management, and are sometimes called “waterfall“.
Instead of splitting a project into big separate phases (“design”, followed by “build”, followed by “test”), agile is about working in small cycles. We want to try and deliver value to the customer at least once in each of those cycles.
So no big up-front planning or design phase. Instead, we plan and design in small chunks.
The sprint meaning in agile actually comes from a framework called Scrum. Which is the most popular and successful of all the agile frameworks. Most of the time people are doing agile software development, they are doing Scrum.
Sprints are core to the Scrum framework. In Scrum, a team works in a short repeatable “sprint”, or timebox. This is anywhere from one to four weeks. Most of the time, it is two weeks. But it can’t be less than one or more than four weeks.
And all sprints need to be the same timebox (i.e. sprint cadence). You can’t have one go for two weeks and then the for three and a half. And then back to two sprints.
The idea is that at regular short intervals, the team plans a small chunk of work, reviews and reflects on what they did. Then goes back and does it again.
Iteration is a more general term. It just means an instance of a repeated or repeatable process.
It is originally a computing idea. So you may have a for loop in a computer program. And each time it goes through the loop, that is one iteration.
Later the term was also used in an overall development context. And it was used both in and out of an agile context. You might have iterations in a Waterfall software project. For example, in an SIT (Systems Integration Testing) phase (which is a Waterfall thing), you might have test iterations. Each time you run through a suite of tests, that is one test iteration.
So a sprint is really a special case of an iteration. And exists in a particular framework of agile (the Scrum framework).
So if you are doing agile, it is important what framework you are using. If at all.
If you are doing Scrum, then you will be doing and talking about sprints. And sprints have some special rules, events and boundaries.
For example, each sprint must start with a Sprint Planning event. And end with a Sprint Review and Sprint Retrospective event.
Most other agile frameworks are based on some kind of iterations too. For example, in Extreme Programming, teams plan and work in iterations. These are one to three weeks long. They begin with an Iteration Planning meeting.
So you can see some similarities here between an XP iteration and a Scrum sprint. But there are also some differences. For example, sprints in Scrum can be up to four weeks long, but an XP iteration goes up to three weeks. Iterations in XP do not end in a Review or Retrospective event either.
So the rules around the different types of iterations vary between agile frameworks.
Some people also work in a Lean / Kanban system, with no sprints. Based on “one piece flow” and minimising Work in Progress. This has its own pros and cons compared to an iterative system.
A quick side note: sprint planning (Scrum) and iteration planning (XP) are different.
In sprint planning, developers pull product backlog items from the product backlog. In iteration planning, the customer chooses stories from the release plan.
In Scrum, the team estimates the whole work to complete a backlog item. While in iteration planning, each developer pulls a user story from the iteration plan and estimates time it will take them to do it.
In summary, sprints are the domain of Scrum, whereas iterations are a more general agile term. And each agile framework has terms and rules around the type of iteration it uses.
So hopefully you won’t mixed up between these terms any more! And you now understand the meaning of agile sprint vs iteration.
Do you have any questions or comments on this? Let me know in the comments – I will read and reply to every one!