Agile and waterfall software development methodologies are two of the most popular approaches to delivering software. There are another dozen approaches like rapid application development (RAD), devops methodology etc.
Read this article to know everything about agile and waterfall approaches and the difference between them.
Waterfall development methodology
This is also called the classic software development model. This has been around for a long time but not very popular these days.
Waterfall software development definition
Waterfall is a software development approach in which the development happens in a linear and sequential fashion starting from requirements analysis stage and finally concluding at software maintenance stage.
The term sequential means that the previous stage has to conclude before the next stage starts. Every stage has a clearly defined input and output and the output of one stage becomes the input to the next stage.
Example: The requirements analysis phase has to be completed before the design phase starts. The marketing requirements document, product requirements document, system requirements document, functional requirements specification will become output of requirement analysis stage and become input to design phase.
The waterfall model has the following stages: Requirements analysis, design, development, testing, deployment and maintenance.
Agile development methodology
Agile follows an interactive approach which focuses on delivering value to customers sooner. Agile (and specifically SCRUM) is the most followed software development methodology today.
Definition of agile model
Agile model is an iterative software development methodology that focuses on shipping features and delivering value to customers incrementally and frequently.
Popular agile approaches
There are multiple agile approaches to software development. Here are a few. All of them focus on delivering a usable incremental build to customers at frequent intervals.
Kanban - The software development process is represented as columns on a “kanban” board and the objective is to work on the “top” item through these columns and ship it. Once a developer is done with his ticket, he will pick up the next “top” item in the queue.
Scrum - Product owners define the scope of a time boxed iteration called “sprint” which typically lasts for 2 weeks. The entire team focuses on delivering the sprint and at the end of the sprint, the increment is shipped to the customer.
Extreme Programming - This is very close to scrum, but it is development focused and is extremely strict. XP prescribes everyday production deployment, pair programming, definition of done and test driven development.
Other approaches include lean, SAFe, Crystal, DSDM and Feature driven development.
Differences between agile and scrum
Scrum is the most popular way of software development today and is the de facto “agile” process. So, when someone says that they follow “agile” there is a good chance that they are following “scrum”.
Scrum is a “framework” for “agile” methodology. Scrum tells how we go from a a set of requirements to shipped product - through sprints, sprint meetings, daily standups, review and retros.
Agile vs Waterfall differences
Expectation of changes: Agile expects the requirements to change over time whereas waterfall expects the requirements to be fixed and well understood.
Feature releases: Agile focuses on incremental feature delivery whereas in waterfall, there is generally a big-bang product launch after a long period of development through linear-sequential development process.
Customer involvement: Customers are involved at the end of each incremental change in agile (typically an increment is shipped at the end of every iteration and put in front of customers). Customers are involved in “stage-gates” ie only at the end of one stage the customers will verify the output of that stage.
Handling feedback: Customer feedback is handled in the subsequent iterations in agile whereas the team is expected to go back to the “requirement analysis” stage if customers provide any large feedback in “stage-gates”.
Team dependency: Since each stage in a waterfall has clear deliverables, the team members of one stage need not to work closely with team members from other stages. Agile teams and generally small self organizing teams require everyone to be on the same page.
Documentation: Agile manifesto focuses on collaboration and working software over documentation and processes whereas the waterfall model clearly defines the documentation output of every stage.
Staffing: In case of agile the product owner, designer, testers and developers have to work together on the same project on any given day. In the case of the waterfall model, a business analyst can move on to Project B after completing the requirement analysis phase of Project A.
Pros and cons of the two models
Due to the differences in the approach as outlined above,
Pros of the Waterfall model
Old and well-understood process.
Works very well for small well-understood fixed bid projects
Results in comprehensive documentation
Team members with unique skills can be tasked to be involved in a specific stage.
Cons of the Waterfall model
Higher chance of customer dissatisfaction
Inflexible and can not respond to changes
Impractical for large projects as customer feedback on the working software is received only at the end of complete software development.
The focus is on delivering the “product” and following the process and not the customer.
Lot of time is spent on writing and understanding documentation
Increased project overhead as a large number of feature requests have to be tracked for development and testing. Things can slip through cracks easily without a dedicated project management team.
Pros of agile model
Customers will see value early on. Customer collaboration is at the heart of agile.
Customer feedback is handled and integrated quickly.
Changes in industry/market can be handled quickly.
Cons of agile model
Insufficient documentation: New team members can struggle to understand the overall architecture and context if the team does not maintain documentation.
Does not work when continuous delivery is not possible: Think of an embedded device that can not be reprogrammed. In such a scenario, all features must work perfectly before the software is burnt to a chip.
Can be exhausting: With all the stand-ups, retros, demos and pair programming if you are into XP, you’ll be drained by the end of the day.
Not fit for fixed bid projects with uncertainties.
Conclusion: Which one should you pick?
Where agile would be great at managing a product review or a small feature, with constantly changing needs and requirements, waterfall becomes more useful when working on software that has a lot of weight behind it and will be included in large projects with long term planning.