One of the biggest discussions in IT project teams lately is the discussion of which software development methodology to use – waterfall or agile? If this has left you a bit confused, or if you just want to know what the differences of agile vs waterfall are, read on.
What Is Agile Software Development?
Agile software development is a concept or methodology that involves iterative development in short cycles. It includes a high level of interaction with users or business representative, and its flexible response to change is a positive for both business teams and project teams.
Agile development is based on a concept known as the Agile Manifesto, which is:
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.
As it says, the agile development process has different values than other software development methodologies. The other main software development methodology you may be familiar with is waterfall.
What Is Waterfall Software Development?
Waterfall software development is a development process that involves stages that are run from start to finish before commencing the next stage. These stages are generally classified as:
- Requirements – gathering the requirements of the system and what needs to be developed
- Design – designing the system
- Implementation – developing the software system
- Verification – testing the system, both system testing and user testing
- Maintenance – ongoing support or maintenance of the system
In this methodology, the requirements are gathered at the start of the project, with the aim of confirming them at the start to reduce cost and time impact later in the project. It is a common belief that finding discrepancies and issues earlier in the project will result in less time being spent than if they were found later in the project.
Waterfall is the more traditional method of development. It was the main methodology that was taught in schools and universities (at least when I was there!) and depending on your company, it’s the one that is most commonly used.
However, there is discussions among the IT industry about agile vs waterfall – what are the differences, and which is better?
What Is The Difference Between Agile and Waterfall?
There are several key differences between the agile methodology and waterfall methodology, which are:
- Agile uses iterations, waterfall uses stages
- Agile has constant business interaction, waterfall has varied high and low interaction (high during requirements and user testing, low during development and system testing)
- Agile has roles such as scrum master, waterfall has project manager.
- Can’t go back with Waterfall, can with agile
- Agile uses iterations, waterfall uses stages. The agile process uses short iterations, known as “sprints”, which generally last between 4 and 6 weeks. The requirements are confirmed, system is developed and tested, and released during this iteration, and the next one begins. With the waterfall process, the requirements are all set at the start, and then the next stage begins
- Once a stage is finished with waterfall, you can’t go back. If you’ve finished the requirements phase and obtained signoff from the business users, the requirements phase is over. There is no going back – unless a change process is followed which can take time. With agile, if requirements need to change, they are better handled with this process.
- Agile requires constant business interaction for the entire cycle, waterfall has high and low points. For each agile sprint or cycle, constant interaction with users and business stakeholders is needed – which can be difficult to get if you’re not in the same area or if there is no support from their manager. With the waterfall methodology, the business interaction is needed up front (with the requirements gathering) and then again at the user testing stage – and not a lot in between. This can be a good and a bad thing.
- Agile roles are different to waterfall roles. Roles in an agile project are generally different to those in a waterfall project. Agile has a role called a Scrum Master, which is a kind of project manager and release manager, and may not be an IT person. Waterfall has a traditional project manager, which is almost always an IT person in the traditional sense.
Which Is Better – Agile Vs Waterfall?
This information brings us to our last point – comparing agile vs waterfall. This depends on several factors, such as the work environment and the style of project.
Agile methods are more suited to those projects that need small and frequent functionality delivered to the users. It is also suited to those projects where delivery time to market needs to be considered.
Waterfall methods are suited to those projects where a high level of business involvement is not possible or not needed, and where quality is more important than speed to market. This isn’t to say agile results in poorer quality projects – it just means that as there is a dedicated testing phase, it places more emphasis on it.
The experience of the project team also needs to be considered – whether they have experience delivering or working on agile projects, as this will be a big help.
Well I hope this has cleared up some of the questions you’ve had on agile vs waterfall and some key differences between the two. Has your area at work been in discussions about agile projects vs waterfall projects?