I read Jurgen Appelo on The Decline and Fall of Agilists this
morning, in which he calls out those who insist on defining agile as a
set of static procedures: "According to these agilists, being agile is not about being adaptable and doing whatever it takes to make your project a long-lasting success. These days, agilists simply claim that agile is about following practices X, Y and Z." On the contrary, he says, “Agility
is about moving software projects to the area of complexity, right between
order and chaos.”
I visualize what he’s talking about as resembling surfing
(at the beach, not online): If chaos is the motion of the ocean and order is
the rigidity of the land, then agility is the skillset we use to ride the waves
at the juncture of these two forces.
The agile adoption process has no ideal form, Jurgen says, and will look and feel
very different for each team that undertakes it, depending on the weather and
the waves, so to speak: whether they are starting from a position deep in chaos
(like a growing startup) or from an ordered position (like a waterfall team at
a large company).
To add to the surfing metaphor, once you’re “up,” being
agile has nothing to do with control, but everything to do with discipline: it
is all about learning to keep one’s balance and adapt to ever-shifting
contexts, exercising strength, flexibility, muscle memory and anticipation to
stay on top of the wave and ride it forward—the minute you stiffen up and start
to second-guess yourself, that’s when you lose “control” and wipe out.
So why this rather dull tendency among agile
proponents to want to exert control, to nail down a definition of what is
agile, and what is not? It is almost always the case that our strengths are
also our weaknesses, and I wonder if it isn’t also the mathematical mind of the
programmer that yearns to establish acceptance tests for what makes a project
agile or a person an agilist.