Waterfall v Agile: How Should I Approach My Software Development Project?

Agile Project Management | By Duncan Haughey | Read time minutes

Male hands holding two pink hexagonal signs; one saying waterfall and the other saying versus agile

Today, software development projects use one of two project management methods: waterfall or agile. Both have pros and cons, and each method has its advocates who espouse the value of their chosen approach.

This article looks at both ways to understand the circumstances for using either a waterfall or agile approach. I'll answer the question, how should I approach my software development project?

The Waterfall Method

The waterfall method has been around since the 1970s and remains in everyday use. It follows a distinct set of steps through the lifecycle of a project. Here is a typical set of waterfall stages:

  1. Requirements Analysis
  2. High-Level Design
  3. Low-Level Design
  4. Coding and Unit Testing
  5. Integration Testing
  6. System Testing
  7. Implementation
Diagram showing the Waterfall software development method
Figure 1: The Waterfall Software Development Method

We call this approach the waterfall method because each stage follows the previous one after completion, cascading down like a waterfall. Like a waterfall, it flows down and never flows up. Many people regard this method as safe.

The waterfall method works well for commercial arrangements where contracts are signed and money paid. However, when working with internal customers in your organisation, it can be challenging to refuse last-minute changes when the people asking already have the backing of your senior management.

Pros and cons of the waterfall method.
ProsCons
Detailed documentation and metrics.Perceived slow start.
Agreed and fully signed off requirements.Fixed requirements are challenging to change.
It can be delivered using developers with a lower skill set.No customer visibility of software until most development work is completed.
Reduced number of defects through more rigorous planning and design stages.Lacks flexibility making it difficult to change direction quickly.
Defined start and end points for each stage, allowing progress to be easily measured.Customers can be unclear about their requirements at the beginning of a project.

The Agile Method

The agile method refers to an iterative approach to projects. The term emerged in 2001 with the publication of the Agile Manifesto.

The requirements and solutions evolve through collaboration between the customer and the project team. The agile method creates deliverables early in a project and refines them through an iterative approach involving the customer.

Diagram showing the Agile software development method
Figure 2: The Agile Software Development Method

You may find that some stakeholders view this approach negatively. If your manager is worried about you making perceived mistakes before your customer, this method may not be for you.

A case in point…

During a project to deliver a video homepage for a customer's website, the first iteration we produced was close to the example provided by the digital design agency. The testing of this iteration revealed some errors that needed fixing. These errors were trivial in respect of the development effort required to fix them.

My line manager saw this as a failure to deliver the customers' expectations and an embarrassment for the team. In my view, our delivery was ninety per cent right, and the errors only needed a few days of development effort to fix. This first iteration had allowed us to understand the customer requirements fully and for the customer to communicate their expectations.

After being suitably rebuked, I did not doubt my manager's feelings. I wasn't to allow this to happen again. In future, all work would have a fully agreed and signed off-specification before writing a single line of code.

Interestingly, the customer seemed happy with the agile approach as it enabled them to see work in progress and make comments during development.

Does the agile method lead to a faster delivery?

That's debatable. Just because you start coding early doesn't necessarily mean you'll finish sooner. However, it can ensure the final deliverable meets the customers' needs by providing their insights during the project.

Pros and cons of the agile method.
ProsCons
Quick start, incremental releases with regular customer reviews and feedback.Misinterpreted as unplanned or undisciplined.
Evolution of customer requirements over time.It needs a high-quality, customer-facing development team.
Provides the ability to respond to change quickly.It needs a high level of customer commitment to stay involved throughout the project.
Less rework is achieved through continual testing, customer involvement and feedback.Lack of detailed long-term plans.
Real-time communication with the development team and customer.Lower levels of documentation and metrics are produced than with the waterfall method.

Conclusion

So which method is best for your project, waterfall or agile?

There is no right or wrong - better or worse. The method you use depends on several factors, some of which are listed here:

Benefits of Waterfall v Agile Methods.
WaterfallAgile
Requirements are clear and settled.Requirements are uncertain.
The customer prefer to set requirements and see results.The customer likes to be involved.
Quality over speed.Rapidly changing market, meaning the need for speed.
Management demands metrics and documents.Management wants working software, not artefacts.
Many dependencies.Few dependencies.
Team members only know one role.Team members can do many things.

It's crucial as a project manager to select the method that best satisfies your customers' needs. The problem comes when there's a difference of opinion. In these cases, choose the approach that will deliver the best result. Carefully manage anyone who disagrees.

In the end, both methods will deliver your project. It's about managing the expectations of your customer and providing a quality product. After all, once you reach the journey's end, nobody worries about how you got there.


: Since writing this article, the author acknowledges that agile methodologies have become mainstream and are the most common approach for delivering software development projects.


Recommended read: Which Life Cycle Is Best for Your Project? by ExecutiveBrief.

What's Next?

You may also be interested in