One topic that is sure to create a lively discussion in an IT meeting is Agile versus Waterfall. While both are usable and mature methodologies, there are schools of thought that believe Waterfall is the best development methodology for organizing the work of software development and getting projects done. And there is the school of thought that will tell you just the opposite—Agile is the way to go.
To help you make an informed decision as to which method works best for your project, the following is an overview of each.
Waterfall is similar to a workflow—stages completed and on to the next stage—of which there are eight—conception, initiation, analysis, design, construction, testing, implementation and maintenance. Once a stage is completed, you can’t go back to a previous stage. Well, technically you can, but that means shutting down the project and starting over again. To that end, it is imperative to know the project outcome, have your plan set in stone from the beginning, and follow it to the letter with zero mistakes.
Waterfall is best for projects where you have a crystal clear picture of the final product, where speed is not a factor and where clients and stakeholders know what they want and don’t need to change the scope of a project once it has begun.
• Static nature and predictable workflow make estimating costs, creating timelines and meeting deadlines easier
• With a clear starting point and requirement review gate, the development team must complete all tasks before the project can proceed
• Timelines and documentation make it simple to provide status updates to management, stakeholders or clients
• Documentation and paper trail for each phase of development make it easy to follow the logic of past projects and lay the groundwork to ramp up new projects
• Teams typically do not require additional training, as Waterfall is the traditional approach to software project management
• Requirement errors or changes mean the project has to start from the beginning with most of the previous code scrapped
• As many as four phases of the project need to be completed before actual development begins, which can mean slow delivery times
• With all the requirements gathered upfront, there is an increased possibility of missing the mark with coding requirements
• With testing at the project’s end, there can be a tendency to rush through the testing process in order to meet a deadline—a poorly tested product can result in a failed launch
Unlike Waterfall, Agile follows an incremental approach, with developers starting off with a simplistic project design. They then work on small modules in weekly or monthly sprints and at the end of each sprint, project priorities are evaluated and tests are run. This allows for bugs to be discovered sooner than later and for client or stakeholder feedback to be incorporated before the next sprint is run.
Agile is best for projects where production speed is the focus rather than project quality, where the scope of a project may change, where the picture of the final product isn’t clear, where you have developers with the skillset to think independently, and where the product is for an industry with rapidly changing standards.
• Changes can be easily made, with re-writes to the program standard procedure
• Features can be easily added to keep current with changing industry standards
• Evaluating project priorities at the end of each sprint allows clients and stakeholders to provide feedback and get the product they want
• Testing at the end of each cycle ensures bugs are caught quickly and taken care of in the development cycle
• Thorough testing means that the product is likely to reach its launch date
• Flexibility can lead to procrastination and stretch the timeline if a quality project manager is not engaged with the Scrum team
• Lack of structure and small teams often mean one person per role and that each person much be self-disciplined and highly-proficient
• Active team involvement and face-to-face collaboration can mean a higher time commitment
• Working software over documentation forces teams to strike a balance between code and documentation
So Which One?
Choosing one methodology over the other depends on the context of your project. If you know upfront that there are going to be changes and client and stakeholder input along the way, Agile is best.
If there aren’t going to be changes as the project progresses and the client or stakeholders know exactly what they want, Waterfall is best.
Or what about combining elements of each? It’s doable. Like most things, it just takes some compromise and adjustments.