As I said in my last two posts, Shane and I divided our book up into three parts: Getting Started, Practicing XP, and Mastering Agility. I thought that having a topic on each of these subjects might generate some interesting conversations. I'll be following the other threads and responding to them as well.
"Mastering Agility" is one of my favorite parts of the book. In the first two parts, we're very focused and pragmatic, but that also requires us to make some simplifying assumptions. We only cover one agile method (XP), we tell you to have everybody sit in the same room, and so on. These are good choices (or so I think!) because it makes learning the material easier.
In Part III, we talk about what it takes to truly master the art of agile development--what it's like to deeply understand agile values and principles, set aside the canned rules of the first two parts, and build your own agile method.
To create this section, we scoured all of the agile books we could find and wrote down all of the core principles from each one. We ended up with over 100 index
cards, which we then spread out on the floor in an affinity mapping exercise. We ended up with fifteen agile principles that seemed truly universal. I'm really happy with these principles because they represent the intersection of the underlying themes of all of the major agile methods. I feel like we uncovered some fundamental truths with these principles.
In this part of the book, we talk about what the principles are, what they mean, and how to use them to customize your method. It's cool stuff. My thoughts for this topic were to talk about "master"-level concepts like underlying principles and values. Discussion of practices to use in specific situations should go in the
Practicing topic, or start a new topic.
We grouped the fifteen principles into five chapters:
Improve the Process: Understand your project, tune and adapt, break the rules Rely on People: Build effective relationships, let the right people do the right things, build the process for the people Eliminate Waste: Work in small reversible steps, fail fast, maximize work not done, pursue throughput Deliver Value: Exploit your agility, only releasable code has value, deliver business results, deliver frequently Seek Technical Excellence