The Waterfall model is the earliest Software Development Lifecycle approach that was used for software development, long before the Agile approach was embraced.
As the Waterfall Model illustrates the software development process in a linear sequential flow, it means that any phase in the development process begins only if the previous phase is complete. In this model, the phases do not overlap.
This way of working is quite different from the Agile one, as the main philosophy of Agile is centered around the idea of iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. In Agile, the software development phases overlap, as each iteration progresses.
Given this, one might think why not always use Agile, given that value is delivered faster.
There are certain types of projects which could be more successful using the Waterfall model or, why not, by combining Waterfall with Agile, to give us what?s most suitable for a specific project.
Some situations where the use of the Waterfall model is most appropriate are:
The organization is more traditional and prefers a linear process
The requirements are very well documented, clear, and unlikely to change
The technology is understood and is not dynamic, for example on a project consisting of building a website, there are already multiple coding languages that can be used and the project team can choose the appropriate one from the beginning
The project has ample resources, with the required expertise available to support the product
Although we are starting to see mass adoption of various Agile methodologies in all enterprises, even more, traditional ones, like public institutions and federal agencies, there are still many organizations that are slow to make the change. It is also very common for an organization to transition into more of a hybrid approach that combines aspects of both Agile and Waterfall.?
Waterfall is not the fastest way to work. Deliverable results will only show at the end of the development cycle, so it could take months or even years before the customer sees the final product, as well as proving hard to keep the development team engaged, given that the release process is not incremental. As Agile shortens the delivery time and makes it easy to gather feedback in the early stages, one successful recipe would be to use Waterfall with a spice of Agile.?
Let?s think of an example of a technical project, consisting of developing software. In this example let?s use a website for a public institution.
Some of the main reasons for using a combination of Waterfall and Agile models are:
In a public institution, the adoption of the Agile culture might prove problematic, as this kind of organization is heavily relying on defining the scope upfront and on a thorough paper-based approval process. Thus, using the Waterfall model, with some elements from Agile will prove to be more efficient.
It shortens design, analysis, and planning, but lets the organization define project frames including budget and time of delivery, compliance with standards, and enhancement collaboration.
The blending of waterfall and agile should occur at the beginning of the project, as both the customer and the team will start with this mindset from the beginning, not jeopardizing engagement. For example, in the Waterfall model all requirements must be defined and approved, and in the Agile – Scrum way, a product backlog must be prepared. A key success factor to blend these in a technical project is to define the customer journey upfront. In this way, the entire team can participate in this phase and engage with the customer from the start. Let?s say we agree with the customer to deliver a batch of requirements every 3 weeks. In a Waterfall world, we would have said that the requirements and design phases will be completed after delivering all batches. And we could do all this by adding spice from Agile, as iterations (batches) were used to deliver the requirements, keeping an Agile mindset inside the team.
Another way of combining Waterfall with Agile could be to do the planning, design, and requirements definition with Waterfall, but development and test in short sprints using Agile (Scrum). In this approach, the development team gets to keep working Agile, using iterations, and does not have to wait for the entire project to end in order to see the result of their work. This approach proves to increase the team output, as well as keep the customer involved, by providing feedback at the end of each development & testing iteration.
Most importantly, let?s not forget that customers want to see their products yesterday. In today’s competitive world, time to market is a key factor for success. Basically, our customers want the speed of agile, combined with the predictability of a thorough and traditional project schedule from Waterfall, that eases their anxiety in launching new products and services to an increasingly demanding customer base.?