In the previous two installments of this series, we introduced the rapid-development practice known as Extreme Programming (XP). XP is a development methodology based on several somewhat arbitrary, and limiting, controls:
- Programming tasks are broken down into manageable chunks that can be completed in three weeks.
- A close review of those tasks prior to each triweekly programming iteration defines the functionality that can be achieved. Additional functions considered to be of secondary importance are postponed until the end of the programming cycle or are indefinitely postponed.
- Programmers work in pairs. One writes the code, the other tests the code. This ensures that the result of each iteration is solid and ready for functional testing. Individual software modules are also integrated at the end of each coding iteration.
- An iteration of the software is released for functional testing at the conclusion of each three-week development cycle.
A group of developers from Tektronics that included Ward Cunningham and Kent Beck founded XP. The group found that by continually examining the scope of a project, as well as varying it to restrict coding to arbitrary three-week sessions, they could cause the project's quality, duration, and cost to take care of itself. In other words, they reversed the traditional model of software development, in which scope is defined as a constant while the variables of quality, time, and cost change in order to conform to the scope.
Realizing that the traditional approach often led to missed deadlines, extravagant spending, and various delays, the group experimented with making scope a variable that could be modified to meet a fixed project length and cost. XP is designed to permit continual re-evaluation of project scope. The resulting Website may not include all of the features that were originally desired, but the completed features will work reliably.
Allowing project scope to vary raises several important issues, including the problem of pricing the services of a third-party developer if you do not initially agree on which features your Website should have. How can you predict your project's outcomes if scope can vary? XP methods certainly call for some "Extreme Project Management" techniques.
Fortunately, nobody will allow scope to continually vary without a good reason, even while engaging in XP. Here are some tips to keep a grip on scope while using this development approach:
- 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 Programming.
- 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.
In the next installment of this series, we'll examine how design and prototyping can be managed effectively in an Extreme Programming environment.