What is Extreme Programming (XP)? |
|
|
The other day, I was asked for the “elevator pitch” on XP, so I dug out this description from an old posting on another of my sites.
It’s taking best practices to the extreme…
- Long iterations become short iterations with early experience
- Long, irregular meetings become frequent stand up meetings
- Back-end testing becomes unit testing
- Specification artifacts become stories and a full-time customer (proxy)
- Enforced deadlines become developer-derived estimates
- Code reviews become pair programming
The XP Values
- Communication
- Feedback
- Simplicity
- Courage
The Tenets of Extreme Programming & Refactoring
- Establish a guiding vision, or “metaphor,” and then design as you go, with no big, up-front design.
- Do the simplest thing that works, at first, and then refactor as needed.
- No “Spec Gen” (speculative generality). Rely on refactoring to add features only as they actually become required.
- No speculative performance tuning. Rely on refactoring to introduce performance tuning later.
- Code in small iterations and fast release cycles.
- Put unit and functional testing at the core of the project goal posts, not as an optional add-on. In fact, write the tests before you write the code to be tested. You cannot rely on refactoring without a complete baseline of unit tests.
- Do not refactor and add functionality at the same time. Alternate between them.
- Coding standards should have buy-in by all team members and call for the least amount of work possible.
- Work directly with an on-site customer and/or user and make them a part of the programming team.
- The customer determines the priorities, not the developers.
- Developers provide the estimates, not the customer.
- “Spikes” are written when preliminary research is required to provide a confident estimate.
- The entire development team has collective ownership of the entire project. It is not portioned-out code to individual experts.
- Program in pairs to assure quality and stay on track.
- Use stand-up meetings to stay on track.
- Stick to a 40-hour workweek, sleep well and lead a balanced, healthy lifestyle.
Getting Started
- Kent Beck’s “Extreme Programming Explained” (second edition) is the seminal work in the field. It’s an easy read and it paints a good overall picture.
- Martin Fowler’s “Refactoring: Improving the Design of Existing Code” is a must-read. The first 100 pages describes refactoring (and a bit about test-driven development). The remaining pages are a catalog of refactorings — essentially a cookbook of step-by-step recipes.
- Robert Martin’s “Agile Software Development” has also been recommended as a good starting point, though it’s not primarily about XP.
Read more: Agile Development







