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

  1. 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.
  2. 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.
  3. Robert Martin’s “Agile Software Development” has also been recommended as a good starting point, though it’s not primarily about XP.


© 2006-2007 Maxim Software Corp.  All rights reserved.