XP planning addresses two key questions in software development: predicting
what will be accomplished by the due date, and determining what to do next. The
emphasis is on steering the project -- which is quite straightforward -- rather
than on exact prediction of what will be needed and how long it will take --
which is quite difficult. There are two key planning steps in XP, addressing
these two questions:
Release Planning is a practice where the Customer presents the desired
features to the programmers, and the programmers estimate their difficulty. With
the cost estimates in hand, and with knowledge of the importance of the
features, the Customer lays out a plan for the project. Initial release plans
are necessarily imprecise: neither the priorities nor the estimates are truly
solid, and until the team begins to work, we won't know just how fast they will
go. Even the first release plan is accurate enough for decision making, however,
and XP teams revise the release plan regularly.
Iteration Planning is the practice whereby the team is given direction
every couple of weeks. XP teams build software in two-week "iterations",
delivering running useful software at the end of each iteration. During
Iteration Planning, the Customer presents the features desired for the next two
weeks. The programmers break them down into tasks, and estimate their cost (at a
finer level of detail than in Release Planning). Based on the amount of work
accomplished in the previous iteration, the team signs up for what will be
undertaken in the current iteration.
These planning steps are very simple, yet they provide very good information
and excellent steering control in the hands of the Customer. Every couple of
weeks, the amount of progress is entirely visible. There is no "ninety percent
done" in XP: a feature story was completed, or it was not. This focus on
visibility results in a nice little paradox: on the one hand, with so much
visibility, the Customer is in a position to cancel the project if progress is
not sufficient. On the other hand, progress is so visible, and the ability to
decide what will be done next is so complete, that XP projects tend to deliver
more of what is needed, with less pressure and stress.