Waterfall vs Agile: What to choose?
What is Agile and Waterfall?
The Waterfall methodology or model is the traditional approach to project management. It breaks down the stages of a project into sequential phases. This approach was first recorded to be used as far back as the 1950s, but the actual term 'Waterfall wasn't used until the 1970s.
An Agile model is an iterative approach for creating products by releasing small increments of work that allow for fast feedback and as you build your product. Agile practices were first being used in the 1990s, but it wasn't until 2001 when the Agile manifesto was created that it really took off with frameworks like Scrum becoming increasingly popular.
What is a Waterfall Methodology?
The Waterfall methodology is a set of sequential stages which you must pass through before you can move onto the next one.
The below example of typical Waterfall stages, assume you’re creating a digital product like a website.
Requirements: Collate all of the product requirements and document them. This could be documentation like functional requirements, architecture documents, or business rules.
User Experience: You then develop the product experience through user flows and wireframes.
Visual Design: Next, you create the visual designs, so the branding and the look and feel
Development: The Developers then build the website as per the designs and original requirements
Testing: The Quality Assurance team then test the website using the original requirements to guide them
UAT: The client then typically has a UAT (user acceptance testing) phase to verify what they have asked for has been built.
Advantages of the Waterfall approach
You can define what's needed up front, so everyone is aligned with what's required, by when and how much it will cost.
It's evident what stage you're currently in and the team that's needed to deliver it. This makes planning your team's time more manageable as well as the budgeting required at each stage.
Each team can build the product almost in silo after the requirements phase, as everything is agreed upfront.
You can spend a lot of time designing the compleye product as you need to understand everything that is required and how you'll do it.
As all the development (the build) is completed in one stage, multiple aspects of the development has to happen in parallel.
Disadvantages of the Waterfall approach
What you define as the requirements in the first stage might not reach the customer's hands until after the final UAT phase. By this point, it might not be what the customer needs or wants.
As each stage is sequential, the handing over of information at each stage (requirements to design, design to development, development to QA, etc.) involves high effort and is open for misunderstandings and mistakes.
It doesn't create a one-team approach as the teams work in silo.
Although the requirements phase is detailed, you can't think of everything, and new requirements will come up in the later stages. This impacts time and budget.
What is an Agile methodology?
An Agile methodology or framework is an approach to build a product or service iteratively.
Initially, it was an approach for software development, but it's now used by many different types of companies, products and teams.
An agile approach defines the requirements, designs the product, build and tests concurrently, well almost, but certainly not separated into sequential stages like the Waterfall approach. The teams continuously work together building the product or service gathering feedback from customers early and throughout.
Advantages of the Agile approach
You build the product iteratively, which allows the team to create the product piece by piece, rather than trying to design everything upfront and trying to answer all the questions on how to do it.
You work on what is the highest value item for your client and user at that point in time.
You put the product into the customer's hands early to learn what works and what doesn't.
It creates a one-team approach, as what you build is created by all team members at the same time.
You're not bound by a pre-defined set of requirements, which means there are no change requests or time extensions
You typically work in time-boxed iterations within frameworks like Scrum where you demo the work completed with your client or customers in weekly or two-week increments. This creates a continuous feedback loop.
Disadvantages of the Agile approach
Most companies still work with a Waterfall approach in some form and struggle to adapt to an iterative build process.
There is a misconception that there isn't much planning with an Agile approach which isn't the case, this reduces the confidence in clients who want to know exactly what they'll get ahead of time.
Your client needs to spend a high amount of time with the team/on the project throughout for this approach to work.
If the team are not co-located, then close collaboration is difficult and can impact productivity and team morale.
An Agile approach requires far higher empowerment of the team versus a Waterfall project. Without empowerment, this can impact productivity and team morale.
How do you choose?
If you're picking an approach starting from a position of never worked in either way, then don't try to use these approaches straight out of the book, so Waterfall or an Agile framework like Scrum. You need to look at the principles of each method to see what works for you, then adapt them to your company and product. If you try to shoehorn a fixed approach, you'll likely fail.
If you go for the Waterfall approach, then you should be in a position where you know exactly what you need to do and exactly how you'll do it, plus you've done it many times before. If this sounds right, then a Waterfall approach could work for you. If you also need to fix the cost and duration upfront, it has an advantage when it comes to an Agile approach.
This does include risks though, as having an approach where you think you have complete certainty of what you'll do, in reality, it doesn't always turn out that way.
If you know what you want to build, but you don't how or haven't done it before, or if you do know-how, but you haven't done it before, then an Agile approach is for you. Agile gives you the flexibility to learn what you need at the right times versus trying to work it all out upfront.
Agile also allows you to adjust your priorities, as what you think is needed today for your product, might not be the case in a few weeks when you come to build it.
The key is finding what works best for you, your company and your product is don't try to go with a one size fits all. Create an approach that gives you the stability and confidence you need, but also maintaining a value-driven approach.