What is it?
As householders search charity shops for wartime rationing cookbooks, IT professionals are dusting down skills and technologies the better to navigate the impending recession. Managers trawl the web for ports of Linux to run on mothballed DEC Vaxes, while developers contemplate a future of maintenance, if they are lucky.
But techniques for tough times don't have to be defensive. Extreme programming provides a way of doing more with less - smaller teams, tighter schedules, smaller budgets - and no overtime.
Extreme programming emphasises cooperation, agility, closeness to the customer, frequent meetings, and schedules which maintain motivation and respect the right of developers not to be ground down by inhuman demands.
In fact, there's a utopian feel about some of the writing on extreme programming, which has provoked a backlash. According to The Case against Extreme Programming: "Extreme programming is like a ring of poisonous snakes, daisy-chained together. All it takes is for one of them to wriggle loose, and you've got a very angry, poisonous snake heading your way."
But you don't have to swallow it whole. In fact some characteristic Web 2.0 approaches - like making frequent, small releases - were pioneered by Extreme programming. Other extreme programming rules - such as moving people around so nobody becomes indispensable - make perfect sense.
Where did it originate?
Extreme programming was formulated by Kent Beck (latterly a contributor to the Eclipse IDE) while working for Chrysler in the mid-1990s. Beck's book Extreme Programming Explained describes extreme programming as "an attempt to reconcile humanity and productivity".
What's it for?
Each development begins with user stories written by the customers, describing their needs and the expected benefits in two or three lines. Meetings continue until the developers, customers and managers can all agree to the release plan.
Developers work in pairs, but can change partners and are encouraged to work on different parts of the development during successive iterations. Pairs work at a single computer. According to Beck: "Two people working at a single computer will add as much functionality as two working separately except that it will be much higher in quality".
As in open source development, code is "owned" collectively and any developer can change any line of code to add functionality, fix bugs or refactor. Each developer creates unit tests for their code as it is developed and all code released into the source code repository includes unit tests. Before any code is released, it must pass the entire test suite at 100%.
What makes it special?
If a schedule proves unrealistic, a release planning meeting is called to change the project scope or timing, instead of piling extra pressures on the team, or bringing in more people. "Working overtime sucks the spirit and motivation out of a team. Projects that require overtime to be finished on time will be late no matter what you do."
How difficult is it to master?
The Rules and Practices of Extreme Programming are summarised in a single page: Beck advises "add a little to your current methodology or try it all at once".
Rates of Pay
Java and C# developers with Extreme Programming earn £35,000 to £45,000.
See www.extremeprogramming.org, www.extreme programmingrogramming.com and Getting Started with XP: Toe Dipping, Racing Dives, and Cannonballs. There is also a bibliography here. O'Reilly has the Java Extreme Programming Cookbook, and Microsoft Press Extreme Programming Adventures in C#.