What is Extreme Programming?
Extreme programming (XP -- not related to the Microsoft XP which
came years after this methodology was in place) sounds like a wild
and crazy hackers idea of a methodology. In fact the name does
not do this methodology justice. It is a well thought out
methodology for turning out highly reliable code in a reasonably
short period of time.
XP is a lightweight, agile programming method. Lightweight,
because it doesn't impose heavy planning requirements, and agile
because it is adaptive to the constantly evolving requirements found
in any creative programming environment. Typical of the
lightweight, agile methodologies is the short iteration cycle,
usually 2-4 weeks, from one release of the system to another.
This allows users, business people, and programmers to see the
system grow over time.
XP starts with a dozen practices (see XP FAQ)
which XP projects should follow. Many of these practices are tried
and tested techniques, yet often forgotten or ignored in planned
processes. XP takes these techniques, aligns them
synergistically and then brings them together as a process.
Two of the techniques stand out.
First is the heavy reliance on testing. While all
methodologies have testing, it is often a 2nd class citizen to the
other pieces of the methodology. For XP it is a
cornerstone. You cannot develop code without first creating
the test for the code.
Second is the constant refactoring which forms the basis for each
iteration of the XP cycle. Re-factoring minimizes the amount
of redundant code, and leads to fundamentally better architecture
that evolves with the needs of the system.
XP starts with the concept of a "story", which
describes a feature or piece of the final product. During each
iteration, a pair of programmers work together to complete the story
or stories that they have taken on for this iteration. They
start by writing the tests, then they write the code to fit the
test. By working as a team, they collaborate on each piece of
Does Phase2 Use Extreme Programming?
Phase2 does not require the use of any one particular
methodology when developing software. Perhaps the best
description of how Phase2 works is that we examine the capabilities
of the client we are working for, and use the methodology in place
if it appears to be working. Otherwise we gently bring in some
form of lightweight, agile programming that best fits what the
client is doing.
Another lightweight, agile methodology, SCRUM,
which uses short release cycles called "sprints", is a
common one we have used, which has features similar to
XP. However, it is less rigid in its formulation, and
sometimes adapts better to the development culture found at a
client's business. It can be used as a wrapper around various
implementation methodologies, including XP.
A good overview of lightweight, agile programming methodologies
is given by Martin Fowler, The