Experts in 
Software Development



Content Management 
When should you build, and when should you buy?
  Extreme Programming

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 development.

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 New Methodology.


Copyright 2002  [Phase2 Software Corporation]. All rights reserved.
Revised: March 06, 2002 .