Bertrand Meyer is a well-respected member of the programming community, having introduced useful object-oriented concepts practices such as “contracts” for methods and classes. He also literally wrote the book on object-oriented programming (in ‘97, and it’s still in print). So when he writes a book on his response to the Agile wave, you get the urge to read it. It doesn’t hurt that it got honorable mention in the Jolt book awards, or that it’s a pretty quick read.
Apparently he spent three years studying the sacred texts of Agile philosophy and in the end the fruitage of his quest boiled down to a 154 page book called Agile!: The Good, the Hype and the Ugly”.
While you might expect the book to consist merely of his reactions to the Agility movement, surprisingly it’s a concise and well-balanced overview of the entire spectrum of Agile principles and practices. In fact, if you only wanted to read one book on Agile, this could be it.
What Mr. Meyers brings to the table is experience and wisdom. It’s obvious he’s lived through countless software projects and he’s gotten a feel for the practical and impractical, the brilliant and the idiotic. So what’s his take?
His reactions were varied. There were some disparaging remarks for most practices, though Scum escaped largely unscathed. He does seem particularly enamored of this curious rugby huddle, which I found interesting because Scrum isn’t so much a programming practice as it is a managerial framework; you could just as easily apply the tenets of scrum in a housing contractors’ outfit to improve communication, cross-pollination, quality, and productivity.
Something he’s not so thrilled about in general are the extreme, all-or-nothing practices endorsed by some Agile evangelists, nor the hype, fear mongering, and name-calling from those unscrupulous individuals that just want to profit from the movement at the expense of the long-term advancement of the craft of programming.
For instance, while appreciative of the shift away from the paralysis-by-analysis requirement gathering tar pits of yesteryear, he objects somewhat to Agile’s “deprecation of upfront tasks.” It’s true; Agile literature often criticizes Big Upfront Anything, tirelessly flogging that old dead horse “Waterfall” as the modern whipping boy for the ruling Agile elite. As an example, he cites Mike Cohn as writing, “Scrum projects do not have an upfront analysis or design phase; all work occurs within the repeated cycle of sprints.” As I read the book and his criticism of the extremist all-or-nothing edge to many Agile texts, at first I found myself shaking my head in disagreement and thinking, Yeah, but who would actually do that? Like, you’re not going to spend six months on analysis and design before putting pushing your first commit to the codebase, but nobody I know is going to up and start coding without giving at least some thought to the overall project goals, requirements, basic architecture, etc. Under Scrum, for example, most organizations working on a project of any size realize that some amount of scouting ahead and trail blazing is essential before each sprint iteration in order to ensure its success, particularly in the area of requirements gathering and elucidation.
So that’s when it hit me. Meyers does make a good point here. If nobody in their right mind would actually make a practice of the extreme practices advocated by some in the industry, why advocate them with such vehemence in the first place? I’m sure there are a number of reasons: some innocuous, a few nefarious, and a good batch of them, ridiculous. Sounds like a good topic for a future blog post. :)
At the end of the day, Agile! is an honest and meaningful contribution to agility that balances out the discussion and dials down the hype. Thank you, Mr. Meyer, for a book well-written and well-timed.