By: Daniël da Silva Baião — 2137134
Due to a changing/ changed work environment within IT, Agile has become the best development methodology for most teams. The reason being that it is highly adaptable to changes while still having well-defined tasks. It is used more than the current most popular competitor, the waterfall methodology. With the biggest difference between the two being the flexibility of tasks during the project. This is because a task is predefined during a waterfall project, whereas a task can change between, or even during the sprints withing an agile project.
Other alternatives are either too similar without having the benefits outweighing the downsides of agile, or have not been adopted enough for tooling and advice to be readily available.
The first time I heard about the distinctions between waterfall and agile was in the first year of my education at Avans University of Applied Sciences. These terms would be used many times more since that day, and I have experienced many of the benefits and downsides of both systems. The reason for this article is to help new development teams to inform them about the different options available and why for many others, agile is the preferred choice.
To be able to test the hypothesis ‘Most teams should develop using agile’ there must be other development methodologies to compare to. For this reason, various popular development frameworks will be listed with their own advantages and disadvantages.
The waterfall methodology is a linear or sequential approach to development (Gallagher et al., 2019). According to Gallagher et al. (2019) a project using this methodology is typically chronologically following these phases: requirements, design, implementation, verification, and maintenance.
One of the benefits of this linear approach, is that the project scope and requirements stay relatively static, which according to Gallagher et al. (2019) means that costs and timelines can more accurately be determined early in the project. Another benefit would be the structured approach of the project, this would mean that because all the requirements are recorded at the start, everyone in the project should be able to understand what needs to be done.
Some disadvantages would be that it is hard to adapt the project to changes in the requirements. A big change in the requirements could mean the project has to go back to the requirements stage.
Another disadvantage would be the dependency on products or decisions made at the start of the project. A chosen piece of software could be too unstable, or changes in the software could mean that it will be disadvantageous or even destructive to use.
Since, iterative development is relatively close to agile in methodology, with the distinction being that agile also uses incremental development as well as iterative. For this reason, less time will be spent analyzing iterative development.
One of the advantages of this method is the ability to correct defects made earlier in the development process (Eastern Peak, 2016).
One of the disadvantages to iterative development is that the iterations themselves are rigid and cannot be changed once it has started. Unpredictable events can disrupt the iteration without a way to adapt the planning.
Agile development tries to tackle most problems found in the waterfall and iterative methodologies. However, it does have a few disadvantages compared to the two. Firstly, according to Santos (2021), it requires a relatively high degree of customer involvement since the tasks that will be made each sprint have to be discussed thoroughly with the customer. Secondly, tasks are fixed to time limits and can restrict or even lower the quality of the end-product.
The results of the research done conclude that most teams will benefit from using the agile methodology instead of its competition. This is due to the overall change in projects requirements over the years. Projects have been getting more dynamic and development teams must be able to adapt quickly to changing requirements without having to redo past work as would be the case with the waterfall methodology. For this reason, it is recommended that in projects where de requirements are not mostly static, the project team chooses for an agile methodology. According to Sweeney (2020), the switch to agile development has already happened and partly due to the reasons stated above.
Another reason to recommend agile over its alternatives is that is has more available tooling with lower costs since many of the available tools are free to use. This makes it easier for new or small teams to quickly find their own way of developing with their preferred tools.
Another alternative to waterfall is iterative development. A benefit of iterative development, that it shares with agile development, would be the high involvement of the customer which makes it easier for the team to adapt to changes.
However, due to its shortcomings compared to agile development and the overall similarities between the two, there are few moments where iterative development would be preferable to agile. The reason for this is that the iterations within iterative development are very rigid, which can cause many problems that are avoidable when using agile. The only benefit of this rigidity is when the development team is accepting too many requests from the customer, which can cause too much workload for the members within the team. However, this is not a flaw of the system being used, but rather the fault of the team.
There are more methodologies than the three used in this article. However, these methodologies make up for a small amount of the total used strategies. This makes it hard to recommend since tooling will be scarcer and fewer teams will be used to it, making it harder for a team to make the switch to the new development methodology.
Conclusions and recommendations
When the developmental process does not have a need to be rigid and well-defined, it is recommended that an agile methodology is used, since this will result in higher productivity and better results.
Secondly, even though iterative development is closely related to agile, the benefits do not outweigh the risks. It recommended for most teams that are deciding between iterative and agile development, that they choose the latter.
Lastly, even though agile development has many benefits, it is not a tool that can be used in every situation. For this reason, it is recommended that careful consideration is put in the decision of what development methodology is the best for the given use case. For most teams this will be Agile, but for some it might not be.
Eastern Peak. (2016, 4 maart). Iterative Development Model. Eastern Peak — Technology Consulting & Development Company. https://easternpeak.com/definition/iterative-development/
Gallagher, A., Dunleavy, J., & Reeves, P. (2019, 23 april). The Waterfall Methodology: Why You Should Use It. IBM Developer. https://developer.ibm.com/technologies/devops/articles/waterfall-model-advantages-disadvantages/
Kumar, G., & Kumar Bhatia, P. (2012). Impact of Agile Methodology on Software Development Process. ResearchGate. Published.
Mersino, A. (2019, 28 november). Post author: Anthony Mersino. Vitality Chicago Inc. https://vitalitychicago.com/blog/what-is-agile-and-why-is-it-important/
Santos, J. M. D. (2021, 11 juni). Agile vs. Waterfall: Differences in Software Development Methodologies? Project-Management.Com. https://project-management.com/agile-vs-waterfall/
Sweeney, M. (2020, 16 februari). Agile vs Waterfall: Which Method is More Successful? — Clearcode Blog. Clearcode | Custom AdTech and MarTech Development. https://clearcode.cc/blog/agile-vs-waterfall-method/