At GT Software we are exponents of XP. Why? The principle of agile software development makes sense; it produces a first release quickly and then keeps the releases coming. Since the customer is on board, every release has something new that the customer wants. So what arrives is still useful when it arrives. There's no long term plan slowly skewing off course, no great silence before the customer sees what they're getting (only to declare that wasn't what they wanted after all). Maintenance isn't such an issue either as regression tests are built in to the code, code changes continually improve the design with refactoring and new members of the team are brought up to speed by the pair programming.
Does that sound too good to be true? Well it really can be that good!
1. As a first step, read some of the book reviews and maybe order a few.
2. Take a browse of some XP related sites
3. Contact us to see how we can help
XP related sites: (NB: no recommendation is implied)
The two main XP sites are (IMHO) http://www.xprogramming.com/ and http://www.extremeprogramming.org.
There's Ward Cunningham's overview of XP over at http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap which covers a lot of (imaginary?) questions about XP and also uses the Wiki Wiki Web; if you've not encountered Wiki then follow the link to learn more.
The Wiki pages also crop up via another XP site http://ootips.org/xp.html
One aspect of XP is pair programming, where a story's solution is implemented by one developer at the keyboard, and another sat alongside collaborating and observing to provide perspective and in-situ code reviews.
The related discipline, Refactoring http://www.refactoring.com from Martin Fowler, author of some reviewed books.
In XP there's no escaping unit testing, its your friend and proves the system works before your changes and after them. For Java developers the tool of choice is JUnit. More details at its own site http://www.junit.org/.