Channels ▼

Developer Reading List

, July 01, 2014 The best summer reads.
  • E-mail
  • Print

Agile! The Good, The Hype, and The Ugly

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.






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.