23 May 2016
One of the key benefits we at TandemG have is the wide angle in which we experience Software development methodologies. We see a lot, from various companies sizes and disciplines. Specifically, we observe more and more of our partners and clients trying to figure out whether Agile or Waterfall methodologies fit them best, this is certainly a two-way road. There are different levels of adoption and customization, according to specific culture and needs. Which fits you best? Let’s make a high-level comparison of the two concepts. To make an informed decision about what will suit your particular needs, you have to know as much as you can about your company’s capabilities and about the software development methodologies available.
The ‘waterfall’ methodology was first introduced by Royce in the 1970’s. It is sequentially designed; Sequential means that when a step is completed, there should be no going back to earlier steps unless an error or a misconception is found. Only once a stage has been completed will we move to the next stage:
- Requirements Analysis
- Software Design
In this process of development, little to no errors or alterations are assumed and in extreme adoption are even not allowed. Therefore, the outcome of the project needs thorough planning and careful execution. Some benefits of the ‘waterfall’ method include:
- Thorough record keeping so that the program can be improved at a later date
- Setting expectations of project cost, size and timeline
- Knowing exactly how the program will operate after completion
- Since strong documentation is necessary, if there is a change in employees, the project will be minimally impacted.
There are naturally also disadvantages in the ‘waterfall’ method. One main disadvantage is the lack of flexibility. Another, is that there can be no faulty stages, otherwise the whole concept may collapse. For example, the product can be tested only upon development completion. So, if there are any bugs, it won’t be discovered until well into the process.
The ‘Agile’ method of software development came on the scene as a proposed solution to weaknesses of the ‘waterfall’ methodology. Agile evolved out of a number of different lightweight software philosophies which developed in the 1990’s in counterpoint to heavyweight methodologies like waterfall. The Manifesto for Agile software development, written in 2001, shows the emphasis that Agile places on value. This meant that the sequential process of design had to be replaced with applying incremental steps. The steps to start off the project design had to be simplistic. The developer would start working on small modules over a weekly or monthly time frame. During this time, the priority of the project is assessed and then a test-run is done. During the time period and test run, the developer will be able to discover bugs and get feedback, which is then incorporated into the project design prior to the next phase. Some benefits of ‘Agile’ include:
- Ability to make changes and/or rewrite the software to suit change requests in reaction to actual results and conditions.
- It is highly transparent and supports continuous improvement for live systems.
- Ability to launch the product when any cycle ends. So, it is easier to decide on a launch date and follow through.
One major disadvantage is that due to the flexibility and the series of steps needed to ensure proper coding and testing, the project may come in over the intended budget and after the deadline.
So, what should you ask yourself before making a decision?
- Do you have a clear picture of what the final product should look like?
- Could there be changes to the scope of the project, at any point of the process,even late in development?
- Is your development team skilled enough, adaptable and able to think independently?
- Is there sense in breaking the product versions into multiple steps?
- Is there good collaboration between R&D and other functions?
The choice between the ‘agile’ and ‘waterfall’ methodology will depend on your needs and your organization structure and skills. Good planning and the appropriate goals as well as wise execution will be the deciding factors as well. Both the Agile and waterfall methodologies have their strengths and weaknesses. The key to deciding which is right for you comes down to the context of the project. Is it going to be changing rapidly? If so, choose Agile. Do you know exactly what you need? Good. Then maybe waterfall is the better option. Or better yet? Consider taking aspects of both methodologies and combining them in order to make the best possible software development process for your project.