Have you ever tried to convince a diehard lover of cats that they really ought to switch to a dog for a pet? Chances are, it would not go well. When people have strong feelings about something, it is difficult to change their minds. This is the way it is with lovers of Waterfall and Agile. They see only the pros of their preferred software development methodology, and the cons of the other.
And in the middle, are those who believe that a hybrid (combination of the two) actually works best. Their argument is that, based on the project and the developers being used, the two methodologies can be utilized at different points and for different sub-parts of the project.
Determining which methodology will work best for your company’s culture, environment, and typical development projects will require some serious thought and consideration of the benefits and drawbacks of each. Chances are, you will end up with the conclusion that both methodologies, or combinations of them, will work, depending on the circumstances of each project.
Looking at the Methodologies
Here is a brief rundown of both methodologies, and the pros and cons of each.
This is often called the classic method because it was the only one used for years. It follows a pretty strict process, beginning with the concept of the product and following a set step-by-step process, flowing downward toward the final product. Thus, the term “waterfall.” Following the concept phase, which determines the feasibility of the project, there is the overall design phase, which “maps out” the project, including mockups, wireframes, and storyboards.
It is not until these first two phases are completed that the actual building is started, and then testing comes only after the entire product is completed. Once the product is launched, there are bugs and issues that will be discovered. These will need to be fixed, perhaps with patches, until the product is perfected.
Teams that work in a waterfall environment, work on each phase together. Thus, a design team will create the mockups and wireframes, and a team of developers will build the software from the design. Still others will user-test the app prior to its launch, developers will fix bugs during this final phase and, usually, after launch, during the maintenance phase
Advantages of Waterfall
- Specific Deadlines: Workflow is clearly defined, with timelines, and this means that deadlines are set in the beginning and more easily met.
- Strong Documentation: There is a clear record of each development phase as it moves from team to team, and everyone can follow the history.
- Updates are Easy to Provide. Because the workflow is both documented and according to timelines, it is easy to provide updates, especially to a client who has heled to establish deadlines.
Disadvantages of Waterfall
- Changes can be expensive. Because user testing occurs toward the end of the project, there may be significant work involved in making those changes. This can be expensive
- Working product takes longer to deliver. Again, because the entire project is completed in phases, a client will not be able to see how an app really works until the end.
- Inadequate testing is a temptation. Again, because the entire product is not tested until the end, if a deadline looms, there may be a tendency to rush through testing. This can really damage a launch.
Thee agile approach is iterative. This means that the project is divided, not by linear phases, but by smaller pieces of the product, each of which becomes a type of minimum viable product. Thus, several pieces may be worked on simultaneously. The idea is that each piece is designed, developed, tested, and changed as desired/needed.
Teams in an agile environment are heterogenous. For example, a designer, developer and tester will be a part of a team, each performing his role in the iteration. The entire project staff may hold frequent, short “stand-up” meetings at the beginning of the day, to report progress and changes, and to exchange solution ideas. Then, each team returns to its own iterative work.
Advantages of Agile
- Continuous User Feedback: As each iteration is completed, it can be delivered to a client who can then provide feedback. At the same time, if it is shared with teams working on other iterations, great ideas may come forth for a new element to be added, and that addition can happen right then and there.
- Testing Occurs Along the Way: This is perhaps the biggest advantage of agile. Each iteration is tested as completed. When the entire project is completed, it is likely to be far more bug-free than in the waterfall method.
- Smoother Launch: With most changes and de-bugging occurring as iterations are developed, the chances of having to make changes or fixes after launch are reduced.
Disadvantages of Agile
- Timelines and deadlines are often not fixed: This is not to say that a final deadline for the entire project is not set; however, timelines may need to be changed as the project moves forward. And, if one team needs another team to complete its iteration before it can progress any further, the potential for backlog and not meeting larger timelines is there.
- More time-consuming. Iterative teams have to commit to whatever amount of time is necessary to complete their task responsibilities. More communication has to occur too, and this can eat up time.
- Less emphasis on Documentation. It is less necessary to document with this methodology, because the project is not moving in phases. The focus is on working software, not documenting for the next team to take over the project.
How to Choose
Here’s the thing about these two methodologies: They are both useful and preferred, depending on the circumstances and uniqueness of each project, as well as client input.
There are some questions that development businesses should ask about each project they take on:
- How much detailed information has the client provided up front? If clients know precisely what they want and are able to communicate that clearly, waterfall may be the best methodology. Chances of major changes being requested at the end are reduced. On the other hand, if clients are less specific and only have a general idea of what they want the software to do, an agile approach is better. In this way, a client can receive iterations as they are completed, provide feedback along the way and ask for changes during the process rather than at the end.
- Where is the project team located physically? For iterative methodology to work, the ideal is that the teams are physically located in the same place. The essential, almost daily, short meetings that must take place can be accomplished far easier. If teams are remote, waterfall is better.
- How strict are the costs and deadlines? Generally, the stricter they are the more waterfall is the preferred methodology. If a client is flexible and wants to focus on quality over speed, then agile is better.
- What is your own management style? If you prefer fixed costs, deadlines, and a linear thought process, then waterfall is a more comfortable methodology for you to lead. Agile can be “fuzzy,” and managers must be able to deal with uncertainty, frequent change, and flexibility in timelines. Multi-disciplinary teams can be more difficult to manage.
The other important consideration is the types of projects a company assumes. Based upon clients, project details, and requirements, one methodology may be preferable to another. And for very large projects, there may indeed be a need for a hybrid approach, utilizing waterfall for some aspects and agile for others.
There are diehard proponents of each methodology, and that is not likely to change. As a business considers its needs and preferences, then, it will be important to employ individuals whose preferences best meet company needs.
James Scott, professional marketer and CEO at Essay Supply. Agile enthusiast, music lover and digital marketing guru, James has passed the way from assistant to CEO of own company.