Agile Vs Waterfall. You hear about the different methodologies all the time. I can’t count how many times I have heard that someone say “that is Agile process”, or, “that is Waterfall process”. But what exactly does that mean?
In the following, I compare and contrast these different software development methodologies. With a focus on how they apply to your engineering and product development teams.
Table of Contents
Check out Escaping the Build Trap to build in a more Agile way
The build trap is an idea that comes about when organizations try to take on building everything. They try to build the most comprehensive features without fully exploring the value to be gained. That is often a Waterfall habit. Build in a more Agile way and escape the idea of the build trap.
Agile as a set of ideas
Agile is a set of values and principles that help teams organize around software and product development work. Ideas that help teams to work together and collaborate more effectively. Keeping the goals of their work in mind.
Agile emphasizes teamwork over the individual. Agile practices leverage ideas of working in smaller increments of work. So that the team can complete pieces sooner, learn from it, and then make changes as needed. All so that they can meet the goals of the work.
Agile seeks to work off top priorities. Keeping the list of work smaller, to enable faster movement on those smaller pieces of work. An attitude of focus to finish and to do so quickly.
Agile also emphasizes the fact that the team needs to start the work. Keep work smaller so that they can get started sooner. As teams won’t know everything about the work before they start. If you require knowing more about it before you start, it will take longer to start. Thus even longer to finish.
Agile also came to be, largely, in direct response to more traditional practices like Waterfall. Where the time to complete work was more extensive. This was because work was not broken into smaller pieces, mainly.
All of the work needed for a feature or project was all-inclusive. It was all worked, in a big bang approach, until completed. Meaning it took longer before it could be implemented. But the main issue with that is not that it took a long time to complete, but more that it took a long time before you learned about the work and if it was successful.
Here are some of the most notable benefits you get from using an Agile methodology. I want to stress one point on these benefits. Really part of the whole Agile vs Waterfall conversation. These are benefits that you could, should, or maybe even be likely to receive.
They are relative and you may experience them to varying levels of success. Most importantly though is that they can always be improved upon. Keep improving your Agile processes and you can keep seeing gains in these benchmarks and standards.
- Shorter development cycles
- Focus on customer feedback and customer needs
- Agile leverage more of a product development mindset, with focus on the readiness of the product
- Higher quality and achievement of goals
- Flexible and responsive to change
- Flattened management hierarchy via empowering of the team to make work decisions
- Promotes teamwork and collaboration
- Better solutions to problems and goals
- Focus on objectives, goals, and or problems to be solved
- Requires less management overhead for the team
- Newer ideas and popular processes for software and product development
- Productivity is encouraged because of the shorter timelines
- High performing teams require little oversight, making management easier for some teams
- Agile requirements are expected to evolve
Downsides of Agile
- The cost to ultimately achieve goals can be very much unknown
- Estimates, in general, do not have a lot of time or resources spent on them
- Lack of formal process and responsibilities can hinder less experienced team members
- Because teams are somewhat autonomous and self-directing, management of teams can be a challenge
- Requires team initiative to drive the work
- Because of the above, management across multiple teams is even more challenging
- Aligning multiple teams on shared goals, objectives, and the work to get there is challenging
- Work timelines are often difficult to estimate at the start
- Teams that are not high performing may struggle to stay on task and work the right things
- Deliverables are not a requirement before the next phase, which can cause confusion
Organizational culture may not be ready for Agile
Organizational culture may not be ready for Agile and still expect a lot of things that Agile does not provide. As an example, organizations may be used to working on large projects. These large projects contain a lot of functionality that will be created or updated with the project.
In Waterfall, the work would be more/less defined, estimated, resourced, and planned upfront. Before ever starting the work.
However, in Agile, most of those steps don’t really occur. Because the whole intent is to break apart that large project into smaller pieces of work. Find the most important piece and go work on that.
Yet, organizational culture may still try to plan around the idea of the project. They want to sell to customers. They want to train on the systems. They want to understand the cost to forecast and budget. There are many things done off the larger Waterfall plan for a project.
But, Agile does not do most of those items. Agile often is estimating in smaller pieces of work and largely just before the work is to be done. Agile often doesn’t plan out an entire system. This also means that in an Agile process you are not planning the resources or time frame for a large system project.
This requires an organizational cost to adapt Agile. Teams must understand what they will get and maybe more importantly, what they will not get from Agile.
Especially the teams outside of software and product development. The teams not directly involved in the process, but need or use the end results. They may not see as much visibility into the work progress. They may also feel like there is not as much long term planning of work to be done.
These are side effects of teams working in an Agile development methodology. This is a main difference in Agile and Waterfall.
What is Waterfall
Waterfall is one of the first software development methodologies. The entire purpose of Waterfall is that you cascade through a process, step by step, until ultimate completion.
It is a phased approach to building. An assembly line for software development. Where you complete a given step, in its entirety, and that allows you to move to the next step. The work moves a step at a time and always in that direction. There is no room for changes to the work or adjustments to the process. Waterfall moves in one direction and does so very deliberately and sequentially.
Typically the steps follow something like project initiation, requirement gathering, analysis and design, coding, testing, and implementation. Each step along the way completes information and further understanding of the work that enables the next step. There is little blurring between the steps. The steps also require full completion in order to proceed.
Waterfall is a linear progression of the work. With a fixed starting point and well-defined steps for the work along the way to project completion. There is no room to change the work along the way, at least not substantially.
This leaves little flexibility for the Waterfall project to adjust to previously unknown information or changes. The same for changing goals or the fluid nature of the business that could cause changes to the project work to be required.
- Plans for all of the work in very good detail
- Defines needed work to achieve goals
- Step by step process thru the full software development lifecycle
- Fixed timeline for the work can be defined, as the work is defined up-front
- Formalized process that controls the work
- There can be better whole system designs as the goal upfront is to understand everything
- Defined team roles
- The defined nature of the work does allow for fixed project costs
- Little user collaboration
- Time and cost can often be estimated after the requirements are understood
- Documentation can be part of the phases and deliverables of the work, thus built in and completed effectively
Downsides of Waterfall
- Requires extensive planning in order to begin the work
- Mistakes are often found later in the process
- Takes longer
- Not flexible to change
- Often there is little customer involvement
Agile Vs Waterfall and why to care about it
The question lingers for most software and product development organizations. Which methodology should they use? In my opinion, there is a surprising reason that this matters to you. It’s not what you think either. It is not about a higher quality of the software product. Or being more flexible to change. It’s not about any of the benefits of Agile, over some of the downsides of Waterfall software development.
It is about the happiness and sustainability of the team. Agile allows for a better and more sustainable work environment for those doing the work. If you work within the ideas of Agile.
When you work in Waterfall, you have large projects with big risks. That can be very stressful. In Agile, if you do it right, the risk is spread amongst smaller work items and less of a mental drain on the team.
That said, you do need to work in Agile. If you work in somewhat of an Agile process, but large parts of the organization still have a lot of Waterfall habits and tendencies, that is a stressful beast on its own.
So in the question of Agile Vs Waterfall, Agile again wins out.
Agile Vs Waterfall and the time to deliver
A major reason Agile is so much more powerful is by allowing teams to deliver in smaller increments of work. Which allows things like quick delivery of value, and learning to adjust the course of the work. Check out the below illustrating the difference in time to deliver of Agile Vs Waterfall.
Agile Vs Waterfall – how to pick the methodology to use
The type of systems or type of work can be a driving factor. Work that is less critical in nature, if something were to go wrong or have issues, can benefit from the Agile approach. IE, web software development for non-mission-critical systems. Because these systems have the ability to handle problems without catastrophe. Which, in Agile, you can quickly learn from the problems and course correct to do even better.
Another way to help pick is if projects require very specific and formalized processes to define the work and approve the changes. Sometimes based on the company environment or typical practices of a company, every piece of work may need to be well defined and approved before it can be worked on. Whether necessary or not for the work, that can be the habits of some companies.
Working in Agile in this type of environment is very difficult. You will continually be working against the process, trying to figure things out before the work that Agile does as part of the work process itself. This is where Agile vs Waterfall ideas come into play. Agile largely exists to help mitigate or resolve multiple issues from Waterfall development.
Agile Vs Waterfall – My Clear Winner
It’s not even a question for me. Agile is the winning methodology. Because of its flexibility. Also because of its built-in problem-solving and team solution-building tendencies. All of that is great. To me though, the real reason is the time to deliver, and because of that the opportunity to learn.
With Waterfall, as discussed already, you take on a large project and work it through to completion. There is little chance to learn about gaps, mistakes, or anything like that until the end of the project.
Agile, however, promotes building in smaller pieces. And working by priority. So that you can do some work, implement it, and then learn about it. Allowing you to correct or change course as needed. That is immensely valuable and is a primary reason for the creation of Agile in the first place.
It’s in the name! In the question of Agile Vs Waterfall, I don’t hesitate on a pick. Agile is the clear winner to me.
Additional reading that helps with understanding Agile vs Waterfall
To really help understand Agile vs Waterfall, dive into the varying processes that can help with Agile software delivery. These are things like Just in Time Requirements, or Vertical Slicing of user stories. There are also concepts with flattened management hierarchies and team empowerment. Going a step further, there are practices with good user interaction and collaboration via strong feedback loops. Because teams can learn faster with feedback than just about any other process. Do, then earn from it, then do even better!
Don’t forget some of the frameworks that help with user stories, like INVEST. That is a practice that will help to write better user stories in Agile development. In Agile vs Waterfall, a framework like INVEST helps greatly to get work ready for the team.
Continuing the practices that help understand Agile, there is the idea of focus to finish. This spans 2 basic concepts. The first is prioritization. To work on the right things and deliver value to your organization you have to have correct priorities to work from. The 2 second is to limit work to acceptable amounts, to enable the work that you do have in progress. This is a big part of Agile processes and helps to understand Agile vs Waterfall.
A great article from Forbes on Agile Vs Waterfall. Or, check out https://project-management.com/agile-vs-waterfall/. Another great article discussing the Agile and Waterfall methodologies can be found here.