This is often a question that comes up on a new project. Folks who have been doing iterative development for a while rarely want more than 2 weeks and often only 1 week per iteration. Yet folks new to the game push for more time; 4 weeks per iteration is quite common. The most common reason that I hear for wanting longer iterations is that 1 or 2 week iterations means that too much time is spent in showcases and retrospectives. Which leads to an interesting question, what is the goal of an iteration?
This is one of those questions that if you ask 10 people you will probably get 11 answers. For me, an iteration is nothing more than a heartbeat for the progress of the project. I’m not worried which stories we complete in which iteration, I’m not worried if we have a showcase or a retrospective. What I want from iterations is a frequent measure of our progress towards our end goal, releasing software that delights our customer. Of course release planning, retrospectives and showcases are an important part of delivering software that makes our customer happy; they may just be needed at a different frequency to your heartbeat of progress.
Once we separate the frequency of capturing your heartbeat from that of your planning meeting, showcase and retrospective, I find that the willingness to have shorter iterations is much greater. Great… but now we have four questions to answer:
- How often should we plan what should be worked on next?
- How often should we have a showcase?
- How often should we have a retrospective?
- How long should our iteration be?
My first project with ThoughtWorks 12 years ago had 2 day planning meetings. Talk about waste! That was two days of development that we lost out on, but we were new to iterative development and were learning! Now I never see a project that has a two day planning meeting, but I do see projects that have half a day or two hour planning meetings. That is still a lot of time away from development.
Rather than having a planning meeting every iteration, why not pick the next most important thing to work on when you are just about* ready to need something new to work on? This allows us to be flexible when priorities change and avoid having the whole team locked up in a room for 2 hours. Plan continulously when needed rather than on a fixed schedule.
*Of course we want to make sure people are not sitting idle, so you need to find out what just about means for your team.
Let’s take the showcase next. Ideally as often as you can! Why wait a week or two weeks, if you have something that is ready to be seen by your stakeholder, pull her over to your desk and show it. Better yet, show it while it is still in progress and then again when it is finished. Frequent feedback cycles reduce our chance of waste. For showcases to a wider set of stakeholders with busy diaries, you need to find a regular time that you will have sufficient work done to make the showcase worth attending but not so infrequent that you are having to make numerous changes based on their feedback.
Retrospectives are easier, they are for the team. You don’t need to worry about busy stakeholders who are trying to support your project and do their day job at the same time. On well functioning teams you have constant retrospectives. The discussions on the way to lunch or at the pub after work are a great time to look at how we can improve. Unfortunately, it is difficult for everyone to be involved in those conversations and a formal retrospective is a great tool. Look at how your team is functioning and the value you are getting from the retro. Have them as often as you can as long as the value is still outweighing the cost.
Which brings us back to our original question. How long should your iteration be? The explanation that I’ve used recently is “frequent enough to avoid missing crucial information but to not cause huge fluctuation in points from iteration to iteration”. Too frequent and we lose the ability to predict what we will achieve in the next iteration. Too infrequent and we can realise too late that we are off course.
Stop thinking that an Iteration has to be made up of a pre-definied set of stories, have a planning meeting, showcase and retrospective. Measure at the right frequency, plan continuously, showcase when you have something to show and retrospect as needed. All four activities are valuable, maximise the value they bring to delighting your customer by doing them at the frequency that is right for each activity.