Today I want to discuss synchronized iterations and why they work best on multi-team projects. Managing dependencies among multiple teams is a difficult agile project management challenge.
On my first Scrum project, we started with only one team. That project soon grew to three teams, with the typical dependencies between them. I quickly arrived at what I thought would be a good way to manage those dependencies. I would stagger the iteration start dates by a week. The idea was that when a team went to start its iteration it would know the stories one of the other teams had recently committed to and which stories the other team was likely to finish. Well, that part of my plan did work out well. But, overall, staggering the iteration start dates was a horrible idea.
The biggest flaw in overlapping iterations is that there is never a time (except the end of the project) when all teams are done. One or more teams are always partway into an iteration. Some are planning a new iteration, others just planned a week ago, and still more teams will plan next week. This makes it difficult to give the full system to a customer for feedback or to an operations group for deployment.
A better idea is to have synchronized iterations, where all iterations end within a day or two of each other. Notice that all iterations do not necessarily need to end on exactly the same day. It is acceptable on a large project to have iteration that end over a two- or three-day period. In fact, there can be advantages to doing this. Allowing iterations to end over a two- or three-day period can make it easier for someone on multiple teams to attend all the review and planning meetings expected of someone on multiple teams. Additionally, it has the advantage in many cases of better accommodating remote team members who may travel into town for these meetings. A remote team member who is on multiple teams will find it easier to justify the travel time and expense if she can participate fully in each of her teams’ meetings.
Having synchronized iterations also does not mean that all teams must work in iterations of the same length. A project with multiple teams can accommodate different iteration lengths through the use of nested iterations. The most common use of nested iteration is when the various teams on the project cannot agree on a common iteration length, with some wanting two-week iterations and others wanting four-week iterations.
Don't be tempted to overlap iterations. Instead, on multiteam projects, synchronize iterations for maximum effectiveness. More on sprint planning and scaling Scrum can be found in Succeeding with Agile.