Almost every day I read about doing agile ‘properly’. Some people are asking what is the right way to do something, others (including me, it has to be said) are giving their views on what works for them. For someone new to agile – perhaps considering adopting it in their workplace – it is potentially very off-putting, as it may give the impression that we agilists actually can’t agree on what’s right and what isn’t; that agile is actually just a bunch of techy geeks making it up as they go along in ill-disciplined fashion. But that’s not true.
The truth lies in the answer to the question I posed in the header to this post – is agile a brick, rigid and clearly-defined, or is it more clay, malleable to whatever you want it to be? Or is it more like Lego, assembled from component parts?
If you think there is one single ‘right’ way to practice Agile, you’re just plain wrong. Consider these scenarios :
· The ten-man internet startup rushing to get their new product to market
· The international corporation migrating applications across platforms
· The company with the off-shore development team and the third-party client
· The busy production support team with constantly-changing urgent requests
If Agile were really a one-size-fits-all tool, how could it possibly cope with these vastly different situations? No, Agile needs to be considered as a philosophy and a large toolset of practices and behaviours. The philosophy is encapsulated neatly in the Agile Manifesto, with its supporting principles. And the toolset is the superset of practices espoused by all the different Agile methods, from XP, to Scrum, Kanban, DSDM and others. Understand the philosophy properly, the core values and principles and why they are important, and then look into the toolbox to select the practices that best fit the company and the situation, and then look to tailor and customise on those as well. After all, one of the agile principles is about constantly improving.
Viewed this way, you have to think carefully about how you adopt agile, how you train (or learn) agile, and how you manage an agile workforce. The Agile movement is as significant to software development as the advent of the personal computer. But you have to know how to use both in order to get the best from them.