In this day and age venture project managers play a great role in the success of a business or an organization. Traditional project management specifically emphasizes on conducting a long and detailed upfront planning for all projects irrespective of whether the requirements are known or not.
While Agile is a general approach used for software development projects, it emphasizes on teamwork, frequent deliveries of working software, customer collaboration, and timeboxing events and allowing the ability to respond to change quickly.
Waterfall: Waterfall or traditional approach for delivering projects was introduced by Royce in the year 1970. It is a heavyweight methodology for developing software which traverses through phases like:
Analysis → Design → Develop → Test → Deploy
It’s a sequential approach where each phase starts only at the end of the previous phase (except the first one).
Any significant change in the requirements makes it extremely difficult and costly to go back to the process, thus makes it less favorable in the environment that belongs to VUCA (Volatile Uncertain Complex and Ambiguous) World.
Waterfall requires an unchanging set of requirements upfront in the first phase (analysis or requirement gathering or planning) because the feedback to the previous phases is extremely painful in this methodology.
Agile: To break the rigid nature of traditional (waterfall) approach, Agile was first introduced in the year 2001 i.e. Manifesto for Agile Software Development (Agile Manifesto). Agile is based on Iterative and Incremental development approach with the great emphasis on the feedback.
Scrum is one the strongest and most adopted way to embrace Agility, Lean-Kanban is another process in this umbrella. Both of them use a pull mechanism and accentuate on delivering releasable software early and often.
The “Scrum” comes from a whitepaper “The New New Product Development Game” from Hirotaka Takeuchi and Ikujiro Nonaka that was published as an article with Harvard business review in the year 1986.
Let’s have little detailed understanding of both the approached Waterfall and Agile
Waterfall: is a workflow-based approach where each stage is a distinct phase and one must complete the first phase before proceeding with the next phase.
The phases in the approach vary from organization to organization. A typical Waterfall model has the following phases:
- Initiation – Includes the needs of the business that cause the initiation of the project. This phase is more on building the project team and defining the scope (requirements), objectives, purpose, duration, cost, constraints, and deliverables. Identifying your stakeholder and plan to manage them.
- Analysis – This phase is around feasibility analysis considering the scope of the project. Creating WBS (Work Breakdown Structure), developing project schedules, determine budget and quality standards. Identifying risks and mitigation plans.
- Design – This phase is around building the architectural design for the project, mock-ups, wireframes and architectural skeleton. This phase ends with detailed requirement evaluation, team goals and plan of action for the delivery.
- Development – This phase kicks-on the actual development by the project team on strictly adhering to the mock-ups, wireframes, and design of the project.
- Testing – This phase is to test the project that was delivered as a part of the “development” phase. This phase may trigger extra work of development or coding to resolve the defects or to deal with issues that erupt during UAT (User Acceptance Testing)
- Deployment/Production Release – This phase deals with launching the Project to the market. This phase typically deals with a promoting the developed project to the production for actual users to use.
- Maintenance – This phase is an ongoing activity to address any concerns or issues that the actual user run through during the use of the project.
Typical waterfall model doesn’t allow moving in between the phases during the project execution, which means the feedback from one phase can’t be pushed to the previous phase or this can be extremely expensive.
Agile, on the other hand, deals with an early feedback approach. It is an iterative and Incremental approach for a team to deliver a valuable product every iteration. It’s an approach that helps business to gain a competitive edge in the market.
Agile gives a slant to be lean and deliver what the customer wants and doesn’t require to have upfront planning for all the requirements. We are in the era of VUCA where not everything is known upfront. This approach accentuates on delivering high-value product early and often and inspect & adapt to the feedback from the market.
There are a variety of Frameworks and process in the market that help delivers products iteratively and incrementally and out of them, Scrum is one of the most accepted means of delivering products in an Agile way. Apart from Scrum, we have KANBAN, XP, Adaptive System Development, FDD, LeSS, SAFe and many more frameworks and processes in the market.
How to choose between Waterfall and Agile?
As mentioned earlier, this is an era of VUCA and the change is inevitable. We are dealing with the most complex system at this point in time where :
- All the requirements can’t be agreed on upfront,
- Technology is not certain
- And people are not predictable.
This kind of complexity can’t be addressed by the traditional or predictive approach, but needs an adaptive approach and hence Agile pitches in.
In the earlier time of software delivery, there were projects which were delivered successfully using the Waterfall approach. There are still projects that are running and getting delivered using this approach, so blaming this approach for not delivering projects is not “right”.
Due to the customer behavior and needs, knowing everything upfront to plan is no more the case now and hence Waterfall is not the right fit for this environment. Uncertain requirements made what we are building is emergent.
There are Pros and Cons of dealing with every approach for Software delivery. Let’s take a deeper look at that too:
Agile Way of Work
This is a small intent to help people understand two ways (traditional and agile) of working and I am not promoting one on another. You know your context best and you are the one who has to take a call on which what approach is the best suit for your environment.
Blogger: Sumeet Madan