Steve Yegge’s Good Agile, Bad Agile needs a filk song. Maybe it needs some classic Star Trek fanfiction where the main characters are marmots. Either one would make it clear that you should not take it seriously.
If you take Steve’s argument seriously, you’ll learn that the proper way to do software is to:
- Start as a multi-billion dollar company with billions of dollars available to invest.
- Hire as many brilliant people as you can afford. Try to get this number in the thousands.
- Start as many projects as possible, in the hopes that one will become a wild success and diversify your money-making prospects.
- Keep your projects away from customers, budgets, and deadlines as much as possible.
Well that was easy. Just be Google, a graduate student, or a startup (with unlimited funding).
The rest of us have slightly different goals, for example, giving customers what they really want with reasonable budgets and schedules. If you take away schedule and budget pressure entirely, you don’t need a development process such as XP; XP is all about managing limited resources and allowing change.
The point of extreme programming is to make change so cheap and easy that you can get and react to feedback from every possible point in the development process.
Sure, the details have more details, but once you understand that, you see why a development practice that works for Google (”keep really smart people happy and hope they stumble into the next big thing”) is not just practically very different from most software teams but also very philosophically different. (Having real, paying customers changes many things.)
When you understand why XP exists and the problem it attempts to solve, you can understand why the XP practices are what they are. They all work together to help you get feedback, help you understand feedback, and make changes as quickly, effectively, and inexpensively as possible. That’s all.
If you don’t understand that, you might as well not talk about XP at all, unless your goal is to confuse people.
STAR TREK FANFIC COOKING SHOW Marmot Spock: Today we shall bake a chocolate cake. Muskrat Kirk: I hate chocolate cake! Marmot Spock: Hate is an illogical emotion. Preheat the oven to 350 F. Muskrat Kirk: Darn your Marmot logic! I shall not! Marmot Spock: Fascinating. Mix three cups of flour and two eggs in a medium bowl. Muskrat Kirk: You are a vegetarian. We shall not use eggs! Marmot Spock: The recipe allows customization; we may substitute two thirds of a cup of oil. Muskrat Kirk: Fattening. Pass. Marmot Spock: Captain, we need an emulsifier. Muskrat Kirk: Do not make me order you. What's next? Marmot Spock: Sugar. Muskrat Kirk: Pass. Marmot Spock: Baking soda. Muskrat Kirk: Pass. Marmot Spock: Salt. Muskrat Kirk: Hoo-boy! Marmot Spock: Cocoa powder. Muskrat Kirk: Pass. Marmot Spock: Butter? Muskrat Kirk: Another emulsifier. Do not try to trick me! Marmot Spock: Mix vigorously. Muskrat Kirk: SHAKES THE BOWL TWICE. Good enough. Marmot Spock: Divide equally between two baking pans. Place in pre-heated oven (RAISES EYEBROW) for 30 minutes. Muskrat Kirk: That's a waste of resources! Why waste two pans on one cake? It can't possibly cook any faster that way! PLACES BOWL IN OVEN TIME PASSES Marmot Spock: Captain, the timer has gone off. Muskrat Kirk: It is cake time! Marmot Spock: The recipe says to let it cool. Muskrat Kirk: I order it to be cake time! TAKES A SPOONFUL OF SALTY FLOUR AND SPITS IT OUT. This is the worst cake ever. Spock, you are fired.
On second thought, no one would believe that story. Everyone knows that baking is a chemical process where each step supports the others. Leave out a step (or its equivalent) and expect very different results.
Hmm… that actually sounds a lot like agile development to me.