The main difference is that Waterfall is a linear system of working that requires the team to complete each project phase before moving on to the next one while Agile encourages the team to work simultaneously on different phases of the project.
The key characteristic of the Waterfall development methodology is that each step in the software development process must be approved by the project stakeholders before the team is allowed to move to the next step, hence the term 'waterfall'.
Waterfall is often a better choice when: The requirements are well understood and not likely to change. The customer is not prone to demanding changes. The customer prefers not to be involved in the development, but wants to be consulted at the beginning and receive a working package at the end of the project.
So what are some downsides of using Waterfall? In Waterfall projects, cost and schedule overruns are common. Waterfall is a sequential process where each phase must be completed before the next one can begin. This lack of flexibility means that delays in one phase can cause delays throughout the rest of the project.
Obviously the differences in the impact to teams, customers, ROI, etc. of applying the two approaches is huge and is the subject of many books and endless discussions and conferences.
But as I think more about it, I am having a hard time finding any difference between the two that doesn't ultimately map to a single root difference which is the frequency of release.
Waterfall spends time on a design, then writing the code, then testing and finally releasing. But Agile does exactly the same set of steps - its just that each one is smaller.
A key piece of the Agile approach is about learning from each release and using that to let the larger design emerge instead of trying to predict it at the beginning.
But Waterfall does this too. Its just that instead of learning every 3 or 4 weeks, the Waterfall team only learns every 6 or 9 months. But the Waterfall design still emerges. That is, waterfall release 2 will reflect what was learned in release 1. So the process is not different, its just that it executes at a different speed.
Agile focuses on close customer collaboration. But Waterfall does this too. Its just that since waterfall has a longer iteration time, an enumerated list of requirements in the form of a contract is more needed to keep everyone on the same page over the long period of time. But again, this is just an artifact of frequency. The higher the frequency of delivery, the lower the need for a contract.
Are there any other primitive differences that I am missing - or is it really just frequency?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With