Agile! The Good, the Hype and the Ugly (review)

An Agile mindset is critical in modern software development and everybody who thinks differently is doomed to perish. So say the fans. Critics are appalled by such zeal and sometimes a heated discussion ensues. It doesn't help that many people with little practical experience chime in.

Bertrand Meyer tries to give a balanced assessment in his 2014 book Agile! The Good, the Hype and the Ugly. For this research he read a lot and got certified as Scrum Master. Overall, he considers Agile an important step of the evolution of software engineering but not yet perfect. As he wrote in Making Sense of Agile Methods:

Agile is not a negation of what came before. It is one more brick in the patient construction of the modern software engineering edifice.

To make it short: In my opinion the book succeeds. I don't know any other such detailed yet also balanced assessment of Agile.

The content is great but the other aspects of the book are not in my opinion. It feels rough and raw like a blog post. Not polished like a book which received multiple rounds of editing and professional layouting. Yet, it is prized expensively like a textbook.

Meyer also gave a talk which summarizes the book. If you watch that you might as well skip the rest of this blog post:

The Principles

Before Meyer addresses specific agile practices, he dares to criticises the twelve principles of the Agile Manifesto: Some of the principles are not principles but practices or assertions. Some parts are redundant. Testing is missing. One assertion is even plain wrong.

This part of the book demonstrates the clear thinking of the author and how much he cares about precise definitions. It increases my confidence that other parts of the book received equivalent care. However, it also feels nitpicky to attack something so abstract. Thankfully, Meyer tries to be constructive about it: He proposes his own definition of Agile. Note that he does not assess those as good or bad yet. At this point, Meyer just tries to define Agile better than the Agile Manifesto does it. Instead of the "individuals and interactions over processes and tools" values, here are five values of Agile:

  1. new, reduced role for manager
  2. no "big upfront" steps
  3. iterative development
  4. limited, negotiated scope
  5. focus on quality, achieved through testing

Derived from those values are 8 principles (5 organizational and 3 technical).

Organizational principles

  1. Put the customer at the center
  2. Accept change
  3. Let the team self-organize
  4. Maintain a sustainable pace
  5. Produce minimal software:
    1. Produce minimal functionality
    2. Produce only the product requested
    3. Develop only code and tests

Technical principles

  1. Develop iteratively
    1. Produce frequent working iterations
    2. Freeze requirements during iterations
  2. Treat tests as a key resource
    1. Do not start any new development until all tests pass
    2. Test first
  3. Express requirements through scenarios

So far, I have not seen anybody dare to rephrase the manifesto. It is practically treated as a holy text clear of any fault.

Now for the concrete practices. After all, one must be pragmatic eventually. To end on a positive note, we start with the negative sides of Agile.

The Bad and Ugly

For some practices, there are solid arguments by now that Agile made the wrong choice. Since each of these is worth its blog post or a few pages in the book, I'll only list the point in my own words here.

One message of the book is that modern software engineering should reject these practices even if some Agile coach sells them as part of the package.

The Overhyped

Some practices and principles do not deserve the emphasis they get. Either their benefit is limited or they are only useful in certain situation but not generally.

The Good

Then there are practices which are almost universally good:

The Brilliant

Finally, we reach the actual innovation of Agile. This is the progress Agile should be praised for. Some were invented before but Agile spread them widely.

Required reading for discussing Agile in detail

For everybody who seriously wants to debate the pros and cons of Agile, this book should be required reading. There is actual substance, science, and insight in this book. Sadly, most of the industry debate is a superficial discussion what "True" Agile might be. After reading this book, I don't think any blog post could add something significant to the debate.

I also recommend this book for pragmatists who wonder what is useful in Agile. It provides a good foundation what practices to use and which to dismiss.

The one book which provides a balanced assessment of Agile.