If you’re teaming up with a software development team to work on your business’ software solution, chances are you may hear the word ‘Agile’ thrown around at some point. Are they just talking about how nimble they are, or is there something more to this strange buzzword?
Agile refers to a particular philosophy regarding the Software Development Life Cycle. It is a direct reaction to the ‘Waterfall Method’, which is a sequential, step-by-step approach to software project management. There are pro’s and con’s to both approaches, but unlike Waterfall, Agile is not itself a method or framework but is rather a way of thinking that has inspired many methods and frameworks.
The Agile approach was originally formulated in 2001 by a large gathering of leading experts in the Software Development industry. It is summarised by 4 foundational values and 12 principles. Rather than simply rehashing these values and principles (which you can read about here), this article will give a brief overview of the main emphases of the Agile approach, and highlight some of the benefits and risks associated with this approach.
The Agile Philosophy
As a Project Manager or Business Executive seeking to partner with a software team to automate your business, it’s important for you to understand Agile as its insights are widely adopted and pursued in the software industry.
The Agile philosophy emphasises:
1. Iterative Delivery
Agile believes in delivering software to customers iteratively at regular intervals so that customers can test, use and/or benefit from some software long before everything is ‘done’. This is in contrast to the Waterfall approach, which attempts to define every requirement of the software upfront and releases a fully-completed product all at once at the end.
2. Changing Requirements
Agile does not make the risky assumption that all of your software requirements can or should be known from the start. Rather, your needs of and vision for your solution are expected to change as the project progresses. Iterative delivery, as discussed above, allows increments of your software solution to be used to test your company’s assumptions and expectations on a regular basis, and request changes during the development process.
3. Customer collaboration
Agile software development puts the customer at the centre of all the project’s activities by emphasising constant customer feedback. With the traditional Waterfall approach, the customer is expected to be intensively involved upfront when requirements are meticulously documented, but thereafter, it is the documentation, not the client, that drives the day-to-day project activities. With Agile, the software project revolves around an ongoing discussion between the software team and the customer. This is to ensure that the team is always working on the features and functionality that are of highest relevance and value.
Agile believes in ‘maximising the amount of work not done’ (from the Agile Manifesto). This does not refer to paying a software team to take a holiday. Rather, Agile forces the customer and software team to constantly course-correct their efforts toward releasing functional, useful software as often as possible. The only thing of any real value to the customer, says Agile, is working software that meets business needs. Spending time on peripherals that are not of the highest value to the customer now is busy-work that costs unnecessary time and money.
The 3 Benefits of Agile
“Saving you time, saving you money, putting you first.”
This recognisable slogan has been the sales pitch of Nashua Limited for decades, but it makes a great byline for the benefits of the Agile approach.
1. Saving you Time
It seems illogical to expect a specific Return on Investment (ROI) based on the assumption that you know and understand everything you need from your solution upfront. And, then wait for the entire project to finish before finding out if your ideas/requirements were actually (a) bad ideas, (b) unnecessary and/or (c) inadequate.
But, even if your project comes out great at the end, was it really necessary to wait all that time before your business could start benefiting from the glories of software automation?
Agile says no.
Without a doubt, as a paying customer, you are eager to start seeing the fruits of your investment as soon as possible. Agile demands the same. Continuous, frequent delivery means your business starts transforming for the better, earlier.
2. Saving you Money
Some cliches exist for a reason, and when it comes to hiring a team of skilled, well-paid developers, the saying ‘time is money’ is more than a pithy comment. By saving you time, and maximising the work not done, Agile saves you money.
3. Putting you First
Agile goes beyond just benefitting your bottom line. By making you, the customer, the centre of the story and chief navigator, your software is empowered to keep up with the changing needs or unexpected challenges of your business. You have the opportunity to influence the day-to-day focus of the software development team, giving you the driver’s seat to determine how your investment in software is being put to work.
The benefits of Agile go beyond theoretical propositions: research shows that software projects following the Agile approach are twice as likely to be successful than projects using the traditional Waterfall model.
3 Disadvantages of Agile
Despite the clear advantages and resounding successes of the Agile approach, everything has its risks and drawbacks.
Although this is a post specifically about software, we should probably mention that the Agile approach is definitely not appropriate for every context or industry. Construction, for example, is not the kind of work to be agile.
Now that we’ve got that out of the way, let’s review some of the downsides.
Whilst the Agile mindset is simple enough to understand, the specific frameworks that have been designed to implement the Agile approach are not always that simple. For example, the most popular Agile framework, Scrum, often requires significant customer training. Either way, Agile methodologies tend to come a lot less naturally to people.
2. Demands on the customer
We get it: you have a business to run, without having to run a software team too. The reality is if you want the best out of your software, a suitably ranked stakeholder from your company should be frequently communicating with the software team (read more here). But this is still a challenge for many customers, and one of the most frequent challenges faced by Agile software development teams.
One of the core tenants of Agile is a hard pill to swallow: that software is inherently unpredictable. As such, the Agile approach does not naturally offer you a way to predict when the project will end and how much it will cost. This is often unpalatable to a customer whose resources are limited. Thankfully, Agile methodologies like Scrum provide means to help software teams provide accurate time ranges for project completion.
If you happen to have the choice between your software team adopting an Agile approach or the Waterfall method, we recommend an Agile approach.
Ultimately, you’ll have to decide which method works best for your unique context, and which set of disadvantages you find easier to stomach.