Let’s start with the basics and take a look at what these project management methodologies are in their essence before jumping into their pros and cons.
Waterfall methodology is considered to be the traditional approach to software development. According to this methodology, the project is divided into several consecutive stages that cannot be fulfilled simultaneously. At the end of every stage you are supposed to conduct a review of requirements, and only then move on to the next stage. What needs to be taken into account is that having finished one stage, you cannot return to it until the whole development cycle is completed. Therefore, this methodology describes development as a linear and sequential process that typically consists of seven stages:
Pros:
- Easy to start using: due to its inherent simplicity, this methodology is easy for newcomers and/or junior developers to adopt;
- Detailed documentation focus: creating documentation for every stage is necessary, which makes the objectives more clear for the development team, the project itself becomes clearer for the client and easier to be taken on by a new person on the team
- Easy-in-use: as Waterfall is rigid, there are always certain requirements, expected outcomes and reviews at every stage, which makes supervising a project a piece of cake.
Cons:
- Identifying requirements is not as easy as it seems: clear requirements are important, but it is often the case that the client is not able to identify all the key “wants and needs” in the very beginning of the project.
- Making changes is costly and inefficient: if a team identifies a problem during the coding itself, they can’t simply return to a previous stage and make adjustments to solve it.
- Clients may be impatient to see at least some piece of operating software, however, the development stage itself starts quite late.
- Testing late is way too risky as there may be not enough time left for it before the deadline; in this case, certain bugs and errors may not be identified in time.
AGILE: PROS & CONS
Let’s move on to our competing contender in the Agile vs Waterfall standoff. First of all, we need to point out that Agile represents general guidelines that are reflected in the Agile Manifesto (2001). This framework for software development has been implemented in various Agile methodologies, such as Scrum, Kanban, etc.
Long story short, the Agile methodology neglects the linear Waterfall approach in favor of an iterative one. According to Agile, project implementation starts with creating a product backlog that is basically the list of all the tasks that should be fulfilled over the course of the development. The tasks should be prioritized, and a certain number of the tasks with the highest priority comprises the sprint backlog. Sprints represent the iterations of project implementation. Each sprint can last from a week to a month, and must include reviewing project priorities, planning, designing, coding, and testing (unit and acceptance tests). The aim of each sprint is to present the product owner with a ready-to-use product at the end of it, even if it has a limited set of features.
According to Agile, the focus also lies on the team’s self-organization, with little supervision and control. Agile puts face-to-face interaction, collaboration and adapting to changes at the top of the priority list.
Agile suggests involving a client representative into a cross-functional team that will be working on the project implementation. Besides developers who write the code themselves and the client representative, such a team should includes planners, designers, and testers.
Scrum is, perhaps, the most widely known project management framework that embodies Agile principles. Scrum determines a specific set of roles that should be fulfilled, the responsibilities for each role, and daily stand-up meetings meant for adjusting the plans. Sprints are faster and last from one to two weeks. The roles include the product owner (the customer representative), the developers, and the scrum master who facilitates the work and serves as a “buffer” between the team and possible distractions.
Kanban, another Agile methodology, got its name from the Japanese word for “card” or “visual sign.” It is heavily focused on visualizing the workflow, minimizing work in progress within the flows, and continuously making small adjustments to an existing system.
Pros:
- Adaptability to changes: prior plans may get outdated quickly in the ever-changing world of technology, and Agile has proven to be better at adapting to changes, both due to new technologies and the client’s requirements.
- Communication is a priority: face-to-face interaction and feedback are the core Agile principles that encourage constant improvement of the team’s competences.
- Close collaboration with the client: clients have more opportunities to have a say in what the end product should be by closely collaborating with team members.
- There is no need for defining all the requirements in the very beginning: they can be adjusted over the course of the project’s implementation.
- Thorough testing: unit and acceptance tests during each sprint significantly decrease the possibility of unrevealed exploits and bugs present in the end product.
Cons:
- Delivery date ambiguity: due to iterative changes in the priorities of the project, delivery dates cannot be planned 100% accurately beforehand; besides, adding sprints may become necessary, which also postpones the final product launch.
- Highly-developed skill-sets required of team members: as the team is supposed to be cross-functional and small at the same time, every team member often has to fulfill a particular role (e.g., the designer); therefore, every developer should be highly proficient in his or her line of work.
- Less attention to creating documentation: Agile puts coding itself above creating detailed documentation; documentation should serve a singular purpose, allowing a newcomer to understand how and why the code was written.
AGILE VS WATERFALL: WHAT ARE THE COSTS?
Money matters. We all know this. This is why budget restraints are inevitable, and you have to take into consideration what you can or cannot afford. So, let’s compare how much Agile and Waterfall development would cost you to help you make a wise financial decision that will impact the future of your project.
We need to be clear about one thing. Every project is unique due to the technical specifications, requirements, etc. Thus, it is impossible to tell you the exact amount. “Agile development of your project will cost you X US dollars, or you will have to spend Y US dollars on Waterfall development of the same project.” The development cost depends on a number of factors which include the hourly rates of developers you hire, the functionality you want to implement, the type of development (building a web application or an Android one are different projects), etc.
However, as the research conducted by the Standish group revealed, there is one thing we can tell you for sure: Agile development methodology has proven to be more economical than Waterfall methodology. The research showed that Agile projects are 4 times cheaper than Waterfall ones on average, and they break even 10 times faster than Waterfall projects. Thus, we have clear empirical evidence that Agile methodology is more cost-efficient than Waterfall. Perhaps, this is one of the main reasons why Agile is gaining popularity among IT companies regardless of their scale so quickly.