Agile and waterfall are terms used to describe which product development methodology a team is engaged in. Waterfall usually describes a rigid and planned-out approach to project management while agile describes a more flexible approach to product development.
In waterfall, each stage of a project is sequentially completed before moving on to the next stage. In waterfall, requirements are defined at the beginning of a project, after which the project progresses through a series of other stages. These stages typically include:
Each stage must be completed before the next stage can begin. Since progress is dependent on the previous stage, changes to the requirements can be difficult and expensive to implement.
The agile methodology, on the other hand, is a more flexible approach to project management. Multiple steps can be done at the same time in an agile environment. Projects are iterative. Requirements and goals are reviewed and adjusted throughout the product development cycle.
Agile projects are typically broken down into shorter iterations (often referred to as sprints), with a focus on delivering value to customers in incremental steps along the way. Agile product development helps teams to learn and adapt quickly to customer needs and changing market conditions.
Waterfall may suit projects with:
- Complex dependencies — Some projects have dependencies that are difficult to determine or that require a linear form of work. For example, one or two developers might need to complete a series of work before they can even know what the rest of the team should work on.
- Framing vs scaffolding — Agile development can be low risk when adjusting scaffolding but when it comes to building a viable, long-term framework, waterfall planning can save valuable time in the long run. Tech debt and poor architectural decisions tend to slow development down after enough short-sighted decisions are made.
- Mission-critical — When a product is mission-critical (people’s lives are relying on the end product being complete and working properly), waterfall might be a better approach. Constantly delivering iterative updates to a product can work well for a streaming app but might not work as well when it comes to an air-traffic-control system.
- Clear customer requirements — One of the reasons teams might choose to work in an agile way is because they don’t understand what the customer wants and so being agile facilitates experimentation. However, if a customer has clearly identified what they want and they aren’t willing to pay for it until it’s completely built to their specifications then a waterfall approach might make more sense.
While agile development is the preferred method for most organizations, there are some benefits to each approach that shouldn’t be ignored. Good judgment should be used when deciding to what degree a project should be treated in an agile or waterfall way.