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.
Training
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#.