The Essence of Agile

Abstract

In February 2015 Bertrand Meyer gave a presentation of his views about Agile methodology, based on his recent book of that name [1]. While he presents an insightful overview of Agile and accurately identifies its "brilliant" elements, I think he fails to penetrate to the true core of the Agile approach. This article seeks to reveal and discuss those core elements.

Small Steps and Tight Feedback

The difference between, say, an expert skier and a novice is that the expert has learned to detect tiny perturbations in the ideal trajectory and is able to make equally tiny (and rapid) corrections for them, which leads to smooth overall progress. Similarly one might suppose the dancer who graces the cover of Meyer's book has learned to detect tiny deviations from ideal form and how make equally tiny corrections.

Ideally, a software development project should proceed smoothly from conception to delivery. Agile suggests that the way to approach this ideal most closely is to proceed in the smallest practicable steps, and correct any deviations as soon as they are detected. This is done at several levels:

The Essence of Agile

The essence of the Agile approach is this:

Take a small step at a time, test each time and make appropriate corrections.

Why it Works

From Theory to Good Practice

Let's consider good Agile practices in the light of the above principle.

Agile is not a Panacea

Although they are generally valuable, Agile techniques do not cover the whole of the development process. Sometimes it is necessary to take big steps. Several of the bad parts of Agile as enumerated by Meyer result from an attempt to force all development into the straitjacket of small steps.

The Problem Agile Cannot Solve – Estimation

As Glass sagely observes [5], "... I don't believe in the software crisis. ... I do believe in a software estimation crisis ...". For software with any significant degree of novelty it is impossible to make accurate estimates. The rule of thumb is that an initial estimate will be wrong by a factor of 4 in either direction [6]. The initial estimate is unavoidably a big step. Agile cannot improve this initial estimate, but it can facilitate the detection of deviations from the initial estimate at the earliest possible moment and provide good guidance on the best way to resolve this situation.


Footnotes

  1. Bertrand Meyer, Agile! The Good, the Hype and the Ugly, Springer, 2014.
  2. Robert L. Glass, Software Design and the Monkey's Brain. Commun. ACM 51, 6 (June 2008), 21-22).
  3. Frederick P Brooks, Jr., The Mythical Man-Month, Addison-Wesley, 1995, 42.
  4. Richard C. Linger, Harlan D. Mills and Bernard I Witt, Structured Programming: Theory and Practice, Addison-Wesley, 1979, Chapter 7.
  5. Robert L. Glass, Goodbye! IEEE Software 26, 6 (November/December 2009), 95.
  6. See this article and references therein.

© Copyright 2015 Michael J. Harrison. All rights reserved.

Mike Harrison, Version 1.0 05/25/2015
<mike@mjharrison.com>