Waterfall vs. Agile vs. Scrum vs. Kanban Methodologies
Methodologies, Methodologies — Waterfall vs. Agile vs. Scrum vs. Kanban
Project management has evolved significantly in recent years. I remember from my first ever project I was using Waterfall methodology. There have been a number of project management frameworks and methodologies introduced to ensure effective team management and collaboration in a workplace.
When selecting which methodology to acquire for a project, it’s vital to understand the numerous factors as well. With each methodology comes different requirements including pros and cons and each element holding its own set of unique why’s and how’s.
In this blog, I will be taking you through Waterfall vs. Agile vs. Scrum vs. Kanban methodologies and how they add value to a team project. It is vital to understand that Agile is an umbrella term in project management and Scrum and Kanban are a part of the Agile methodology.
Let’s get started!
It all started with Waterfall 🌊
The Waterfall model is the first process model and also known as a linear-sequential life cycle model. A fun fact I learned was it originated from construction and manufacturing and was a model adopted for software development lifecycle (SDLC) as well.
Let’s deep dive into it. It is an approach where several stages are involved, and each task needs to complete before the next stage can be started. In turn, this avoids any overlapping of stages. The workflow is designed to flow into a single direction with stages such as project conception, initiation, analysis, design, construction, testing, deployment and maintenance.
✅ Pros: These include a much more established project planning and designing stage, syncing project deliverables between the development team and client. It is also easier to measure progress as the project scope is known in advance. Furthermore, the entire team does not need to work on a single stage, for instance if project A is still in early stages, a tester can focus on other tasks for another project B until product A is ready for the testing stage.
😐 Cons: The Waterfall model does have some good benefits; however, it is quite a rigid approach. There is no room for accommodating new changes/alterations or having an iterative approach. This then leads to difficulties in revisiting earlier stages and any bugs/defects encountered. Once the planning is completed the project flows till the end of the SDLC. This means the process is not easy to implement and sustain these days when customer requirements and market trends tend to undergo rapid, unforeseen changes regularly. Also making it expensive as bugs found at later stages are more costly than finding them and fixing them in earlier stages.
What is Agile software development? 🧘🏽
That’s a great question! In order to meet the industry’s growing demands for quick turnaround solutions, the software development tasks are divided into smaller manageable chunks.
The chunks are then time-boxed to help in focus on planned features, that are going to be developed over the duration of 2–3 weeks. Agile methodology takes the lead from the Waterfall model, but it is different as you don’t complete a particular phase for all features and specifications in one-go. Instead, you pick and choose the features you can manage to develop in 2–3 weeks (known as sprints). And then you run the entire cycle of Analysis, Design, Development, Testing and Implementation on those features in one-go. It ensures that product features are quickly developed, giving room for quicker launch of products in the market.
Agile incorporates policies allowing teams to carry out better planning, development, timely and early delivery of a project all the while staying prepared for sudden changes and able to aptly respond to these changes.
As one of the biggest software development processes, the Agile methodology has various frameworks that businesses use for creating their products in an iterative manner that include:
- Scrum
- Lean
- XP
- Kanban
- FDD
- Crystal Clear
- RAD
- Capterra states that 71% of companies are implementing Agile.
- VersionOne reveals that Agile adoption has helped out 98% of companies.
- Harvard Business Review declares that 60% of companies experience revenue growth and profits increase after using an Agile approach.
🤔 I was not sure whether Agile had some pitfalls as I personally haven’t experienced it myself. However there are some. It can be challenging to predict efforts like costs, time and resources required when a new project is initiating. Leading to a poor resource planning as you cannot tell what the project will be from day one. I have heard many times, Agile means no/less documentation. Also, documentation does not happen from the beginning, it’s more of a last minute/just in time making it less detailed and leading to a back burner. Agile is more of incremental development to allow products to market faster. However different components are worked on in different cycles making the output too fragmented and not organised. There is no clarity of what the final product may look like, due to new requirements coming in and unexpected functionalities. It’s easy to get side-tracked.
Scrum
Scrum is an agile way to manage a project, usually software development. Agile software development with Scrum is often perceived as a methodology; but rather than viewing Scrum as methodology, think of it as a framework for managing a process.
The scrum concept is more about breaking down work to maximize efficiency and reduce any bottlenecks allowing greater team alignment and positively moving towards project completion and mainly customer satisfaction.
The scrum team comprises of the development team as well as Product owner/s and scrum masters with a defined set of roles for each purpose.
This framework encourages customer involvement at every stage. Scrum helps set the project timeline in the form of Sprints and Daily Scrums. The Sprint represents the time period for monitoring the completion of a defined set of tasks by the Product Owner in the form of a Product Backlog.
A Sprint can last from seven days to a month depending on the customer requirements and project feasibility. On the other hand, the Daily Scrum encompasses a daily, stand-up meeting between the team, Product Owner, Scrum Master along with customers and management (recommended) to evaluate task completion on a daily level along with hindrances and potential risks at sight relevant to those tasks.
This concept of setting milestones through the assigned roles with defined time periods is aimed at having a better rate of project completion through a transparent workflow and monitoring methods. Customer satisfaction is also more likely due to encouraged involvement throughout the project development life cycle.
✅ Pros: The advantages of scrum include the entire team having one goal which is to finish the sprint and complete the sprint goals. The individual effort of each team member is clearly visible. The team shares the successes and failures to allow accountability. For instance, if the spring is not closed on time it’s not an individual fault, it’s the team’s responsibility altogether. The team is highly focused on improving the development process and improving the overall product. All team members are involved in the Scrum Meetings and motivated to express their opinion and contribute to all decisions. The team is able to easily communicate and eliminate obstacles as soon as possible. Works well for fast-moving development projects. Some projects may require constant changes in priorities and product features. Setting up shorter Scrum Sprints allows the Product Owner to add, prioritize or update product specifications after every sprint.
😐 Cons: Scrum does not work as intended if tasks keep getting added to a sprint midway through development, also known as Scope Creep. If resources are added or removed from a team it can get a little difficult to be flexible as that means the overall team estimation and velocity gets impacted. It can also be a time-consuming process due to the ceremonies involved such as Sprint Planning, Daily-Standup Meeting, Sprint Review and Sprint Retrospective meeting every Sprint. Also, if you are moving from a different process to Scrum for the first time, then expect the first few sprints to be a little challenging as Scrum requires a disciplined and committed team to allow successful project delivery.
Kanban
Kanban is known as signboard or billboard in Japanese; it is a scheduling system for lean manufacturing and just-in-time manufacturing (JIT).
However, in SDLC it is another type of an Agile framework. Kanban allows a project lifecycle to become more streamlined and team collaboration to be more effective by continuous improvements. It has almost no learning curve and allows teams to be flexible in production while not adding unnecessary complexity to the process. Kanban focuses on improving the project flow and product quality on a collective or team level.
As a part of Lean, the system’s highly visual nature allowed teams to communicate more easily on what work needs to be done and when.
Similar to a scrum sprint board, Kanban tracks To Do, In Progress, In review, Blocked, and Done activities, but it limits them by the number of ‘work in progress’ (WIP) activities (the number is defined by the team manager and cannot be exceeded). This allows the teams to stay open to changes and easily implement the transition as required.
This WIP limit determines the number of work items or the amount of work to keep in a certain state at any instance of time. Reaching a pre-defined WIP limit means no new work can be allowed to categorize in that state. This compels the team to finish the pending items before addressing new entities.
The Kanban board can be used and modified by anyone in the team as long as it portrays the status of the work entities and the amendments involved. This means there is no single person to make sure the team is aligned or adhering to the established work policies.
Kanban helps towards overall optimization of a project development cycle by helping teams attain improvement in the project in a continuous manner. This ultimately leads to better rates of throughput and time along with maintaining the quality of the resulting product.
✅ Pros: Kanban has great advantages such as everyone in the team is on the same page as everything is visualized on the board. Every team member can look/update the status of every project/task. Therefore, it’s quite transparent. It is also quite flexible as it is event-driven rather than time-boxed. For example, if there is a drop-in demand for a certain requirement the tasks can be removed from the “To Do” column. Bottlenecks are easily revealed as the columns with most tasks slowing down the delivery process can be visualized by the entire team. Lastly, Kanban is quite easy to understand and adopt.
😐 Cons: There are some disadvantages that come with the Kanban framework; It can become difficult and less effective when a resource is shared amongst different teams. This leads to the development team being blocked waiting for the resource to add to the product. A Kanban board can also lead to blocking the development process. How so? When a task is not moved to the appropriate column (stage) and other tasks that are dependent on it will become blocked and won’t get notified.
TL;DR — Waterfall vs. Agile vs. Scrum vs. Kanban Methodologies 💫
In conclusion, as a team decides very carefully around the product requirements and how would your product benefit from the mentioned frameworks and methodologies. Being Agile means having an agile mindset and selecting a framework that works best for an agile team. However, if you decide to go for a Waterfall process you need to understand how you could successfully deliver the client needs. Whichever methodology you select, the aim should be good quality and fast delivery of the product.
As a tester, I think it would be better to work in an Agile team as testers are involved from the very start. I have worked in a waterfall project too and testing does not start until the very later stages. Tester(s) add value by providing early feedback to the developers by building automation scripts and also testing manually. Agile testing is an approach to product development in which we aim for a high-quality product sooner in the cycle and everyone involved contributes towards quality. Testers taking early and the right approach towards manual testing or test automation can benefit immensely.
Here’s a simple analogy to summarize this for all 🎂: imagine baking a cake and following the exact recipe. That would be the Waterfall methodology. If I bake the same cake spontaneously, then that is more of an Agile methodology. No methodology is wrong, select what’s best to deliver your product.
Aim for:
🌟 Delivering value through a quality end product, rather than simply delivering a working product.
🌟 Managing a clear process for delivering that product.