A project’s primary purpose will remain constant—to produce the most valuable software for the customer. The customer’s values will change over time. Every iteration offers the chance to adjust the schedule to match those values. The iteration planning meeting brings the customer and developers together to reassess the project and to schedule the upcoming iteration. This meeting is customer driven. The customer sets priorities for the developers, choosing features to be implemented and delivered during the iteration.
The customer presents his desired features as story cards (see Chapter 11 in Part IV). Story cards communicate the customer’s specifications to the developers. The customer has decided what must be done. Developers then estimate how long it will take. In this sense, iteration planning is also developer driven. These discussions produce task cards (see Chapter 12 in Part IV), one for each step required to implement the story.
All stories should represent a few days worth of work at most. When first described, some stories may be too large or too difficult to estimate. Ask the customer to elaborate or to split one story into smaller stories. Over time, everyone will develop a sense for what makes a good story.
As the project progresses, business changes can affect pending stories. The customer should re-evaluate them as necessary. Tasks can also change if their stories change or if existing code can be reused for the story. ...