…real men embrace agility.
The development world seems to be full of ‘Agile’ pretenders. If you were to
object to my saying that ‘there is no such thing as Agile’ then I’m sorry to say
that there’s a reasonable chance that you too fall into this category.
There is no ‘Agile manifesto’. There is a ‘Manifesto for agile software
development’, which lays out some general principles which one might like to follow in order to help them develop software with agility.
Of course it seems entirely reasonable to shorten ‘agile software development’ to simply ‘agile’, but herein lies the same problem we see in almost every other aspect of our day to day lives – words are allowed to be abused and end up losing any sense of meaning. Worse still they end up meaning something entirely different than they did to start with. We see it all the time in the world of politics, with words such as ‘extremist’ or ‘terrorist’. We talk about ‘morality’ as if it’s a shorthand for ‘whatever I subjectively feel is best’ – even if ‘what I subjectively think is best’ is internally logically inconsistent. We see people talking about ‘doing’ ‘Agile’, as if ‘Agile’ is a name for some prescriptive process (invariably involving moving cards around a board) which, if followed obediently, will yield some kind of magical gain in productivity.
Are you an Agile pretender?
* Firstly I’d ask you what ‘Agile’ actually is? It sounds like a simple question but I would bet that a very many people would struggle to give an answer that didn’t sound far from waffle.
* Secondly I’d ask you why do we want it? Again this should be a simple question to answer, and an adequate answer could be given in 3 short sentences.
* Lastly I’d ask you why & how ‘doing Agile’ is beneficial to your particular project?
‘Agile’ is meaningless. Unfortunately the word has been entirely destroyed and I fear will never be recovered (although reluctantly I still have to use it when talking to agents, etc). Dave Thomas (one of the original signatories of the manifesto) wrote a blog post recently on the topic here: http://pragdave.me/blog/2014/03/04/time-to-kill-agile/
Having felt enormously frustrated for the last couple of years, seeing Dave’s post has made it clear to me once and for all that I’m not imagining the whole thing. The software development community is unfortunately easy prey for a whole cottage industry of snake-oil salesman that has sprung up around ‘Agile’, and the hidden – even if unintended – payload of destruction is that a whole generation of developers (the guys at the fake agile coalface) is emerging comprised of men & women who feel jaded towards the whole idea of ‘Agile’.
The reality is that the ideas and mechanisms to develop software with agility are very simple. They are simple because they make logical sense, and don’t come in the form of complicated & prescriptive tasks, but can be summarised in a general sense by saying ‘Only do what adds value. Don’t do what costs more than the value it adds. Agility is valuable, so a present cost may be worth future agility. Embrace collaboration in order to leverage the agility you’ve built into your engineering processes.’. For a thoughtful developer, working on a real agile project will fill them with joy – the joy a professional experiences in the efficient delivery of quality software, and the joy they experience in seeing their own productivity and professionalism grow from beginning to end.
What many men & women face today is a mysterious, almost cult-like, ritualism resembling some kind of black magic. The thoughtful ones never feel quite comfortable with it because they are unable to rationalise any sense out of it – they never experience the rewards that offset the costs of those mysterious ceremonies. it all feels like a fraud. Those people tell their friends that ‘Agile’ is a fraud, in the same way that people who don’t know better tell their children that capitalism is all about the rich taking advantage of the poor.
Am I an agile pretender?
* “‘What is ‘Agile’?”
As I’ve already suggested, ‘Agile’ is the process by which software development is done with agility in mind. The agility to change direction as quickly as possible, and as cheaply as possible. The agility to fail fast and fail cheap. The agility to continuously adapt and improve our own processes and techniques in order to deliver maximum value over a given period of time.
* “Why do we want it?”
We want agility because it increases our chances of success. It often reduces costs. It increases the chances of the customer getting the product they wanted, even if it’s not necessarily the product they asked for. In a dynamic global market things change fast and we need the agility to change the product during development according to market forces.
Human beings aren’t always great at knowing or articulating what it is that they actually need. We want the agility to draw those developing requirements out during the course of development, and we want the agility such that our product’s design can be emergent according to the feedback that we get from both the customer and our own processes.
We want the agility to fail fast, because to fail fast is to fail cheap.
* “why & how is ‘doing Agile’ beneficial to your particular project?”
This one can often be the slam-dunk! As it happens the project I’m currently working on, while labelled ‘Agile’, experiences absolutely no benefit from any agility (other than those associated with the good engineering practises which are a prerequisite for any successful agile project – which we don’t really do!). My current project is a fake ‘Agile’ one. We follow a Scrum paradigm which supposedly makes us agile, yet none of the reasons to adopt Scrum are of any benefit to us. Our project consists of what is essentially a very well defined list of discrete alterations/fixes which are required for regulatory reasons. The implementation of one of those fixes very rarely has any bearing on the implementation of any of the others, and what’s more we have a fixed and very specific scope (and a fixed deadline too :D). With this being the case there is absolutely no benefit to having the notional 2 week sprints that we do. There is very little benefit to the sprint retrospectives. Sprint reviews are pretty pointless when a task is so well defined, trivial & discrete from all others. In the daily scrum/standup we essentially try not to bore each other too much as we explain what we did yesterday, and intend to do today; no one cares because what I do today has no bearing on what anyone else will do tomorrow – there is no sprint goal.
For the last 6 months, or so, I’ve been compelled to be an agile pretender. In an environment where every man and his dog is sent on a ScrumMaster certification, and the new vocabulary that comes with it is thought to imbue the team with magical powers of increased delivery potential through wilful thoughtlessness (a perversion if ever I saw one), I have little choice.
Agile is for losers, and these posts are my attempt, for the time being, to be a thinking, ‘real’ man, who instead chooses to seek agility in software development.