Developer Reading List, July 01, 2014 The best summer reads.
by Bertrand Meyer
The book's author, Bertrand Meyer, has been one of the brightest lights in the programming firmament, if perhaps not the best known. His book Object-Oriented Software Construction is incontestably one of the foundational texts of modern programming. Even 15 years on, it's immensely readable and so filled with common sense that whenever I dip into it, I find myself realizing that some aspect of OO that I've used for years is subtly different from how I understood it. It's sort of like the feeling one has when discovering a word used all your life actually means something a shade different from what you thought.
This new book is an analysis of Agile as it's used today. In it, Meyer again brings a remarkably clear and sensible analysis to the various Agile practices and freely criticizes those he views as having worked poorly.
He is both incisive and unsparing, especially in pointing out culpable parties where failures have arisen. For example, while he personally praises pair programming, he has this to say about its lack of adoption: "[Pair programming] has retreated from the limelight. The controversy was largely a consequence of [extreme programming]'s insistence on imposing pair programming as the sole and universal way to develop programs. [Kent] Beck wrote 'Write all production programs with two people sitting at one machine.' As in other cases of agile injunctions that industry found, shall we say, a trifle extreme…"
But he doesn't stop there and simply satisfy himself with scolding or laments. Meyer perseveres, examines how pair programming is practiced today, and explains lucidly why, in his view, it should not be used as a mentoring technique. He's able, though, to see past his own opinions and admit parenthetically the fun that might be found in pair programming with Donald Knuth.
His discussion addresses many unexpected topics. For example, where else have you read any analysis of the widely held view that all tests should pass before code is checked in? This guideline is so universal and so seemingly obvious that it never receives scrutiny until Meyer takes it apart step by step to reveal benefits and limitations.
A final plus for this small volume is that it's not written from an anecdotal perspective. Far too many books that purport to instruct Agile do so by relating stories and personal anecdotes about how the authors and their colleagues did some clever thing in response to a given obstacle. There is, for me at least, always the niggling belief that I could find a successful counter-example given enough time and inclination. (After all, there are surely great projects that failed, poorly run projects that succeeded, micro-managers who did the right thing, etc.) Meyer avoids this trap by simply discussing macro trends in Agile usage, so that the reader is illuminated both as to the wider practices and their shortcomings. In the field of applied Agile, this is by a wide margin the most insightful, thought-provoking, well-written book.