Software development has innovated the way businesses work in so many ways. With software built from scratch, you have more control over the functionalities and the benefits that can be derived from it. There are so many businesses that opt for off-the-shelf software programs, only to find out later that they will have to make endless process adjustments and software customizations to make it work for their business and environment.
A key aspect of software development is understanding which methodology best supports your team in delivering the right results. The word "support" is emphasized here because what matters more at the end of the day, is the solution you deliver and its ability to meet the needs of the business, not the methodology you adopted to deliver the solution.
The Waterfall methodology is one of the most criticized approaches to software development. In practice, it is very rare to find plain waterfall implementations, with most organizations drawing on its strengths in the form of other approaches - evolutionary and spiral (iterative) development methodologies.
Strictly following a linear process, separate goals are set for each phase of the project, with team members unable to move forward without completing the activities in the preceding phase. Although it grants better control in terms of developing software, it has the tendency to set limitations on the changes that can be implemented during software development. Issues not foreseen during the conceptualization stage may surface when software testing has commenced, providing very little room for further adjustment.
When To Use Waterfall Methodology
Consider using Waterfall when:
- The project is predictable and familiar to the project team
- Huge changes in requirements and scope are not expected
- The project team is knowledgeable enough to deliver the project without an extensive need for collaboration and knowledge transfer to other members of the team
- There’s a strong requirement for documentation and following formal procedures.
Basically, the Agile Methodology was developed to bypass the limitations of traditional software development approaches. This methodology (though some question referring to Agile strictly as a methodology) is a lightweight approach that focuses more on rapid delivery and reducing the risks of software development.
With Agile, strategic planning and feedback is non-stop, which helps teams maintain a reasonable degree of alignment and communication at every step of the process. Challenges are addressed almost instantaneously, making it easier to adapt as requirements change.
When To Use Agile Methodology
Mike Cohn recommends that Agile be adopted when projects have a short deadline, are complex and have an element of uniqueness to them. In addition to these factors, consider using Agile when:
- Requirements or the end results of the project are fuzzy
- A lot of knowledge transfer and collaboration needs to happen among team members
- The scope of the project is unpredictable.
Scrum is a form of agile development that gets rid of unnecessary processes that could slow down the achievement of expected deliverables. With Scrum, there is an active backlog for prioritizing the tasks at hand thereby granting better focus to the team. Daily updates are used to show progress, arrest issues right away and plan more effectively for the next step. All team members are encouraged to regularly review past activities. This guides them on what to do and what to avoid.
The Hybrid Methodology
Others have adopted a hybrid model where the two methodologies complement each other. A case in point: GUI development is accomplished using an agile approach while the backend is implemented using the Waterfall methodology. The Agile-Waterfall Hybrid Methodology relies on the clarity of the waterfall model in the area of scheduling and budgeting upfront as well as benefits of the Agile methodology such as flexibility and adapting to changing requirements. Though the hybrid approach aims to combine the best of both worlds, it does have its shortcomings.
When Would You Use Hybrid?
Consider Using Hybrid When:
- Project teams are familiar with Waterfall & Agile approaches and are willing to compromise.
- Software code can be re-used and you are dealing with a series of similar products
There is no one particular methodology that works for all situations or in all organizations. Each team must undergo a rigorous assessment of its peculiar circumstances to identify which approach is best.
Useful Links & Attribution
3d Man With Multiple Arrow Paths" by David Castillo/Free Digital Photos.net