Agile is a generic term for software development approaches designed to handle uncertainty and change. This is done by delivering iterations quickly and often. The goal is to produce working solutions that can evolve, based on customer feedback and changing requirements.
It is often contrasted with more traditional Waterfall development methodologies where development flows through a series of phases. The next phase can only begin after the previous one is complete. At a simplistic level, requirements are signed-off at the beginning of a project and are developed to deliver the final product.
You can read all the articles in our Product Management Journal – Agile by signing up for free here.
The attraction of Agile
Waterfall methodologies are rooted in the world of manufacture and mass production. You provide all the requirements upfront and identical products roll-off the production line. Success requires detailed specifications, accurate resource forecasting, and top-down planning.
The problem with developing products using the Waterfall approach is that you have to know what you want at the beginning and wait until the end to see the results.
Unfortunately businesses, clients and users are often not sure what they want at the beginning of a project. They struggle to articulate their requirements. They change their minds as their understanding improves and the market context changes around them. Waterfall attempts to deal with this through change control processes, but these can be complex to manage and difficult to feed into the development cycle.
Software development is inherently more flexible than physical manufacture. It’s usually easy to create prototypes and develop new versions that make an Agile approach possible. In a survey (Oct 11) by Ambysoft on IT Project Success, respondents were asked whether projects were seen as successful, challenged or failures by their organization. Iterative and Agile projects were reported as around 15% more successful in comparison with projects that took a traditional or ad-hoc approach.
Product sponsors like Waterfall – they have the perception they know up front what they’re going to get and with Agile they won’t – however Agile shows the sponsor tangible progress and lets them shape the deliverable from the outset
However, Waterfall has not gone away
In most larger organizations a Waterfall approach to new product development has been implemented and embedded across the whole company. This is the only way to manage and control multiple large-scale projects. These are often known as Stage-Gate processes where projects can’t proceed to the next stage until the previous gate has been passed.
Agile is not the answer to everything
A pure Agile approach doesn’t work all the time. In the Telecoms and IT industries, most development is about more than ‘cutting brand new code’. It’s about knitting together complex software systems, hardware and service components. Offshore development requires co-ordination with other development teams in different locations, time-zones, and companies. Other departments such as marketing typically have long lead-times so they need to know a launch date and release contents months in advance. For all these reasons the top-down planning of more traditional approaches is still needed.
There are very few software developers who are unfamiliar with the concepts in Agile, however, adoption by the business is not universal. From our 2018 annual survey, we know that 49% of companies use pure Agile, 41% use both Agile and Waterfall (sometimes mixed together, e.g. Water-Scrum-Fall) and 10% just Waterfall.
The report goes on to state that when developers are asked about which approach is used, they often say ‘I’m using Scrum, but…’ This is because most customize and adapt Agile practices such as Scrum to fit with their organization’s existing processes and to fit the type of projects they are working on.
This matches our experience where reality is a mixture of traditional and Agile approaches. For example, an upfront piece of work on analysis and requirements, development using Agile and a final phase with customer trials and launch. The term that often gets used to describe this is ‘Water-Scrum-Fall’.