Agile vs Waterfall: Choosing the Best Management Tool for Your Projects
TABLE OF CONTENTS
The Right Methodologies for the Right Projects
Management is the most overlooked yet highly valued area of creating great software. How you manage your teams is often the difference between success and failure before even reaching the marketplace. Choosing the right development tools and methodologies right from day one is a productivity boost for teams that few can afford to do without.
In practice, this means choosing a project management methodology that fits the use case, teams, and organisations you apply it to. Far from being an easy or straightforward decision, the real-world challenges of software development make this a more difficult problem than many imagine.
Agile and waterfall methodologies make up the vast majority of management techniques used across development teams today.
For at least the last decade, agile has dominated software development as a strategy for building fast and maximising output. Yet, the comparably older waterfall model still has a critical role to play in modern software engineering.
Agile methods have grown in popularity due to their ability to create chances to explore alternate solutions, build fast, and iterate on ideas. Waterfall, In comparison, is still heavily used today precisely because it takes a more considered and methodical approach to projects. Where agile places an emphasis is on building, exploration, and learning—waterfall has a focus on methodical documentation, research, and requirements gathering.
As a result, projects requiring high degrees of predictability, assurance, and cast-iron guarantees on delivery lean heavily on waterfall methodologies to deliver them. The automotive, aerospace, and medical industries, for example, rely on waterfall management styles to create reliable and safety-critical software.
So what are the practical differences when it comes to agile vs waterfall methodologies? No development team seeks out less-reliable solutions, just as no project manager wants to slow down their projects. Where does each style of project management fit software development today? And where can each be applied to deliver benefits for their developers?
Waterfall development is defined as a linear form of project management where each phase of development is completed, documented, and signed off on before embarking on the next. The expectation is that each stage should be clearly defined from the last and rarely revisited or later refined.
These phases of development include:
- Requirements gathering. Outlining a high-level view of what the product should do. An example may be that the server should manage 20,000 concurrent users or serve X number of requests per day
- Design. Creating technical solutions to solve the problems outlined at the requirements stage. This phase is more practical than the previous stage. The design should focus on specific technologies and techniques to meet the project’s goals
- Implementation. Using the outline created during the design phase, teams will build the solutions that make up the final product
- Verification and testing. Verify that your implementation meets the requirements defined in the first phase of development
- Maintenance. Ongoing for the lifetime of the project, this phase includes strategies for upgrading and updating to keep the project operational for its design lifetime
Waterfall development strategies are drawn up with the expectation that each phase of development and its deliverables are exceptionally well-defined and documented.
While the benefits of waterfall methodologies allow teams to establish project and resource requirements at an early stage, it’s an approach that also eliminates the opportunity for discovery and learning to be done during later phases of development. Paradoxically, when it comes to waterfall development, teams often find that the stage they know the most about a task is the stage they have the least power to change it.
The challenges associated with waterfall development can rapidly cascade as both technical and stakeholder requirements shift throughout a project. If thinking isn’t closely aligned at phase one, significant time and energy is going to be wasted in the phases that follow.
Advantages of Waterfall Development
- Straightforward management. Each stage and its review process is well-defined and encapsulated
- Reliable time estimates when the initial requirements are well-understood
- Processes and results are well-documented by design
- Managing project dependencies is simplified by taking a linear approach
- Easy to adapt timescales and results to varying team sizes
- Onboarding team members mid-project is made easier and faster
Drawbacks of Waterfall Development
- Almost impossible to implement if project requirements aren’t fully understood
- Very difficult to add new targets and goals as deadlines approach
- Bugs in the design and implementation are likely to be found late as testing starts after implementation
- Developers are powerless to shift design and goals as they gain more domain knowledge
Developed as a direct response to waterfall’s rigidly defined structure, agile methodologies are built to be flexible and iterative by design.
Agile development goes through a condensed series of phases centred around building functionality towards the final product. Iterative construction and discovery are central tenets of agile development methods. Where this strategy shines for developers is in allowing teams to gain a clearer idea of the challenges and technologies involved in each deliverable before committing to plans to implement them.
A blank web app, with just a bare layout, may be the target for the first iteration of development, for example. Additional phases of development would build more features and functionality to create a more interesting and dynamic user experience.
Examples of today’s most commonly used agile methodologies include:
- Scrum. The most common methodology used today. Scrum is defined by development sprints that maximise implementation time by creating distinct small cycles of development
- Kanban. A Japanese word that translates roughly to “card you can see” for its visual-first card-based management methodology. Kanban assigns functional units of work, cards, to developers as they become available within a project
- Lean Development. As the name suggests, lean development focuses on optimisation to build out from a critical core of components—a strategy that prioritises avoiding waste through the duration of a project
For teams, agile development results in a process more responsive to change and more open to learning and refinement as a project progresses. For clients, the iterative nature of the methodology means they have greater visibility and input as to how the project progresses. Stakeholders may be involved in sprint planning, or scrum meetings depending on the degree of involvement desired.
Some key takeaways from agile development are in requiring teams to be consistently improving, self-motivated, and aware of the broader context of features being implemented in a project.
Advantages of Agile Development
- Clients get additional visibility and input because they’re involved often
- Motivates and encourages self-organisation in teams
- Bugs are cheaper to fix because each phase has its own testing cycle
- Faster turnaround time to creating a hands-on prototype
- Discovery is part of the process. Teams get a better idea of the challenges involved
Drawbacks of Agile Development
- Additional management overhead of frequent check-ins
- Requires expertise from both leaders and teams
- Easy for projects to go off-track without due care
- Timescales and goalposts are more likely to change mid-project
Agile vs Waterfall at Various Stages of Development
Before any project really kicks off, it’s expected that development teams will work closely with customers and stakeholders to find out exactly what the final product needs to do. The goal, between both waterfall and agile methodologies, is to satisfy customer intent as closely as possible.
Within agile methodologies, feedback is incorporated into every iteration of development. Stakeholders are readily afforded the opportunity to assess how closely development is matching their requirements and goals with opportunities to update their own understanding of the problem as they progress.
Waterfall, in contrast, has a much lower degree of customer involvement beyond the requirements gathering phase. There is an emphasis on getting project requirements right in the early stages so that teams are aiming at a stable target as they move through the development cycle.
While waterfall development is more frugal with a customer’s time and creates better documentation as a result, agile puts a strong emphasis on ensuring the final product closely matches the expectations of its customers.
Responding to Change
No matter how hard you work to pin down requirements early on, they are still all but guaranteed to change during the course of the project. Both technical teams and stakeholders are likely to want changes to be made as their understanding of the challenges shifts with time.
Waterfall methodologies are comparatively limited in this regard. Strict adherence to process and documentation that waterfall requires leaves little room for changes throughout the project’s duration. On the other hand, this can also help to avoid teams chasing their tails with consistently updating requirements shifting the goalposts.
Agile is built from the ground up to accept changes gracefully at any phase of the development cycle. The iterative approach makes late-stage changes possible and opens a process of discovery and investigation to assist in creating a better product for the customer.
In “real-world” development, Agile is often easier to implement and more forgiving of issues that inevitably crop up. Care has to be taken, however, to ensure requirements aren’t shifted lightly. Waterfall’s methods of spending development time wisely can teach a lot about good management techniques.
Both methodologies aim to achieve the same thing when it comes to product delivery. Both agile and Waterfall methodologies target the delivery of a working piece of software to the client. The differences, in how they approach this goal, can be surprisingly different.
Agile methodologies focus on a consistently evolving piece of software starting out as a small working core before gathering functionality, design, and features over the course of the project. An iterative approach to implementing software, this typically means meeting with the customer often and revising your approach to update both their understanding and yours.
Waterfall is designed around developing a well-defined piece of software to deliver to customers as a completed solution. This strategy mirrors the way you might deliver a car, computer, or piece of machinery to a customer if building a physical project.
Agile vs Waterfall: Where Waterfall Wins
Waterfall development is ideally suited to projects that have to abide by strict regulations or requirements. Safety-critical software often leans on waterfall methodology for its processes and its extensive documentation throughout each phase of development.
Far from being an ageing management process, it’s one still highly relevant to today’s engineering. Medical equipment, defence projects, automotive, and aerospace software are fields that create highly advanced and forward-looking projects using waterfall methodologies.
In addition to projects requiring a high degree of reliability and safety, waterfall can also be used where organisations will benefit from a highly-defined scope, timescale, and/or budget.
Agile vs Waterfall: Where Agile Wins
Industries and organisations intent on moving fast in their development, experimenting with prototypes, and still ‘finding their feet’ in projects can benefit from an agile approach.
Projects where the client still has questions about the challenge they are attempting to tackle can greatly benefit from iterative problem-solving. Agile allows for these teams to get early versions of the product, discover how it works, and makes it easier to visualise further stages of development.
The Right Methodologies for the Right Projects
When it comes to choosing between agile vs waterfall, it’s typically the needs of the project that will dictate how to proceed. The key factors to consider are the rules and regulations, customer involvement, and the timescale available for development.
The only thing missing from our analysis is an approach used by teams all around the world: a hybrid methodology.
Sticking rigidly to the tenets of one methodology at all costs is rarely ever possible, or advisable, in the real world. Experienced teams know how to pick and choose the features of both to favour certain situations and meet tricky project requirements.
Applying agile methods without a customer or stakeholder available, for example. Rigidly defining requirements and regulations in an iterative project, or incorporating regular feedback into a waterfall methodology. Each of these is a common requirement that adapts the specifics of a methodology to meet a particular use case.
Both waterfall and agile have clearly defined roles in the world of software development. Yet, both are consistently evolving within teams and organisations for every project, customer, and platform they encounter. More often than not, experienced teams take the best of both solutions, defined here, to maximise effective delivery and create the best solutions for clients day after day.