- Create a living functional specification. At the project's
outset, there will be a normal discovery period during which you and the developer will
define your Website's needs and compile a list of desired features and functions. This
will basically define what can be done in the three-week programming iterations. Start
by prioritizing the desired features and dedicating the first iteration to building the
foundation upon which the rest of the site will be constructed. Keep adding details
about operation and implementation to the original list of features and functions,
largely in response to developer questions (e.g. "What should this dialog box say?"
or "How many fields are there in the registration module?").
- Complete mission critical functionality first. Do a serious
prioritization of desired features, assuming that some things may never get completed.
Decide which five things absolutely have to get done and make it your mission to get
them into the three-week coding sessions as quickly as possible.
- Revisit project scope prior to each iteration. This is one of
the basic tenets of XP. In a process called "steering," the client and the developer
meet prior to the beginning of each iteration and work out what can be done during the
next three-week cycle. If these tasks are too ambitious for the time allotted, the
client must postpone selected jobs. This system always keeps the client in the loop and
allows you to manage everyone's expectations. There are no surprises in Extreme
- Expect to accomplish less, but achieve higher quality. Rapid
development is at an inherent disadvantage because it allows little time to complete a
project. By emphasizing the continual re-evaluation of scope to meet fixed deadlines,
as well as constantly applying rigorous unit and functional testing, XP can help give
you a higher-quality Website than could be achieved under the traditional "don't stop
coding until you're done" approach.
Avi Beck, a technical project manager with web developer
<kde>, views the management of expectations as XP's primary advantage.
"The coders benefit from not having to develop huge components in a vacuum and by
having the priority of tasks laid out by the client on a continual basis," said
Beck. "The client benefits by having a new, working model every few weeks as well as
being able to reprioritize functionality every few weeks."
In the traditional tug-of-war between client and developer, the client always wants
to expand scope and the developer always wants to reduce it. XP can make the two sides
more willing partners in the joint evaluation of what can be accomplished within the
given time and cost restraints of a Web project.