This is a book about Extreme Programming (XP). XP is a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly changing requirements. This book is intended to help you decide if XP is for you.
To some folks, XP seems like just good common sense. So why the iextremei in the name? XP takes commonsense principles and practices to extreme levels.
If code reviews are good, weill review code all the time (pair programming). If testing is good, everybody will test all the time (unit testing), even the customers (functional testing). If design is good, weill make it part of everybodyis daily business (refactoring). If simplicity is good, weill always leave the system with the simplest design that supports its current functionality (the simplest thing that could possibly work). If architecture is important, everybody will work defining and refining the architecture all the time (metaphor). If integration testing is important, then weill integrate and test several times a day (continuous integration). If short iterations are good, weill make the iterations really, really shortoseconds and minutes and hours, not weeks and months and years (the Planning Game).
When I first articulated XP, I had the mental image of knobs on a control board. Each knob was a practice that from experience I knew worked well. I would turn all the knobs up to 10 and see what happened. I was a little surprised to find that the whole package of practices was stable, predictable, and flexible.
XP makes two sets of promises.
This book talks about the thinking behind XPoits roots, philosophy, stories, myths. It is intended to help you make an informed decision about whether or not to use XP on your project. If you read this book and correctly decide not to use XP for your project, I will have met my goal just as much as if you correctly decide to use it. A second goal of this book is to help those of you already using XP to understand it better.
This isnit a book about precisely how to do Extreme Programming. You wonit read lots of checklists here, or see many examples, or lots of programming stories. For that, you will have to go online, talk to some of the coaches mentioned here, wait for the topical, how-to books to follow, or just make up your own version.