What is it?
Extreme Programming (XP) is a discipline which moves from formally phased projects to a rapidly evolving continuous flow of development, based around a dynamic planning process which constantly factors in business needs, desires and costs throughout the life span of the project.
At the heart of XP is the idea that requirements change all the time and the best way to deal with that change is to let it happen and to program in an iterative fashion with constant feedback to the customer who can then make decisions with full knowledge.
Why do we use XP?
XP is scary. It throws out an awful lot of received wisdom about how programming projects should be managed in favour of concentrating on doing things fast and light. Writing tests, not developer documentation. Writing code, rather than over designing up front. Planning for the next two weeks, not trying to plan every last detail for the next three months. Having two programmers at one keyboard, not doing code reviews... The list goes on.
The thing is, received wisdom isn't always that wise. Our founders have worked on projects that used the full range of that wisdom. On one infamous occasion, after working hard for three months, trying to specify the project in tiny detail without writing a single line of code related to it, the project got spiked as being too hard. We believe that, had we spent more time writing code we would have had an application that did a large proportion of what was required of it, and which would have repaid further development.
XP gets out of the way. It encourages us to write good code that's well tested and easy to maintain and extend. It embraces and encourages change. It encourages an honest, supportive relationship between client and programmer about the state of the project so nobody has to make important decisions in the dark.
XP is also a good fit with Perl, which is our programming language of choice. Which means we all get to have more fun. Which, in turn means we work faster and write better code while we do it. Which means you get value for your money and at the end of your project you get the application you want at the end of the project, rather than the application you wanted when the project started. (Who knows, they may be the same application, but you're not betting the farm on that.)
www.xprogramming.com: The home page of several of the people who invented the XP approach.
www.extremeprogramming .org: The page of another of the XP pioneers, which provides a very good overview of what XP is. (It's slanted slightly towards programmers, but it's good for customers to know what the programmers will be getting up to)
Last modified on
June 25th, 2001 by firstname.lastname@example.org.