Currently most agile development teams seem to settle naturally and comfortably with an iteration length between 1 and 4 weeks. Iterations longer than 4 weeks seem like a lifetime and it’s easy to lose any development rhythm because the end of the iteration is too far away from the start.
Balancing considerations
When deciding an iteration length you need to balance the following:
- How long the customer can go without changing his mind or having to react to changing business circumstances and priorities.
- How long the customer is willing to wait before something valuable is delivered. Visibility is important and slicing stories vertically and developing the functionality as successive refinements delivers tangible value progressively. Also, shorter iterations provide more regular feedback.
- How long the development team needs to complete a consistent amount of stories with a given quality of implementation. Obviously a team comprising developers with advanced skills and an ability to work together effectively is able to sustain pace and produce more in less time, while maintaining quality.
1 to 4 weeks is a unit of planning (when using adaptive planning techniques) that is large enough for the developers to deliver something valuable to the customer, and small enough for the customer to give regular feedback. The success of iterations, 1 to 4 weeks in length, depends greatly on the team’s ability to represent required functionality as stories that are typically no more than a few days. You want to deliver completed stories within an iteration so that they count towards velocity, so the stories must fit within an iteration. It’s also easier to disaggregate a smaller story into tasks, which can then be estimated with less imprecision.
Don’t adjust the iteration length to suit varying releases
The goal is to settle on a fixed iteration length as soon as possible. Do not adjust the iteration length on an iteration-by-iteration basis. Doing so will destroy any chance of attaining a development rhythm which delivers completed software in a repeatable fashion.
1 Comment
This is a useful topic and tackles a challenge that faces many of the projects that often struggle with introducing iterative and agile techniques.
From my experience, some signs that your iteration length isn't appropriate are the following:
- missed demos
- 'sine wave' velocity from one iteration to the next
- business sponsors struggling with how iterations are 'useful'
I put some similar ideas on my blog entry around the same topic, http://bryancampbell.com/blog2-mt/mt-tb.fcgi/4