Mark As Completed Discussion

When it comes to software development, there are always crucial decisions the development team has to make in the beginning of the development process, regarding the principles and technologies that they will use. Everyone has different opinions, and often come to disagreements, especially when having to choose a project management methodology. Today there are many different methodologies, each more suitable for different project types. These methodologies include the classic Waterfall method, Agile development, and the newer ones such as Kanban.

However, in this tutorial we will cover the most widely used ones, Agile and Waterfall, we will explain both of them, together with their advantages, drawbacks, and we will advise what project types are better to use with which methodologies.

Introduction

What is Waterfall?

The Waterfall methodology was named after its sequential phases arranged in a downward fashion (similar to actual waterfalls), representing the various steps of software development from one end to the other. It was first mentioned in 1970 by the computer scientist Winston Walker Royce, and it originally contemplated five distinct phases: requirements, design, implementation, verification, and maintenance.

More specifically, the sequence of events in Waterfall looks something like this:

  1. Gather and document requirements

  2. Design

  3. Code and unit test

  4. Perform system testing

  5. Perform user acceptance testing (UAT)

  6. Fix any issues

  7. Deliver the finished product

What is Waterfall?

Waterfall uses distinct phases rather than simultaneous work. Some variations of the original model appeared in the following decades, but the logic behind it remained the same. When a phase is completed, its output becomes the input for the next one, which starts immediately after the previous one. In this way, it ensures that each phase is completed before moving on to the next, in order to avoid starting development before the design work is completed, which could give way to possible inconsistencies in both ends.

Additionally, it is possible to estimate the whole project's cost and effort needed right from the start in the requirements phase through this model. That is because all phases are passed through and completed only once, so all requirements are gathered as much as possible at the start to provide the information in creating the plans, schedules, budget, and resources. It is plan-driven, so any changes after the project has started would offset the original plan and require a restart.

Try this exercise. Is this statement true or false?

In the Waterfall method, the entire budget can be estimated from the beginning?

Press true if you believe the statement is correct, or false otherwise.

What Are the Benefits of Waterfall?

We can mention a few advantages (or benefits) of using the Waterfall methodology:

  • Straightforward planning and designing
  • Better design with a whole-system approach
  • Defined scope of work
  • Easier costing
  • Clear measurements of progress
  • Defined team roles
  • Dedicated resources can work in parallel for their specific tasks

What Are the Disadvantages of Waterfall?

Newer development methodologies were created because of known disadvantages of Waterfall, including:

  • Rigid structure to allow necessary changes
  • No allowance for uncertainty
  • Limited customer engagement, resulting in poor satisfaction
  • Sequential approach is not ideal for a large-sized project where the end result is too far in the future
  • Testing is done only at the later phases of the project.

Build your intuition. Click the correct answer from the options.

Which of the following is a significant advantage of Waterfall?

Click the option that best answers the question.

  • Costs less
  • Clearly defined team roles
  • Can be done in a shorter time

What is Agile?

In 2001 with the Manifesto for Agile Software Development, that Agile software development was first introduced and made popular. This very straightforward document, put together by a group of developers in Utah, broke the conventions and limitations of software development, providing a real alternative to the Waterfall method.

In contrast to the Waterfall method, Agile software development is based on an iterative, incremental approach. Agile offers a more free and fluid approach with the ability to perform changes and iterations as they are needed. Requirements can change at almost any phase of the project and so, not as much planning is required before beginning a project.

Instead of creating tasks and schedules, all time is split into phases called “sprints.” Each sprint has a defined duration (usually 2 weeks) with a list of deliverables, planned at the start of the sprint. Deliverables are prioritized by business value as determined by the customer. If all planned work for the sprint cannot be completed, work is reprioritized and the information is used for future sprint planning.

What is Agile?

Agile requires constant feedback from its users in order to adapt the changing requirements. Development teams are organised into cross-functional units which work on iterations over time, with the goal of each iteration to produce a working product.

Let's test your knowledge. Fill in the missing part by typing it in.

In Agile, instead of creating tasks and schedules, all time is split into phases called

Write the missing line below.

What Are the Benefits of Agile?

Some of the known benefits (advantages) of the Agile methodology are:

  • Faster software development life cycle
  • Predictable schedule in sprints
  • Customer-focused approach, resulting in increased customer satisfaction
  • Flexible in accepting changes
  • Empowers teams to manage projects
  • Promotes efficient communications
  • Ideal for projects with non-fixed funding

What Are the Disadvantages of Agile?

The following are some of the disadvantages of the Agile methodology:

  • Requires a high degree of customer involvement, which not all customers are comfortable with
  • Assumes every project team member is completely dedicated, without which weakens the principle of self-management
  • A time-boxed approach may not be enough to accommodate all deliverables, which will require changes in priority and additional sprints that can bring up cost
  • Agile recommends co-location for efficient communication, which is not always possible

Build your intuition. Is this statement true or false?

High-degree of customer involvement is an advantage when it comes to Agile?

Press true if you believe the statement is correct, or false otherwise.

How to choose the right methodology?

When it comes to choosing the right methodology for your project, it is entirely dependent on the type of project you are planning, the type of organization you work for, and the team you are going to be working with. There are a few general rules for choosing the methodology for you.

Waterfall is the best choice for stable projects since all the heavy planning is done initially. Regardless of the project's dimension, Waterfall is the most suitable choice when the external environment is stable and unlikely to suffer changes throughout the plan. If you plan a project in a low-risk environment, there is no actual benefit in splitting it into sprints, instead, it is best to focus on the end result from the beginning. Also, if your project has a strict deadline, tight budget, pre-defined features, or strict regulatory requirements, Waterfall is the best choice.

How to choose the right methodology?

On the other hand, if you are not sure what you need to build from the beginning, your timeline and budget are flexible, you are open to new ideas, and your team values collaboration, Agile is the way to go. Agile is the right choice for projects that require a more flexible process, or if the product can change due to external factors. It is also the best method to ensure that the project does not stay in development for several months before presenting any result. By the end of each sprint, there'll be a checkpoint in which the product owner can test and approve the completed work.

One Pager Cheat Sheet

  • This tutorial offers a comprehensive overview of the Waterfall and Agile development methodologies, discussing each of their advantages and drawbacks as well as the types of projects for which each of them are best suited.
  • The Waterfall methodology sequentially arranges distinct phases of software development from requirements to maintenance, provides estimations of the project's cost and effort, and is plan-driven with any changes requiring a restart.
  • The Waterfall method is a plan-driven process that allows for the entire budget of a software development project to be estimated at the start, but any later changes during the course of the project would require a restart.
  • The Waterfall methodology has straightforward planning and design, better design overall, and defined roles and scope of work, but can struggle with changes, customer engagement, and large-sized projects.
  • One of the signficant advantages of the Waterfall methodology is the ability to provide clear roles and ensure better communication and collaboration, leading to successful projects.
  • Agile software development provides an iterative and cross-functional alternative to the Waterfall method, where sprints of a fixed duration determine the deliverables and adjust to changes as they come.
  • Agile software development involves breaking projects into sprints of fixed duration and prioritizing deliverables based on customer-determined business value.
  • The Agile methodology can provide faster software development, increased customer satisfaction, and better communication, but requires strong commitment from the customer and can lead to additional costs.
  • Customer involvement in Agile methodology can be beneficial but can also be a disadvantage when the customer is unwilling or unable to become actively involved.
  • For choosing the right methodology for a project, it is dependent on the type of project, the organization, and the team; however, Waterfall is best for stable projects with a tight deadline, budget, or regulatory requirement, whereas Agile is the way to go for projects that are more flexible or require collaboration.