This week I met Allan Kelly and we talked about agile software development, the topic of two of his books. The first thing I asked him: can we stop talking about ‘agile’ yet, and just call it ‘software development’?
There was a time when agile software development was the new approach, the controversial alternative to established approaches that were (implicitly or explicitly) waterfall methods. This was the time when The Agile Manifesto was first published, in 2001.
These days, anyone talking about software development practices is talking about agile software development. Blogs and books and conferences debate how to implement agile methods, not whether to. Waterfall approaches live on, but only driven by the business - managers who want predictability, or at least the illusion of it.
Methodology instead of methods
In the 1990’s, commercial software development was mostly about choosing which of the off-the-shelf approaches to use, and in the big companies it just meant using the in-house approach. These were the defined software development methods that had extensive documentation and instructions for use. The name of the game was standardisation, and from the software developer’s perspective, coming up with these methods was someone else’s job.
The ‘someone else’ working out the development methods were the innovators writing the books and corporate quality systems. Instead of applying existing methods, they were engaged in methodology - the study of methods. Meanwhile, software developers might ask each other ‘what method are you using?’ but were less likely to be thinking about methodology.
If you’re not a native English speaker, you could be forgiven for missing the distinction between software development methodology and software development methods. After all, the distinction isn’t important in practice, and has become increasingly blurred over the years anyway.
Allan’s response to my suggestion that we might be able to drop the ‘agile’ was to laugh. ‘I wish,’ he said, perhaps recognising that whether or not software development is agile is no longer what the discussion is about. ‘However, “agile” is a useful brand,’ he continued. This makes a lot of sense, because it’s a simple label for a broad topic. ‘What else,’ quizzed Allan, ‘would you Google for?’
Not only is ‘agile’ a broad topic, it’s an area of methodology, rather than being a method. There are many agile software development methods, with a new one in fashion every few years. In case you didn’t notice, Scrum isn’t hip any more. This is a more subtle aspect of talking about ‘agile’ which is that it has made methodology mainstream.
Agile methodology is now the topic of endless books and conferences, which is a huge increase in the sophistication of commercial software development. There will always be software developers who don’t care about process or how the work is managed, but the developers who got into methodology, as well as programming, are a new generation of team leaders who have taken a step back and are now approaching software development at the team level. Perhaps this is why there’s so much blurring between Scrum Master and project manager roles, both of which could be very specific but usually aren’t.
Not only is this a good thing, it explains why agile software development discussions never end, and why there’s always another book or conference presentation to imagine. This is the nature of methodology: ongoing study… ‘further research needed’, as the academics say.
Now that we have reconsidered the difference between methods and methodology, we can see what’s interesting about Scrum. Scrum is more of a methodology than a method: it’s not a fixed approach for projects - a software development method. Instead, Scrum is more of a methodology, a set of simply-described practices than give you a starting point and an incremental approach to discovering a method that works for a particular team, project and software problem.
This is a neat trick: viewed as a method, Scrum isn’t just a software development method; it’s a method for implementing software development plus a method for working on methodology in the context of a development project. The huge value of this approach is twofold: first, it takes the idea that there is no one-size-fits-all method to the conclusion that each team should invent their own method, for each project and for each software problem. Secondly, Scrum means working on methodology throughout the whole project, which is important because team, project and software are also moving goalposts.
Just bad grammar
Perhaps my only real problem with ‘agile’ is the grammatical horror of treating a perfectly good adjective as if it were a noun, sometimes capitalised. This is par for the course with the English language, which isn’t fixed in a green book or by law, as some languages are. After all, the English slogan is that ‘We can verb any noun!’
I doubt anyone else in the world cares about this, or winces when asked ‘do you use Agile?’ or reads sentences that start ‘Agile is…’ so I should probably just get used to it.