Waterfall vs Agile
The basic trait of civilization is order and protocol. The chaos and non-structured attempts to build something has never resulted in a fruitful outcome in any spectrum. Software Development isn’t an exception either. Since the inception of software development, the learned people of the industry have tried to bring in protocols, process and methods to drive the process which we commonly refer to as Methodology now. All the methodologies that have surfaced during the course have a common goal, better productivity, and smoother operation.
However, the question arises if there is a common goal, then why did we need different methodologies? Well, as we human, evolved, the methodologies have also evolved. In 1970, when Winston W. Royce developed the Waterfall model for software development, no one would have thought that there could be a better process than that. However, 31 years later, the Manifesto of Agile Software Development was released and an ever going debate started since then, which is better Waterfall or Agile?
Being in the industry for a long time, I can assure you of one thing, that there is, of course, a debate on the applicability of the methodologies, but terming this as “which is better” debate is a bit too over the line. The debate of Waterfall Vs Agile is about transformation, applications, readiness, and up-gradation. The debate is not about why Waterfall should be discarded, but how Agile can fulfill the gap holes of Waterfall. But every debate, demands a winner, and so does this. So, here we are, trying to find the answers for the Transformation that we need.
Waterfall vs Agile – What is the Waterfall Model?
Waterfall Methodology came into Software Development practice during the early 1970s. The implementation of the Waterfall model was inevitable and so was the need for it. The waterfall model introduced a new linear approach for large software development projects. Basically, the Waterfall Method is comprised of 6 different stages which have a cascading relationship. So, the linear approach says that if you need to proceed to Stage no 2, you need to complete Stage No 1, as simple as that. The stages are following –
During the time, when Waterfall was introduced, the software projects were well defined and the scope was fixed. Hence, it was very easy to implement the linear sequential flow just like a waterfall to complete the software development process. Each stage of this method represents a project development stage. So, basically, one completes a software development project step by step.
Let’s understand what these development stages are.
This is the first, basic and utmost importance stage of project development. The scope and the requirements of the projects are defined and fixed here. It requires researches, investigation, interviews, brainstorming, discussions and many other techniques to reach out to the conclusion. The planning phase also includes the primitive or high-level planning on “how to approach” points of the project. However, the most important part of planning has always been the complete clarification of the required details and scope definition.
What do you do when you have a task on your hand? Yes, the very first thing that you do is you analyze your work to determine how you are going to start and then proceed. This is nothing different. This is the place where consistent documentation is prepared. The analysis of the functionality and how to build software is discussed. It talks about the language that would be used for development. This is also the stage which ensures that everyone is on the same page.
What do you think is a design? Well, I believe you have guessed it correctly. Yes, it is the prototype for the entire development model. One can create an architecture, design diagram or functional decomposition, whatever it may suit, but it outlines the project.
This is the stage of the project development where you actually code and build the software.
This is the testing phase. Once the project is developed, it needs to be tested whether the acceptance criteria are matching. In other words, we need to determine, ‘have you built the right product’? The testing phase identifies every deviation from the requirement that was finalized during the planning phase. Once all the deviations are closed, exit criteria are met.
This is the last stage of the project development where the software development needs to support the post-production activities.
Waterfall vs Agile – Significance of Waterfall:
There is no doubt that Waterfall brought order and organizational paradigm into the software development model. However, with time, the demand from the software development project increased, and the loopholes of the waterfall model cracked open. Since the inception, the waterfall model has remained one of the most preferred software development methodologies for close to five decades, but in the late 1990s, the need for reforms was sensed.
But why? What are the loopholes? Whom did it bother?
The Sequential Impact:
We carry out the process sequentially in Waterfall. So, imagine you found an issue in Testing phase, that you have committed in the planning or designing phase. Yes, so you need to go all around again to find the issue and fix it. It is time-consuming, cost incurring and not at all customer friendly situation.
Have you ever wondered the feeling of waiting to get a glimpse of your ordered product for months? Well, if you have, then you know the plight of the customer. The customer waits for months to get to see the product and if the delivered product is not as per the expectations, then it adds insult to the injury. It has been quite a common case in Waterfall projects.
The comprehensive documentation requirement of the Waterfall approach is a time-consuming process. The rigid processes that are followed often make things harder for the software development team to complete the formalities on time. The breach of SLA is quite a normal scene in a Waterfall project, especially if the scope is not fixed.
So, even after following a methodological sequential approach, we ended up with some critical drawbacks in Waterfall. The Agile Methodology rises from those depths of issues and brings new light to the dark corners of the software development process.
Waterfall vs Agile – What is Agile?
What does Agile means anyway? Agile is something that is dynamic in nature. Unlike Waterfall, Agile is an Empirical process. An Empirical process is based on the experience and observations and not on theoretical or planned approaches. So, Agile is a Flexible approach that is based on the smooth operation.
Agile is basically balanced on 12 Agile principles and 4 Agile Values defined by the Agile Manifesto.
Waterfall vs Agile – Agile Principles:
- Early and Continuous Delivery
- Welcome Change
- Deliver Working Software Frequently
- Business and developers work together
- Motivated Individuals
- Face to Face communication
- Self-Organizing Teams
- Team Retrospective and Adaptation and shared workspace
- Working Software Progress
- The sustainable pace of development
- Technical Excellence and Courageous professionals
These 12 principles basically outline the Agile Approach along with the 4 distinct Agile Values.
Waterfall vs Agile – Agile Values:
- Individuals and Interactions over Processes and Tools
- Working Software over Comprehensive Documentation
- Customer Collaboration over Contract Negotiation
- Responding to change over Following a Plan
Waterfall vs Agile – How is Agile Methodology implemented?
Agile is a three-way approach. Here are they –
Let us try to understand these three approaches one by one.
Time Box simply means, defined time is allocated for execution.
This signifies that an entire process is divided into many parts, one by one.
This signifies that we build something part by part, each time increasing the final product to reach to the target product.
Now, see all these three approaches together. Agile process is comprised of iterations which are time boxed in nature and follows the incremental approach. So, your planning, designing, development gets distributed in different iterations.
|Iteration – I
Outcome: Product Increment I
|Iteration – III
Outcome: Product Increment III
|Iteration – II
Outcome: Product Increment II
|Iteration – IV
Outcome: Product Increment IV
Final Outcome = Product (Product Increment I+ Product Increment II + Product Increment III + Product Increment IV)
How Iterations can help?
We are dividing the entire requirements into small parts. Now, we pick multiple small requirements in every iteration to provide a product increment. The product increment is presented to the customer and the customer is aware of the development of the project. Also, if there is any change required, all we need to do is to go back to the specific iteration and fix it, rather than hovering around the entire project.
Let’s take the example of a Car Manufacturing. A customer provides all the information regarding the specification he/she requires for a car. The requirement includes car body type, color, engine specifications, tire specifications, space management, interior, and exterior. Now, the waterfall approach would be to build the whole car and showcase it to the customer. The customer gets to see the product after 6 months and then determines whether it is as per the requirement.
The Agile approach would be different. Here, the team will build only the engine and ask the customer to verify whether it is as per the requirement. The hollow body will be built next to and presented to the customer, followed by the exterior, interiors, car tires and so on. Finally, every product increments will be assembled or organized to get the final products. This will again be showcased to the customer. Now, the customer has seen the product increments every 15 days or so, every small requirement was verified. It was easy to make some changes and asked during the course of development as well. From the manufacturer’s point of view, the requirements are broken down, so it easier to develop and focus. Even if anything goes wrong, it can be easily amended and the changes can be incorporated into further product increments.
Hence, it is a Win-Win situation for both customers and developers.
Waterfall vs Agile – Benefits of Agile:
Agile recommends working with a smaller team. The team focuses on specific requirements in every iteration and continuously deliver the product in all of these iterations. This ensures that the customer gets delivery frequently and early. It is easier for the team to focus on the requirement in different parts. The design and analysis become simpler for the team, as well as the development process. It is very easy to incorporate change as well. Whenever a change comes, we can simply, accommodate that in one of the iterations as per the requirement, preference and priority. In simple word, the Agile takes care almost every issue that comes across in modern software development.
Waterfall Vs Agile ?
As we said, every debate has a winner, and we need to derive a conclusion in this case well. As we have seen, if the scope of the project is fixed, then the waterfall can still be implemented. However, if you work in dynamic project scope, Agile is the only way to go forward.