The first and foremost important decision an organization needs to touch down in consideration of each and every project under their belt might sound something like, “ Which development methodology to be used? Will traditional Waterfall work well or will Pure Agile serve the purpose better; perhaps something between the two? ”
So to speak, every organization and its respective project managers operate in a unique way with respect to a sense of comfort that might vary as per the different methodologies incorporated into projects in hand. However, it is ardently crucial to choose the right methodology or approach for the success of a project. If an organization chooses an option which is not really suiting the business, the same approach might end up reaching the last stage of the project. And as a result it becomes a topic that generates an excruciable amount of debatable opinions, that might end up as heated conversations.
Care to note one thing here. It is NOT about the work style of the concerned project management or about a specific technical approach. Although, you will hear these technical jargons being dragged into the court of jurisdiction during the latter half of project delivery period. However, what matters is having a better understanding of both of these methodologies prior to implementation. So before we get into the comparative analysis of these 2 methodologies, let us understand the basics of both, while being aligned towards a way of organizing the functionality aspect of software development.
A Brief Outlook
In general, Waterfall is what we call a “traditional” approach and Agile on the other hand is considered as a specific type of Rapid Application Development, newer than Waterfall and often implemented using Scrum. Both of these are usable, mature methodologies. Being involved in software development projects for quite some time now, here are my thoughts on the strengths and weaknesses of each methodology.
Waterfall methodology involves a linear approach to software development. In this methodology, the sequence of events is as follows, gather and document requirements, design, code, perform unit testing, perform system testing and user acceptance testing, fix the determined issues and deliver the finished product. In a pure waterfall driven project, every task represents a distinct stage of software development, and each stage is pragmatic, finishing before the next one begins( typically a stage gate between each one of them).
The Pros’ of Waterfall Methodology:
Client and development team agrees to the deliverables making the planning and designing phase much straightforward.
Easy monitoring of progress as Project Managers are aware of the scope and timelines in advance.
Efficient utilization of team as it’s feasible to involve multiple members of a team or to allow them to continue with other work; depending on the active phase of projects like BAs can help learn and document additional requirements when developers are working on agreed requirements, the testers can Meanwhile author test scripts while coding is underway.
Apart from reviews, approvals and status meetings, a client presentation is not strictly required, especially after the requirements phase.
Multiple technical components can be developed in parallel for integration with external systems because the design is mostly completed early in the development lifecycle.
The software can be designed more carefully, based on the complete understanding of all software deliverables leading to better software design with less possibility of the “piecemeal effect” (a developmental phenomenon that can occur as pieces of code are defined and subsequently added to software where they may or may not fit well).
The Shortcomings of Waterfall Methodology:
Gathering and documenting requirements is the most important and difficult part of any project. Not to mention, a Client is not always able to visualize an application from a requirement document. Wireframes and mockups can surely help but the end users often face difficulty putting these elements together with documented requirements to arrive at a good picture of what they are going to achieve at the end of all the cumulative effort.
The probability of client dissatisfaction with delivered software product is always as high as the deliverables. As for the documented requirements, well, a client may not see what will be delivered until it’s almost finished and last moment changes can turn out to be not only difficult to implement, but also costly.
Agile is an iterative, team-based approach towards development focusing on rapid delivery of software in complete functional components. Rather than creating tasks and schedules, all time is “time-boxed”, defined as “sprint”. Each sprint has a defined duration (usually in weeks) with a running list of deliverables, planned at the start of the sprint. Deliverables are prioritized by business value as determined by the client. If all the planned work for the sprint cannot be completed, work is reprioritized and remaining work goes for future sprint planning.
Agile is a powerful tool for software development. It not only provides benefits to the development team but also provides a number of important business benefits to the client. Agile helps project teams deal many common project pitfalls (such as cost, schedule predictability and scope creep) in a more controlled manner. By reorganizing and re-envisioning the activities involved in custom software development, Agile achieves those same objectives in a leaner and more business-focused way.
The Pro’s of Agile Methodology
Multiple opportunities for client and teams to engage before, during, and after each Sprint. The extensive collaboration between client and teams thus helps the core team to understand client’s vision better.
More quick and frequent deliveries of features by using time-boxed, fixed schedule sprints of 1-4 weeks, provides the opportunity to release or beta test the software earlier (subject to business value).
Cost is predictable and limited to the amount of work that can be performed by teams in the fixed-schedule time box, helping the process of decision making.
Opportunity to constantly refine and reprioritize the product backlog. New or changed backlog can be planned for the next iteration, thus offering the opportunity to introduce changes within few weeks.
Agile commonly use user stories with business-focused acceptance criteria to define product features. Each feature incrementally delivers value, gaining valuable feedback early in the project thereby opening the gates to make more changes as and when needed.
Logical manageable units of a big project help in high-quality development, testing, and collaboration. Not to mention, frequent builds, conducting testing and reviews during each iteration lead to improved quality by finding and fixing defects quickly and identifying expectation mismatches early
Shortcomings of Agile Methodology:
Extensive involvement of client may lead to problems. Even more, extensive client involvement could lead to additional requests throughout the project which may further lead to burning extra time, effort and cost.
As Agile focuses on time-boxed delivery and frequent reprioritization, the probability of not completing the deliverables in a specific sprint is high, may ask for additional sprints leads to additional cost.
Co-location of team members and the client is a key factor for the success of projects which is not always possible. However, such discrepancies can be managed through multiple channels like webcams, collaboration tools, etc.
The iterative nature of Agile may lead to a frequent refactoring if the complete scope of the software is not considered in the initial architecture and would be more visible in larger-scale implementations.