I was pleased to read John Nack's blog where he talks about how the Photoshop team went with an Agile development model for this upcoming CS3 release of the product. I've had a fair bit of exposure to the methodology in the last few years and, despite some hiccups now and then, its really proven to me just how effective it can be.

What I believe makes it so successful is the pragmatic approach it takes to the development process: requirements change, communication is the key to any successful product and collective code ownership equals shared responsibility. Working with iterations and building features in as you go makes perfect sense, as opposed to artificially building a swiss cheese and then try to fill in as many of the holes as time permits (ok, that comparison might need some refactoring).

Interestingly enough in the interview with Russell Williams (architect on the Photoshop team) John links to it mentions that this process did not lead to fewer features as some might have expected and resulted in a much lower final bug count. They also talk about the impact Agile development has on marketing and getting documentation written which are things I personally hadn't considered.

Its worth comparing this to Rapid Application Development with its 80/20 rule, prototyping has been my preferred way of working for a long time but I've moved almost completely away from that approach. In a way RAD tries to mitigate risk by keeping the development cycle as short as possible, whereas Agile meets the challenge head on and embraces change.

If you're interested in the topic you should really attend one of Aral Balkan's sessions on UCAPD (User-Centered Agile Product Development) -- an acronym that long must be good, right? Its been a real eye opener for me on how to handle projects better and become a happy and productive developer.