Sprints or Iterations?

In Agile terminology everyone will I am sure be very family with the term ‘sprint’. Even those who know very little about the subject will tend to say, Agile, yes you work in sprints. I know this might be seen as just semantics, but is sprint the right word to be using? Does this accurately describe what we are tying to do?

Out of the context of Agile sprint means to ‘run at speed over a short distance’ . But surely this isn’t what we are trying to achieve with our software deliveries is it? Yes it would be nice to run flat out for the life of the project, but we humans are just not built for that, it’s just not possible to do. Software development is a marathon and you don’t run a marathon by sprinting, you complete a marathon by running at a sustainable pace for the entire duration (ok, maybe you seed up in the last 100 yards when there is a crowd to play to and a finish line in sight).

Running at full speed is only achievable in the short term, but then think about the recovery period, after running you need to rest, so asking a team run flat out in sprint 1, will most likely lead to them going slower in sprint 2 while they recover. This helps no-one. The team are tired and less productive, velocity is now skewed, up one sprint down the next, which then affects the ability to accurately plan releases.

Sprint: run at speed over a short distance – Is this really what we want to do?

My first ‘Sprint’

I recall (a good few years ago now) one of the first ‘sprints’ I was involved in, we committed to a sprint containing a number of stories with the mindset we must deliver all of them, inevitably we were overly optimistic about what we could achieve and as the sprint neared its end, we worked harder, faster, longer hours and basically rushed to get the last story done. Afterwards the team gave out a huge sigh of relief and was suitably worn out. Guess what – next day was sprint planning and we did the whole thing again! This clearly was not and is not a sustainable way to work, so ‘sprinting’ is therefore not something we really want to do.

There are no rest periods in Agile, so sprinting is not the way to go

Iterations

If sprint is not an accurate description, then what is? (header kinda gave it away). Iterations. Teams work in iterations to delivery User Stories and incremental versions of the software. This seems to imply a more sustainable way of working, we are not rushing or running, but instead delivering a new iteration of the software after each prescribed period (i.e 2 weeks).

Iteration – The repetition of a process / a new version of a piece of software – This sounds more like what we want to do right?

The aim of course is for a sustainable, measurable pace. Once a team has a stable velocity, its much easier to plan software releases, and answer the age old question – when will it be ready! We can reasonably say how many stories can be done per iteration, making the process much more consistent and predictable.

At the end of each iteration is a new version of the software. Ok. this is the same concept as a sprint, but I think the word better fits the actions. Software engineers are constantly reminded to use meaningful and descriptive names for variables, and I think the word Iteration indicates the intent more than the word sprint.

Credits

This post was inspired by the book ‘Clean Agile’, by Robert C. Martin.