Elves are like trees, grounded and focused from the trunk down but graceful and agile on top. – Orlando Bloom
I’ve come across a few posts on “Agile” in my feed and it reminded me that I didn’t know a whole lot about this approach to developing software. I’ve read the manifesto, of course, and I try and apply it myself. But as I spend more time researching the concepts in this space I wasn’t sure how to think about the approach – what was the intellectual framework that it fell into?
This video by Dave Thomas helped answer this question. Dave is one of the signatories on the manifesto and the basic thrust of his talk is that implementations of the manifesto have lost track of the values that it tried to talk about. And this is because you can’t sell values but you can sell methods and tools and processes. So what you have is an industry that teaches you rituals to follow that are supposed to deliver the kind of results you get if you put agile values at the heart of how you work. Somehow, the rituals don’t quite match up with what actually needs to be done. And it happens all the time.
Dave talks about what the values actually are – and it comes down to the ideas in the image that starts this post. The question of “what” is agile is answered by thinking of the steps you take. You start by understanding where you are, then you take a small step towards your goal. You then see what you’ve learned and what that could mean. And then you repeat the cycle, look at where you are now and take another step.
Dave also talks about this as a model that’s similar to the way in which you steer ships. Ships are hard to steer, they’re big things and it takes time for things to happen. So, you have controllers that help you deal with this, in particular something called a PID controller. PID stands for proportional, integral, derivative and it simply means this. You need to measure how far away you are from the error, what has happened so far and how long it takes for things to change.
This is interesting because Dave, who knows what he is talking about, has likened what he thinks of an agile approach as being akin to a cybernetic system. Cybernetics is literally derived from the idea of a helmsman – someone who steers a boat. I’ve written about cybernetics briefly in this post and explained it in this video. Agile software development, therefore, one could argue is closely related to the field of cybernetics.
The other element of Dave’s talk is related to decision making. He argues that when you have to make a choice between two alternatives that have similar outcomes pick the approach that gives you the most flexibility to change later. This is what we might call preserving optionality – making sure that the decisions you make don’t lock you into a single track that you will be unable to escape from if you need to later. That seems like common sense – but at the same time much of the world of business tries to do just that. And the world of politics, when you think about it.
Anyway, the best part of the talk is about the difference between agile as a verb and as a noun. The right way to think about it is to be agile, to do your work in a way that corresponds to the dictionary definition of the word. It’s not a thing you hold. It’s the way you act.