As I've been contemplating moving agile throughout our entire organization here at Data Transfer Solutions, I've been considering the usefulness and effectiveness of an Iteration Zero. Many agile teams use what's known as Iteration Zero to put the necessary systems in place to enable the delivery of value to the customer. It's essentially the getting started iteration. It takes place before any development begins. I think Peter Schuh described Iteration Zero very well in his book Integrating Agile in the Real World. Peter says:
"An iteration zero does not deliver any functionality to the customer. Instead the project team focuses on the the simple processes that will be required for the adoption and use of most agile practices. From a management point of view iteration zero may include:
- Initial list of features identified and prioritized.
- Project planning mechanism identified and agreed upon.
- Identification of and agreement upon a team customer, essential stakeholders, and business users and the nature of iterative planning process, such as the time of planning meetings and the length of iterations."
Aside from the project management side of Iteration Zero, I think there can be a good case for the development team to engage in Iteration Zero as well. I think that as we switch between projects, we also tend to switch technologies or development platforms. To do so, development teams may need time to stand up a new database server because the new customer uses Oracle and the last customer needed SQL Server. Hopefully you have both running so you don't need to worry about things like this, but you get the point. Sometimes the development team needs some time to get things set up to support the project before they start delivering potentially shippable product increments each sprint. For a quick idea of what another agile team has done during Iteration Zero, check out Energized Work's post on their Iteration Zero.
I'd like to know your thoughts on Iteration Zero. Does your team use an Iteration Zero? If so, what kinds of tasks do they typically include? And most importantly, do you find them useful and effective in delivering value to your customers?