Waterfall vs. Agile: The Good, The Bad and The Misunderstood
At the start of any development project looms the big question, “What project management method is best for this engagement?” While there are seemingly infinite options available, the decision is usually whittled down to two main choices — waterfall vs agile.
The best development methodology is an ongoing and healthy debate amongst developers and project managers. The choice of project management method seems to rest on personal preference, habit or customer request. But, is that the best strategy for making a final decision? Arming yourself with the factual advantages of each method will lead to an informed decision that will ultimately impact the success of your project.
So, what’s the best methodology? Well, it all depends!
Factors: What type of project is it — building from scratch, adding on, or connecting two applications? Has it been well defined — or can it be? What’s the time frame? Is there something beyond the project that’s driving completion? Will scope changes be part of the development model while the project progresses? How do you know if the project is successful? Do you have a team available, or will you put one together as you go?
To answer these questions and determine what approach to choose, we will delve into the pros and cons of waterfall vs. agile.
Let’s first explore the waterfall method; this has been around much longer and is a more classic approach to project management. Key features include:
- Detailed schedule and scope planning at the beginning of the engagement
- A sequential design, build, test, deploy process
- Relies on detailed documentation
- Final product is rigorously tested across user groups once the project is complete
The waterfall approach is the best fit for a project with strictly defined requirements and a crystal clear goal of what constitutes success. It’s a good fit if you have a dedicated team, or if you can accurately predict when team members will be available. It works well when there are strict budget or timeline constraints. Waterfall is strong in application integration, where the integration points and rules are well defined and documented, and for migrations, where the beginning and end states are already known.
Benefits for using this method include:
- The plan is repeatable for similar projects with little or no change. For example, if you’re integrating a number of third-party applications into your platform, chances are you can run similar waterfall projects for each one, saving yourself a huge amount of time planning and organizing.
- Waterfall projects do well at setting, managing and meeting client expectations. Before the build phase of the project commences, everyone knows what to expect as far as size, cost and timeline. They also know what compromises have been agreed to in order to meet those goals.
- You reduce the risk of employee turnover. Because of the meticulous documentation and planning, a different project manager or developer could step in mid-project, and there would be relatively minor interruption to the flow.
- Waterfall projects clearly define opportunities for improvement. In a well-defined waterfall project, it will be clear when adding a team member will help you accelerate your timeline. And who doesn’t want their project out the door faster?
Some drawbacks to the waterfall approach are the lack of flexibility and room for error. The project is mapped out detail by detail before the engagement even begins, leaving no room for error. If a mistake is made in the planning process, a requirement is missed or a new requirement surfaces mid-project, the project experiences serious delays and disruption. If your organization runs multiple waterfall projects, a delay in one can cause delays in others, as important resources are not available. Additionally, this planning simply takes a long time, and the delay in beginning the project can have other costs associated with it.
Another drawback is that testing is only done one time at the end of the project. In a larger waterfall project, going back to find and fix flaws becomes more difficult and time consuming. This requires that unit testing and code review be done rigorously throughout the project, and that test cases be meticulously detailed to help developers build the right things the first time around.
Perhaps the biggest drawback is that there’s no room in the waterfall methodology to cater to changing needs. In today’s changing marketplace, new ideas, technologies and competitors appear frequently, and users have valuable input. The inability to adjust to these on-the-fly can be the Achilles Heel of waterfall.
The agile development approach is quite different from waterfall. It’s open, flexible and suited for changing expectations. The agile methodology:
- Welcomes contribution of outside input along the way, shaping the final outcome
- Allows for correction during the course of the development cycle
- Uses a collaborative, team-driven approach
- Follows an incremental development plan
- Requires close collaboration with the stakeholders and the development team
Most people share the experience that agile can deliver faster results along the way, although final delivery can take longer. Where waterfall needs everything defined up front, agile fits best with projects where everyone acknowledges that all requirements can’t be known early in the process. Agile methodologies tend to be good for product builds and other projects where the overall usefulness of the final product is more important than a predefined set of features. Agile is also good for projects that have outside pressure — in these cases, showing forward progress often has its own benefit in helping customers or other stakeholders become comfortable with your efforts. Agile is almost a requirement for mobile apps, healthcare applications and other situations where technology, regulations or market conditions are rapidly evolving.
Remember, agile is really a group of methodologies, each of which have their own special focus and strengths. In general, benefits of agile methods include:
- A rapid kick-off process, which lets you start the project with what you know without waiting until everything is perfect
- Flexibility to adapt to new needs, additions, priorities or corrections along the way, because you define requirements “just in time,” before you develop them
- Ongoing testing throughout the process, instead of one big test cycle at the end — Quality Assurance teams are involved day-in and day-out, helping developers correct course quickly and minimize rework
- Ability to launch more frequently and get your application in users hands (generating revenue or at least app store reviews).
One of the challenges that the agile methods often face is the uncertainty around scope and schedules. While the flexible timeline is often seen as an advantage, loose timelines can also make stakeholders nervous that the project will run over budget. To help counter this, agile projects require a strong, experienced project manager, because they’re responsible for delivering quality amid a series of ever-changing expectations and requirements.
Another difficulty in agile methods is measuring success. Where waterfall has a clear set of deliverables, agile projects have the risk of becoming never-ending, adding “just one more thing” ad infinitum. Agile projects require ongoing involvement of all key stakeholders throughout the project lifecycle to focus on true user needs, rather than on all the nice-to-haves.
Additionally, agile projects can suffer large impacts from mistaken architectural decisions. Because teams figure out requirements as they go, decisions can be made early on in a project that have a larger cost to change later on — and this is especially true when the mistake is in the underlying architecture. Some agile methodologies advocate a “Sprint 0,” a time before normal sprints begin when stakeholders collaborate on project ground rules to avoid major missteps.
Every Project and Company is Different
Agile and waterfall are used by development teams across many companies today. In fact, many companies use both in different contexts. Contrary to what some may say, neither approach is intrinsically better or worse than its counterpart; it’s all a matter of using the best fit for you and your project. The key to figuring out the right one for you is to clearly define stakeholder expectations and needs. Look at the market, the technologies, available resources, timelines and budgets, project requirements, and the intangibles, like your customer goodwill and market perception. Make the best decision for you.
At GlowTouch Technologies, we’re method agnostic. We’ve delivered software and application development projects for companies worldwide using both waterfall and agile methodologies. It’s our job to deliver exactly the development you need. To that end, we work with you to identify the right method for your project and guide you to the most efficient, cost-effective solutions for you.