Why use Agile software development?
Agile software development was formalised in 2001, when 17 technologists drafted the Agile Manifesto. Since then, the term “Agile” has taken on a life of its own. It’s trendy to be “Agile”. Even prime ministers have wielded the word around to appear in vogue. But really, what does Agile software development mean?
What is Agile Development in software engineering?
In essence, an Agile approach to software development is an iterative way to manage a project that helps teams to deliver value to clients faster and with fewer surprises. Instead of the big reveal at the end of a project, an agile team continuously evaluates and improves the solution.
The Agile Software Development Manifesto
The manifesto for Agile Software Development is really quite simple:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
How software development used to work
Decades ago, circa the Waterfall Model era, developers got a requirements document from a business analyst. Some developers were lucky enough to have been involved in the initial scoping meetings to hear directly from the client, as to their requirements. Many times, this document would not reflect way they had heard and understood the clients requirements to be; the client would often sign off on the document.
Software developers understand the technical implementation impact and consequences of a client’s articulated requirements. The client and the business analyst do not have that insight. And, that is where it can all go wrong – the interpretation of requirements and technical impact on the final solution.
How COVID-19 has impacted the approach to software development
The added hurdle of the COVID-19 Pandemic has made face-to-face meetings challenging. The client couldn’t see or review what had been developed so far. Online video meetings were set up but the client could not actually “play” with the site if it was a Waterfall project. They had to wait months until the final product was complete and ready for User Acceptance Testing (UAT).
The benefits of an Agile methodology in software development
There are a number of benefits to undertaking an Agile approach to software development, including:
As an IT professional, you have to hear what the client is telling you. You have to hear what they want but, more importantly, you have to understand what they need. This is done through small iterations of code releases and collaboration with clients along the way. These releases are telling the client “we hear you and we’re listening. This is what we’ve understood that you need.”
The beauty of Agile is that if you (the developer, business analyst, project manager or even client) go down the wrong path – for whatever reason – it’s easy to change direction. The concept of short iterations, with the aim of getting small (semi-) working versions out to clients for review, is the key to success. When clients can see a concept come alive, on a website or application, they can start to adjust their expectation as to the reality of what is possible.
You don’t need a face-to-face meeting to view an iteration of an online application. By releasing the software in iterations, you give the client access to view what they will be getting. They can then adjust to suit their business requirements. The client sees it from their own computer and can immediately identify if something has gone awry.
It’s far more preferable, and manageable, to focus on getting a small and important piece of the project working correctly instead of a giant “completed” project that is off target and does not meet expectations.
One of the great advantages of Agile software development methodology is that the the risk is spread across the whole project, not just at the end of the project, as in the Waterfall Model.
With Waterfall, the risk comes at the end, with testing, integration, data import etc. At that stage, everyone is stressed - time has run out. It’s time for the big reveal.
With an Agile approach, these risks are addressed as you go with short cycle releases and continuous testing.
Management of costs
If you’ve run with a project for a long period of time, the cost of change is enormous. There’s not just the financial cost to consider, it’s also the cost of time that has lapsed. It’s no secret that business requirements change – even during the implementation of a project. However, Agile allows the project to embrace these changes and adjust the direction. In most cases, the requirement changes eliminate other requirements and the cost balances out.
The project manager does need to flag when these requirement changes will impact the budget. That can be worked out with the client to perhaps remove other requirements to fit these new changes. It’s important that the client is receptive to these discussions.
A shared vision
The client needs to be part of the iteration journey, collaboration is key. They need to provide feedback and direction. It’s not a set and forget process that was set out in the original requirements document, as per the old ways of the Waterfall Model. There will be many questions from both sides – client and service provider. The end result will be worth it, a project that is delivered to a known and evolved set of requirements.
The future is brighter with Agile
The disruption caused by the COVID-19 Pandemic has reinforced the benefits of being more Agile. There is no longer space for multi-year projects running on top of a Waterfall Model approach. Iterations and continuous improvements to reach a positive project outcome can be achieved by an Agile software development approach.
Open source development services
If you need expert software development services for your project, the Catalyst Team would love to help.