Tuesday, October 9, 2007

Iteration Planning Meeting and Story Writing

One of the most important (possibly the most important) part of iterative development is the Iteration Planning Meeting (IPM) or Iteration Kick Off. If you do not have a well thought out IPM the whole iteration suffers. The IPM is most significant for the development team, it provides scope and focus where it is needed the most, at the story level. As a guideline, most agile stories should be well tasked out at the end of the IPM and have a 2 - 3 day duration.

To have an effective Iteration Planning Meeting (IPM) the possible stories that will go into the new iteration need to be well written before the iteration starts from both a business and technical level. This means some time must be devoted to story writing and scoping by the "development" team.
Some would argue that you scope out the story and tasks during the IPM as a group. That all sounds great, but in reality is does not work. Try to get 4 - 6 developers who might not understand the component or code to estimate and task out story that they have just read or thought about? The estimates and tasks will be of poor quality, which will result in story carry over or dropped scope.
If all the developers really know the code and completely understand the story then it is possible to get good estimates and tasks during an IPM, but again the developers are reading the story for the first time, you are still going to get lower quality estimates and tasks.

So, how do you improve this process. Over the last three years and three projects I have found the following to work well at the development team level:
The day before the next iteration, the development team spends about 1 to 2 hours to scope out the possible stories for the next iteration and updates the story card with a note or attachment providing the following:

- High level technical approach
- Required new modules
- Identity components that require updates
- Technical Risks
- List of tasks for the story with initial estimates

While scoping out the story, business will be engaged as required. The Iteration Planning Manager will be engaged if the story is too big or small and needs to be adjusted.
This activity is usually time-boxed to a few hours and spread across the team if possible. For example, give each developer one story or have a few developers work on a group of stories. Most importantly, there is NO meeting for this, this is done by the developers with whatever resources they need.
Once this is done, the IPM would have the following agenda:

- Bring up a story
- Developer who scoped it out would give a brief overview of the technical approach and hence the tasks listed.
- The team decides if the tasks are appropriate and the estimates realistic
- The team add/deletes/adjusts the tasks as required.

This approach provides the development team and hence management with a higher level of confidence of the deliverables for the iteration.

Are there other approaches or ideas that will help?