How Iteration is Planned in Extreme Programming
In Extreme Programming, effort is broken down in terms of iterations. Iterations generally run from one to three weeks and are usually planned a few days to a week before they actually begin. The goal of Iteration Planning is to maximize the value that gets produced during an iteration, while also selecting an amount of work that can be comfortably and safely completed within the time allowed. Each iteration should contain a collection of user stories, infrastructure and tasks that support those stories, and the test cases that support them.
The Iteration Planning Meeting
Usually about a week before the iteration is scheduled to begin, the project manager, business owner, and a few key individuals (tech lead, business sponsor, etc.) gather to plan the next iteration. What happens in this meeting is usually fairly easy to understand, but it can take some finesse to get done.
If you are using extreme project management, then you’ve been collecting a series of user stories along the way. A user story, sometimes called a “use case,” describes a discrete action that we would like the user to be able to perform: “Upload a photo,” or “Run a month-end report” or “Approve a request for production” or something like that. It’s a story that describes how the users will interact with the software, and it needs to have one and only one outcome of success. That is, there needs to be a very clear decision about if it is working or not.
Along the project, you have been collecting these stories, and you should have a backlog of them that have not yet been delivered. As you are now in the iteration planning stage, you are now tasked with identifying which tasks will be addressed by the iteration that’s about to start. In general, there are two main priority factors: providing value and reducing risk. The goal of this meeting is to balance the two needs and select the list of stories you are going to deliver in the next one to three weeks. The outcome of this iteration planning meeting should be a prioritized list of what the project owner would like produced next.
Planning the Iteration
A key task to planning an iteration in extreme programming is what’s known as “signing up for work.” There will be–and should always be–more user stories than you have time to deliver. That is expected, and it’s a good thing. If you run out of user stories, you are probably best suited to ending the project rather than running down the tail of whatever value you can provide.
So, in your meeting, you’ve identified the user stories you want to deliver. Now, it’s time to plan the iteration itself. To do this, you need your senior delivery people, architects, tech team leads, QA leads, etc, to put estimates next to each piece of work. Some will be small, and some will be big; again, this is expected. Your job, as PM, is to now “sign up” or “accept” the amount of work that you feel can comfortably be delivered in the available time.
The key is to be delivering the highest priority items at all times. Ideally, it would be in strict order, but sometimes that isn’t possible. But you should minimize the amount of lower priority items you are delivering. The final step in the process is to select the stories you will be delivering and publish that list back to the business owner for ratification. Once the owner or owners agree, you are ready to start the iteration.
This is how an iteration is planned in extreme programming. It takes a combination of art and science. You, as project manager, need to determine what the top priority user stories are, and then determine how much capacity your team has for delivering them. Then, you take the list of “accepted” work back to the business and look for approval. Then you deliver. And in one to three weeks, you do it all over again.