With rising competition to deliver early and efficiently, organizations are faced with frequent decisions on what is the best methodology to use for software development? The decision is not always an easy task. Is the project a customer-value added work or is it business-value –added work? Or is it neither and adds nothing but overhead.
Keeping these factors into mind, we have decided to make a head-to-head comparison of two of the most widely used software development methodologies (Agile vs Waterfall) and assess where each one can be best employed at.
What is Agile?
Agile is a lean, modern approach to software development, created essentially as a solution-response to the drawbacks of previous methodologies. Given the name, Agile emphasizes on early-delivery of the product and supports adaptive and flexible changes that can be made at any point in the project’s lifecycle.
Agile methodologies contain a wide range of different forms: SCRUM, Extreme Programming (XP), Feature-Driven Development (FDD) and Crystal.
9th Global Project Management Survey 2017, revealed that approximately 71% of organizations use Agile approaches.
Principal Mechanics of Agile
The agile workflow operates on the following principles:
Iterative approach – Development is fragmented into short time frames known as iterations, that last 2-4 weeks. Each iteration involves cross-functional team performance that focuses on delivering the finished product by the end of the given timebox.
Change-management – Each stage of development undergoes progress review and analysis to ensure customer satisfaction aligns with the scope of the project. Changes are encouraged to be made and adopted whenever required for optimization and improvement purposes.
Prioritization – Team works in complete harmony in all domains of a development phase: planning, designing, coding, testing, and evaluation. Each team unit communicates with the other unit to share their progress report and work collaboratively to mitigate existing loopholes or imminent roadblocks.
Agile Development Life Cycle
The Agile Development Life Cycle is a breakdown of the work done into these six steps:
Plan: Once the larger picture for the scope of the project is finalized, the outline is broken down into smaller, easily achievable objectives. Each of these objectives is then assigned to iterations that have goals and features exclusive to themselves.
Analysis: In the analysis phase, the team comes together to outline the main requirements of the project. Meetings between stakeholders and managers are conducted to realize the purpose and demographics of the usage of the product.
Design: The team begins work on software design and the system design using the requirements established in the analysis phase.
Coding: This is the implementation phase where the development begins with the very first iteration. Features and aspects of the development are created and then tested for flawless functionality.
Testing: Once the coding and development are completed, it is then tested for business requirements and possible bugs. This phase is characterized by all kinds of testing that can improve production efficiencies such as unit testing, systems testing, integration testing and acceptance testing.
Deployment: This is the last phase of an iterative cycle in which the finished product is deployed to the customers. Customer feedback is obtained, and any likely changes or improvements needed to be made are then incorporated in the next iterative cycle.
What is the Waterfall Model?
Dating back to as long as 1970, Waterfall, is a traditional method of software development that functions in a sequential format of development. It entails a step-by-step progression of the process, where each phase proceeds in a linear manner, making it easy to manage and understand.
According to a report published by Gartner in 2015, 56% of project management methods comprised of waterfall methodology.
Principal Mechanics on which Waterfall Model Operates
The Waterfall Model operates on the following principles:
Distinct Goals: The long-term scope of the project is determined before development begins. The project managers, stakeholders, and clients all need to have a clear vision of what the end product will shape out to be.
Time-Boxing: Each phase is designated a fixed amount of time. Once the phase is completed, it is made to freeze so there is no return path to the previous step.
Independent mode of work: Each team for a specific domain, works on individual goals with little or no collaboration with teams working in other units.
Key Aspects of Waterfall Methodology
The Waterfall workflow can be visualized in the following steps:
Requirements: Much like Agile, this is the first phase that enlists all the technical and non-technical requirements of the project in a requirement-specific document. These requirements are strictly permanent that define the role and outlook of the end product.
Analysis: The team conducts an analysis of the systems and techniques used to conduct product development.
Design: Design specifications like services, programming languages and data layers are determined and finalized.
Coding: In reference to the requirements, analysis, and objectives created in the previous stages, the development team writes the source code in the fourth stage.
Testing: In this stage, all types of testers, begin testing the finished version of the product for any number of errors and bugs.
Operations: The operations phase is responsible for deploying the complete and tested version of the product out into the market.
Agile vs Waterfall Pros & Cons
Since Agile is a contemporary software development methodology, it provides a myriad of benefits and advantages to IT teams who choose to work using it as their primary methodology.
In an HP online survey of 601 development and IT professionals, 54% of respondents stated that after adopting agile methodologies, they experienced enhanced collaboration between teams which did not exist otherwise. Whereas, 43% said the time taken to market was massively reduced.
However, not all project types and scenarios fare well with the liberal features of Agile.
Let’s take a look at both the Advantages and Disadvantages of Agile.
|AGILE ADVANTAGES||AGILE DISADVANTAGES|
This is the most important advantage of Agile. As development is done in iterations, the team has flexible access to return back to the previous stage to make any sort and size of changes.
|Lack of a finish Date:
Because an agile project works in short cycles of iterations, it can be hard to assign a defined due date to the project timeline.
|Fast product delivery:
Work performed in smaller chunks allows team members to finish on time. Also, since coding and testing is conducted synchronously with the plan and design phase of the development, all changes and improvements are adeptly made with the moving workflow.
This increases the likelihood of an early product launch as well.
|Time-consuming for developers:
Corrections and improvements made at each cycle add an extra load of work on part of the development team. This is likely to result in additional time if dedication and competency are not exhibited by the members of the development team.
Customer feedback at the end of each iterative cycle allows equal customer-participation in the outcome and design of the product.
|Not favorable for remote teams:
Since Agile Teams are built for closely-knit communication, all team members need to be in close proximity at all times during work to carry that level of communication effectively.
|Increased team collaboration:
Agile encourages teams to work together by setting an alignment with their goals and objectives. Transparent and frequent communication between different team units permits a greater degree of productivity and erases chances of conflict.
|The uncertainty of end-goal:
As Agile does not enforce the project to have a strict outline at the start, the end result of the product can shape out to be completely unexpected and grossly different from what the initial business requirement was.
|Increased product productivity:
Agile facilitates a constant room for improvement. At the end of each iteration, the finished product is tested for loopholes and made to improve after each testing cycle is completed.
The improvements are also a continuous part of the development as customer feedback is retrieved throughout the project lifecycle.
|Flexible & evolutionary:
Agile supports evolving ideas and decisions to fit into the scope and development window of the project. This is especially beneficial for software apps and tools that do not have a defined end-goal and are subjected to changes based on customer experience.
Although, ever since Agile stepped into the limelight, Waterfall methodology has now largely become hackneyed but the linear approach to software development still has a set of benefits exclusive to itself.
Here are a set of both advantages and disadvantages of Waterfall methodology:
|WATERFALL ADVANTAGES||WATERFALL DISADVANTAGES|
|Suitable for goal-oriented projects:
Small-scale projects that have a defined scope, or large-scale projects that have concrete milestones to achieve work best under the waterfall approach.
Does not allow developers to return back to the previous stage to make changes
The inability to return back to previous stages for alterations and improvements might appear rigid but from a more conservative lens, however, it instills discipline, a stronger work ethic, and organization in team performance.
|No client input:
Does not allow user feedback until after the product is deployed
|A minimal amount of resources:
Requires less number of team members
|Lack of a reboot:
The plan and design have to be outlined at the start of the project. However, if any sort of design error or technical faults erupt, the entire project can be jeopardized.
|Ease of application:
The step-by-step model where no stage overlaps another is easy to implement and manage.
|Not time effective:
As the development does not take place in the small time box, and each step has to be completed before the next step begins, the time taken to complete a project is lengthy.
Also, stakeholders, clients and project managers can’t obtain a rough idea of the product outcome until each phase is completed.
Agile vs Waterfall: Which Methodology to Use and Where?
No single methodology can be wholly relied on for perfect deliverance in terms of time, efficiency, productivity and project management.
Which is why it is best to analyze each project scenario against a set of following questions:
Does the project require a clearly defined scope?
Yes: Use Waterfall. No: Use Agile.
Does the end product require constant customer feedback?
Yes: Use Agile. No: Use Waterfall.
Is rapid product delivery more important than the quality of the product?
Yes: Use Agile. No: Use Waterfall.
Is the development team competent enough to work in evolving environments and willing to adapt?
Yes: Use Agile. No: Use Waterfall.
A cluster of technical questions, however, does not always guarantee an easy decision-making choice. Which is why we have selected three case studies that tell us between Agile vs Waterfall, which organization has adopted what and why:
At Cisco, Agile was primarily utilized for small projects with smaller teams up until four years ago. Large-scale projects that were more complex and operated by larger teams were still managed via waterfall.
To replace sporadic releases with rapid delivery of new features, Cisco Cloud and Software IT, transitioned to Scaled Agile Framework. It appointed three Agile teams (Agile Release Trains) for capabilities, defects & fixes and projects, for the Subscription Billing Platform.
As a result of this transition, Cisco experienced the following outcomes:
- 16% drop in defect removal efficiency ratio compared to when waterfall was used
- 40% drop in critical and major defects in comparison to Waterfall
- Improved Team collaboration and focus, as compared to Waterfall where teams missed deadlines
- Quick release cycles that otherwise exceeded 3 months in Waterfall
Waterfall Model Example
Devlab, has been employed in providing an open source ERP software system for over 10 years. Ever since the start of their business journey, Devlab has been using waterfall methodology for software development and has modified it to accommodate the needs of their customers.
At Devlab, waterfall methodology has proven itself to be conducive to their business requirements and no such technical difficulty has surfaced that would propel the company to shift to a different methodology.
“Our business model is to sell implementation project and support and development of our ERP system. The waterfall model, even though it’s a strict sort of way of working gives both us and the customer the knowledge after the specification. I would say that in a smaller project the way we work is still quite fast, even though it has a lot of steps because you know it could be that the customer today is complaining that he doesn’t like how this one functionality work and tomorrow he already have the new version of it and we have done all the steps even though there is a lot of steps you can be quite fast with the waterfall model.” (Sundell Timo, 2.Oct. 2013).
Agile-Waterfall Hybrid Example
The Public Health Department of Jember, Indonesia used the hybrid model of Agile-Waterfall, to develop an information system for the surveillance of Dengue virus infection. The information system was designed to assist epidemiological investigations in sharing their findings with the Public Health Department so preventative measures could be taken in controlling dengue virus outbreaks.
The combination of Agile-Waterfall techniques in the development of the information system focused essentially on eliminating their shortcomings and highlighting their strengths.
Use of Hybrid Agile-Waterfall delivered the following outcomes:
- Fast product delivery helped in faster reporting of patient data, a number of outbreaks and cases sighted at various hospitals and clinics.
- Parallel customer feedback aided in early improvisations in the system which in turn assisted epidemiologists in formulating policies, strategies and guidelines on time to prevent the mosquito-based spread of the dengue virus
A KMPG survey on Agile Project Delivery 2017, stated that 76% of respondents in Belgium and Netherlands think that Agile methodology will prevail over Waterfall methodology by 2020. While 85% of businesses believe that waterfall will not phase out and will survive.
Traditional or New, both methodologies have a set of weaknesses that cannot be ignored. A chief reason why we believe there is no real winner in the ring of Agile vs Waterfall.
Review the Agile vs Waterfall Comparison Table below to decide for yourself.
|PROJECT FACTOR||WATERFALL APPROACH||AGILE APPROACH||VERDICT|
|SCOPE||Works well when the scope is defined. Doesn’t support changes.||Suitable for projects with an unknown scope. Advocates and facilitates change.||Change is conducive as it is inevitable. But change comes with additional cost, effort and time.|
|CUSTOMER INPUT||Supports customer input at major milestone stages only.||Encourages customer feedback at all points during a product development.||Customer involvement is beneficial to both models.|
|Doesn’t require continuous team collaboration. Independent performance is more emphasized.||Encourages synchronized teamwork at all stages of product development. Requires teams to have skill.||Collaborative effort results in greater productivity. However, varying nature of contracts assigned to various vendors doesn’t work well under high team synchronization|
|COST||Budget is fixed at the start, which includes backup plans for identified risks.||Budget is not defined just like the scope. Likely to become expensive when unforeseen changes and risks occur.||A fixed budget is good for small businesses. However, a fixed budget can also cause a disturbance if necessary changes arise.|