
A lot of people are very enthused with the ideas and concepts behind Agile methodologies, but are hesitant to apply them in their current situation. I often hear people talk about the “risk” involved in moving to a new way of working. The timing is wrong, the project is too complicated, there is too much risk to be mitigated, there is too much change occurring to introduce yet another variable, we have a crisis on our hands … etc, etc, etc.
Whilst these are all valid reasons for thinking very carefully about how to proceed, what people have failed to understand is that agile methods are probably the best solution to each of these concerns.
For a start, the timing is never going to be better than today (unless we manage to somehow invent a method travelling backwards in time). We know more about our current situation than we do about any potential future situation. We also have a collectively bad track record of predicting the future … so any current future situation that we think will be “a better time”, may in fact be worse than our current time, and we will have lost any gains from using agile methods in the interim period.
The more complicated a project – because of its size, adoption of new technology, creation of new process, ambiguity of requirements et al – the more risk we have that we will fail to deliver, and therefore there is more risk to be mitigated.
Agile methods were created out of a desire to predictably deliver value, and reduce the risk inherent in any software development project (or any technology initiative per se). We do this by accepting that change is inevitable, that we will know more in the future than we do now, and breaking the project down into smaller and more digestible chunks (iterations and releases). We use our actual output on these iterations and releases to more reliably predict what will happen in future iterations and releases, and our constant team and customer interaction that we are always on target to deliver what is needed.
Usually, in a time of crisis, there is a sense of urgency about the need to deliver something – a fix, a new feature, faster time to market, lower cost, etc. Using agile methods will allow us to turn the crisis into an opportunity, and to use that urgency to generate results. A good Agile team will always operate with a sense of urgency. Not the urgency of impending doom that seems to always strike large waterfall projects as the ultimate deadline looms ever large and the death-march begins, with everyone working 24×7 and losing all hope ever rejoining the ranks of humanity … but the managed and healthy urgency to deliver something finished and of value every single iteration. Every potential crisis that threatens the project can be used as an opportunity to learn, and incorporate changes into our process (or software).
I would argue that not being agile makes each of these factors all the more dangerous.
As a concrete example (not actually related to software development), I sit here writing this with a bruised face (not to mention ego). My preferred method of keeping in shape is boxing – an intense workout, a great way to release energy, and a sport that requires a combination of speed, strength, fitness, and coordination. Over the last few weeks I have been enjoying success sparring with various people at the Shailer Boxing Academy in Wellington, and had fallen into a certain rhythm in the way I approached our bouts.
Last night I found myself paired with the regional heavyweight amateur champ, and was immediately in trouble. He was a good 5 inches taller than me, not to mention a good 15 years younger and faster. His style was different from all of the other boxers I had been training with.
Had I been more agile, I would have recognised that the situation had changed, and that I could no longer rely on the same techniques and combinations that had proven successful in the past. I needed to change the plan to match the circumstances, learn from what was happening, and mitigate the risk I now faced. Unfortunately I only realised this about halfway through our 3rd round, by which time I had already suffered a lesson in counter-punching from the champ.
Having reflected on what went wrong, and determining how to ensure that it doesn’t happen again, I sit here with a nice reminder of my personal lack of agility. In the future I will remind myself to adapt to every situation and reduce the risk (with a sense of urgency), to increase the chance of walking away with the outcome I want.
