Traditionally, software development follows the Waterfall framework whereby a product is produced sequentially over a series of phases of construction. Waterfall’s big drawback is how tedious it can be for developers, and how unresponsive it is to change. This is a major issue in today’s world where technology is advancing at such a rate that resistance to change can often translate to failure.
Hence we now have Agile methods that - as the name suggests - offer far greater dynamism in the face of ever-present changes to technological landscapes, market conditions and user habits.
Rather than conducting development over a drawn-out series of phases, Agile breaks it down into smaller, integrated chunks that the team works to plan, test and complete before moving onto the next one. This rapid process of iteration keeps the project highly adaptive to the kinds of change that could otherwise compromise the end product.
Agile is better for people too, giving them a better environment to facilitate continual improvement, and empowering them to be more efficient and creative.
And it’s people who need to adopt key principles so that they make the most of Agile in their development work. Principles such as:
1) Not being afraid to dig up and replant
Just like a healthy garden, Agile flourishes when you grasp the nettle and stop being squeamish about pulling up roots and trimming back branches. It can be mentally difficult after you’ve worked hard to nurture a piece of the project, and sudden changes to requirement compel you to kill it off and start again. But this process of renewal is essential to keeping the software product relevant to its purpose.
With a Waterfall approach, such an event could result in weeks of effort being consigned to the compost heap, and big delays in the project delivery to put it right. But Agile accommodates the inevitability of change far better, and keeps waste down to a minimum with its modular, ‘chunk’ based organization. Don’t flinch from being ruthless; enjoy it! The result will be even better than you first envisaged.
2) Remember Agile isn’t a fad diet, it’s a positive new lifestyle
By all means study Agile in fine detail before you introduce it. But don’t mistake the methodology for a rigid set of guidelines and rules. By replacing other approaches with Agile, you may start reaching for a formalized set of conventions and documentation and start introducing bureaucracy where you really don’t need to. Focus instead upon introducing a new mindset to replace the old.
Coping with the switch to Agile is easier when developers understand that the lack of formalized processes - and their replacement with unrecorded interactions - is all orientated toward achieving maximum flexibility and a final software product that is tailor-made for its real-world requirements. It’s a license to feel more liberated as a software professional; more open to new tools and other progressive working practices, and a better team-player too.
3) Take your time converting to Agile so that nobody is left behind
Converting a mature software development operation to Agile is trickier that starting-up a whole new organization and using it from day one. This is because making the switch takes more than introducing a new method of project organization; it’s turning an entire ethos of project management on its head. Everyone needs to buy-in and accept it; not just managers.
Say you have a development team that uses the Waterfall model religiously. Big deliverables delivered on big deadlines is all they really know. Imposing an Agile way of working on them could be highly disruptive as – to their eyes – more frequent deadlines means increased pressure. It could even lead to failure.
But by more gradually shifting that team over to Agile, you can plant the seeds of change and reap your intended harvest of benefits further down the line. The right balance to strike is one where the development team understands that Agile is the final destination defined for them, yet they feel sufficiently empowered to take control of exactly how that transition manifests itself in their group.
Allowing developers to transition their mindset means they are more likely to uphold the values of Agile, and further inspire team cohesion by empowering the decisions and mindsets of others around them.
Agile is a valuable opportunity to deal with change in a far more efficient and effective way than through using more rigid software development methodologies.
But it takes more than waving a magic wand to realize the full benefits of Agile. It requires a new mindset and a shift in attitudes.