A few weeks ago I was talking to someone from the Netherlands who mentioned an analogy that Lee Copeland used when referring to agile development. It tweaked my interest so I emailed Lee to find out what he was really thinking.
He used the analogy when the group was talking about all of the work to actually get a product out the door into production, and which parts agile development ignored. He compared agile development (Scrum + XP, for example) to how his kids eat a slice of pizza. They start on the pointy end and eat up toward the crust for a while, then toss the slice down and start on another. All the best stuff (meat and cheese) is near the pointy end. That’s how he views of agile development — they do the fun stuff (write the code) while ignoring the “less-tasty” stuff (product planning, scope, design, inter-product relationships, …).
I thought on this for a while – my gut reaction to was to deny, deny, deny … but realized he is right in many cases. Some teams who start agile development really want all the good stuff – that yummy cheesy mess in the middle of the pizza – the best part. They want the iterative cycles, the daily stand-ups, less documentation, and the small releases. However, they often forget what it really means to release, and concentrate on the project rather than the product.
It may be fairly simple if you are just updating an internal website, or even your own managed external website. But… if you need to release to a client(s), it is a different story. It may be a shrink-wrapped product that is destined for the stores or a custom enterprise application and then the game is different. There is actually a whole lot more to releasing than just giving the code over. This is some of what Lee was talking about.
Agile development has progressed over the years and I think we’ve all come a long way since we first started talking about it. Yes, some teams forget about the “crust”, but I think they all learn very quickly that they can’t just throw it over the wall to customers. For example, they need to understand that customers may not be able to accept as frequent as they want to release because they have so many intergration issues. Agile teams adapt and change, and many are doing it right, and customers are benefiting. The rest… well, they will learn too.