What is the best methodology to use for software development? The decision is not always an easy task. Does the project add value for the customer, the business or neither?
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.
Check out other Agile articles on the nTask Blog:
- 4 Awesome Teamwork Examples for Agile Teams
- 6 Tips to Boost Team Motivation for Your Agile Team
- Agile Best Practices Every Agile Team Should Have in Place
- Scrum vs Kanban vs Agile vs Waterfall – A side-by-side comparison
Agile Development Life Cycle
The Agile Development Life Cycle is a breakdown all work into 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.
Popular Agile Frameworks and Methodologies
Agile is a broad umbrella that encompasses multiple frameworks and methodologies to implement it as smoothly as possible. One of the most popular ones are:
- XP (Extreme Programming)
- Feature-driven development (FDD)
- Dynamic systems development method
Undoubtedly one of the most popular Agile frameworks widely adopted by teams is Scrum. The framework is meant to handle projects through iterative and incremental means. Scrum is based upon continuous systematic collaboration among team members in between the project cycle.
There are three major roles in scrum, Scrum Master, Product Owner, and the development team.
Let’s go through these elements to better understand their role:
The Scrum Master, also known as the ‘facilitator’ helps the team in understanding the scope of the project, and acts as a central figure within a project. His prime duties include clearing out any ambiguities that team members might have regarding the project scope and remove any hurdles that are stopping the team from working efficiently.
A product owner is typically a key stakeholder of a project. He communicates the product vision with the development team and provides timely feedback on the work being done. Additionally, he is also responsible for prioritizing the tasks that would go in the backlog.
Development team is the team who’s working on all the development works of the product. Also known as the ‘Scrum team’, it’s a cross-functional group which is responsible for developing the actual product or service.
Aside from this, the work cycle is divided into ‘sprints’, which usually lasts from 2 to 4 weeks. During sprints, daily standups take place to report on project progress and the changes required.
Another one of the most popular agile methodology adopted by teams is Kanban. This agile methodology focuses on dividing the work into small parts and visualizing the workflow through cards in a way that it makes identifying bottlenecks easy.
Typically, the Kanban system works through the principle of categorizing work into respective categories of ‘to do’, ‘in progress’, and ‘done’. You can easily move the cards to represent the progress. It also sets the work in progress (WIP) limits to restrict the number of items that can be added to a particular column to help keep the focus on current tasks only.
Kanban is a light and flexible system that works best for projects where requirements often change, as the floating cards allow to make quick changes in the workflow and gives the team a heads up for what’s coming next.
Check out other Agile articles on the nTask Blog:
- Kanban vs Scrum: Which one is the better approach to use in 2019?
- 13 Effective Time Management Techniques for Agile Teams
- 22 Best Free Project Management Tools for Agile Teams in 2019
- What Is the Agile Iterative Approach and Where Is It Used?
The lean methodology of agile focuses on eliminating waste and building efficient workflows through continuous improvements in project lifecycle. This methodology works entirely on the principle of adding only what creates value, and removing the rest.
‘Waste’ here refers to any tasks, meetings, work processes, or documentation that may be slowing you down. Eliminate them, so you can achieve more in less time. Lean methodology recommends eliminating three enemies of lean – Muda (waste), Mura (unevenness), and Muri (overburden).
- Muda – refers to removing waste. Cut out any process that’s not adding any value to your project
- Mura – the type of waste created because of unevenness in production and services
- Muri – consists of waste caused as a result of overly difficult tasks or processes. The tasks that overburden employees should be eliminated
In a nutshell, lean changes the way teams operate and keep their concentration laser focused to optimize the work processes as much as possible.
4. XP (Extreme Programming)
Extreme programming methodology of agile project management is directed towards improving the quality of software being developed and the responsiveness towards evolving customer requirements. The methodology works towards increasing the productivity of developers and setting ground rules when it comes to coding and testing.
Some of the rules when it comes to XP are including user stories, pair programming, test-driven development, and more. Extreme programming is also inclined towards releasing software in short development cycles, so it can adjust according to the customer requirements coming over time.
The general practices of extreme programming concentrate towards continuous reviewing and testing throughout the project to fix any bugs and issues as actively as possible. And when followed correctly, these practices result in a higher quality software.
Crystal is one of the most flexible agile methodologies out there. The focal point of this methodology is individuals and their interactions, rather than processes. Crystal focuses primarily on 6 aspects when it comes to software development – people, interactions among them, community, communication, skills, and talent.
The methodology is actually a family of other methodologies such as Crystal Clear, Crystal Yellow, Crystal Orange, and others.
The genius behind Crystal, Alistair Cockburn, developed guidelines for team collaboration and team work, instead of step-by-step development strategies for a project. The methodology supports team accountability and transparency and provides an adaptive approach to let team respond to changing requirements effectively.
6. Feature-Driven Development (FDD)
As the name implies, features are at the heart of this agile methodology. The features in FDD doesn’t necessarily refer to product features, rather user stories in Scrum. Feature driven development consists of 5 basic activities – development of an overall model, building of a feature list, planning by feature, designing by feature, and building by feature.
The feature list is usually generated by the uniqueness of each project model, and the main purpose of FDD is to deliver a client-centric software product.
FDD also encourages status reporting at all levels to keep an eye on project progress and results coming over time. This also eliminates confusion and excessive rework among the development team.
7. Dynamic Systems Development Method (DSDM)
DSDM is an agile framework which provides a comprehensive basis for planning and executing software development projects. Dating back to 1994, the Dynamic Systems Development Method was devised to create an industry standard framework for delivering quality software.
The 8 basic principles on which DSDM operates are:
- Active user involvement
- Empowered teams
- Focus on frequent delivery
- Criterion for accepted deliverables
- All changes during development must be reversible
- Build incrementally from firm foundations
- Integrated testing throughout the project
- Collaborative and co-operative approach
As a flexible agile framework, DSDM can be easily used for IT and non-IT projects alike.
Check out other Agile articles on the nTask Blog:
- Agile Project Management for Non-Software Projects: Why and How
- The Best Scrum Tools of 2019 for Agile Project Management
- Agile Construction Project Management – how to be an Agile construction team?
- How to Use Agile for Better SDLC and Reduced Risk
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.
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.
Difficulty in tracking progress:
As progress is happening across cycles in agile, it becomes difficult to measure performance. You can’t set a lot of definite KPIs at the start of the project, so you don’t know what to look out for during 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.
Difficulty in predicting required resources:
Because there is no set goal at the end of the project, it becomes a challenge to accurately predict the resources required at the beginning of the project.
The inability to decide the cost, time, and resources results in poor resource planning, and may turn out to be a bigger problem once the project advances.
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:
|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:
Lengthy project completion times. This is because development does not take place in a small time box, and each sprint/iteration must be completed before the next one starts.
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 complex projects were still being managed using the Waterfall approach.
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 vs. Waterfall
- 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 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.
|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.|
|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|
|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.|