Article written by Kenneth Nwanganga
When I pick up a new project, most of the time the stakeholders always ask me the same question, which is: “we hope that it will be easy to make changes to this application”.
Everyone is concerned about the ease of changes and agility of applications, in the environments I have worked, business requirements change often, and I want to believe this is as a result of customer behavior. This made me realize that when starting up a new project, you must be very flexible, especially with the methodology you want to use.
The adoption of software development methodologies is a key component of software engineering. The methodologies provide guidance on how a software project is to be designed, built, and maintained.
In this article, I will be evaluating some of the most popular contemporary software engineering methodologies, at the end we will answer the key question about the methodology to use.
1. Agile development methodology
Agile software development is a methodology that emphasizes flexibility and rapid development. This perhaps is a well-known methodology by a lot of people, even business owners will casually ask you, I hope the application will be agile, to them it just means hope it’ll be able to withstand the numerous changes we will be bringing in the future.
I have worked on several projects built with this methodology and they are still adapting to changes till date. I have not said agile is the best at this point, we are still evaluating.
Agile methodology allows rapid delivery of working software and encourages continuous feedback from the customer.
Again, this makes it easy for the stakeholders to be involved in the development process and trust me almost every stakeholder in a project wants to be carried along and they want to provide feedback every time. Though some critics argue that the focus on speed and flexibility can lead to a lack of attention to detail and a lack of documentation.
Advantages of Agile development methodology:
- Flexibility: Agile development allows teams to adapt to changing requirements and shifts in priorities. This makes it easier to respond to customer needs and deliver value in a timely manner.
- Continuous improvement: The iterative nature of Agile development allows teams to continuously improve their processes and deliver high-quality software.
- Faster delivery: Agile development uses small, incremental pieces of a project, which allows teams to deliver working software faster.
Disadvantages of Agile development methodology:
- Complexity: Agile development can be complex, especially for large and/or long-term projects. This can make it difficult to plan and manage the project effectively.
- Dependence on team members: Agile development relies heavily on the skills and abilities of the team members. If the team is not well-suited for the project, it can lead to delays and issues.
- Limited documentation: Agile development emphasizes minimal documentation, which can make it difficult to maintain a clear understanding of the project’s requirements and progress.
2. Waterfall development methodology
I like to call this the traditional development methodology. Waterfall development is a project management methodology that is based on a linear, sequential approach to software development.
I strongly believe that a lot of people won’t want to make use of this methodology because of the fact that it’s slower for you to deliver even though a lot of attention will be on ensuring that every stage is completed before starting from the beginning again. What does that even mean?
Let me break it down. If you choose this methodology for instance and you are asked to work on an application that enables cash transfers, if one of the requirements is that users will have to enter a PIN before the withdrawal is made, once you start this process and the business says we need to enable one-time password (OTP), you don’t have the option of ignoring the PIN part, you have to finish it, move back to document this change and implement.
Waterfall methodologies have been criticized for being inflexible and not accommodating well to changes in requirements.
Every stage of development has a specific aim in the waterfall paradigm. Once a phase has been fully developed, the development moves on to the following phase without the option of returning to a previous stage.
Advantages of Waterfall development methodology:
- Clear milestones: Waterfall development allows for clear milestones and better predictability of the project timeline and budget.
- Detailed documentation: Waterfall development emphasizes the use of detailed documentation, which allows for a clear understanding of the project’s goals and serves as a reference for future maintenance.
- Good for large, complex projects: Waterfall development is well-suited for large and complex projects, as it allows for clear milestones, detailed documentation, and centralized project management.
Disadvantages of Waterfall development methodology:
- Lack of flexibility: Waterfall development does not allow for much flexibility, once a stage is completed, it is difficult to make changes.
- No customer involvement: Waterfall development does not allow for much customer involvement, as the customer does not have the opportunity to review and provide feedback on the software until it is in the final stage.
- Inflexible: Waterfall development is inflexible, making it difficult to adapt to changing requirements and shifts in priorities.
3. DevOps deployment methodology
DevOps is a methodology that combines the practices of software development and operations to streamline the process of creating and delivering software. This is being used a lot by developers and operations managers. I am an Azure DevOps expert and I can tell you that this methodology is the type that carries everyone along, from business requirements to development.
To increase efficiency, the DevOps technique aims to integrate development, quality control, and operations into a single, continuous set of tasks.
In recent years, DevOps has gained popularity as a methodology that aims to bridge the gap between software development and operations. You will agree that most times developers won’t really communicate with operations, they just get requirements and develop, with DevOps, everyone is involved.
DevOps promotes collaboration and communication between developers and operations teams, with the goal of faster and more efficient software delivery.
However, some critics argue that the focus on speed and efficiency can lead to a lack of attention to security and testing. We have looked at some interesting things about DevOps, let’s look at the advantages and disadvantages of using this methodology.
Advantages of using DevOps methodology:
- Faster software delivery: DevOps practices such as continuous integration and continuous delivery allow for faster delivery of software changes to production environments. This can help organizations to quickly respond to market changes and customer needs.
- Improved collaboration: By breaking down silos between development and operations teams, DevOps promotes better collaboration and communication. This can lead to more efficient and effective problem-solving and a greater sense of shared ownership of the software development process.
- Better customer satisfaction: Faster delivery of software changes and increased reliability can lead to better customer satisfaction.
Disadvantages of using DevOps methodology
- Complexity: Implementing DevOps can be complex and requires significant changes to organizational structure, processes, and tools. This can be a significant undertaking and may require a significant investment of time and resources.
- Risk of failure: DevOps practices such as continuous deployment and testing can increase the risk of errors or issues in production environments. This can require robust test automation and monitoring to ensure that changes don’t cause any issues in production.
- Difficulty in measuring: DevOps practices can make it more difficult to measure progress and performance, as software changes are being continuously deployed and tested.
4. Rapid application development methodology
Rapid application development (RAD) is a software development methodology that emphasizes rapid prototyping and rapid iteration in the design and development process. One of the key principles of RAD is the use of prototyping.
This involves creating a working model or prototype of the final product early on in the development process. I have used this methodology and I still use this till date, in fact business owners love this methodology because they are able to see the design of the product even before it’s developed.
They have a pictorial view of the application without a single line of code written for the said application.
RAD is well suited for projects with a high degree of uncertainty or where the requirements are likely to change. It is particularly useful in situations where the customer or end-user has a limited understanding of the final product, as the prototype can help clarify the requirements.
Advantages of Rapid Application Development (RAD) methodology
- Faster development time: RAD allows for a more rapid development process, allowing teams to deliver a working product to the customer or end-user more quickly.
- Flexibility and iteration: RAD allows for a more flexible development process, which allows teams to make adjustments and improvements based on feedback throughout the project.
- Suitable for uncertain projects: RAD is well suited for projects with a high degree of uncertainty or where the requirements are likely to change.
Disadvantages of Rapid Application Development (RAD) methodology
- Difficulty in estimating time and cost: It can be difficult to estimate the time and cost of a project when using RAD, as the requirements are likely to change throughout the development process.
- Difficulty in meeting all requirements: It can be challenging to ensure that the final product meets all of the requirements, as the requirements may change throughout the development process.
- Risk of poor quality: The rapid nature of RAD can lead to a lack of attention to detail, which can lead to poor quality in the final product.
Overall, each methodology functions well in various contexts and has unique strengths and shortcomings. Consider combining the components of each methodology that are most effective for your team and your current project when selecting your development methodology. You can establish a hybrid development process in this way to get to production quickly and securely.
As for me, I always combine these methodologies, if you are working on a project that requires you to make a lot of updates, you can set up deployment pipelines using DevOps so that you can focus on core development, if the same project requires you to document every aspect of the application, then bring in the waterfall model as well.
With the combination of these two, you are somehow deploying your applications rapidly which is what RAD helps with, here the customer is satisfied in the end. Waterfall methodologies are best suited for large-scale projects with fixed requirements but can be inflexible.
Ultimately, the most appropriate methodology will depend on the specific needs and constraints of the project.
About the writer:
Kenneth Nwanganga is currently the Chief Technical Officer (CTO) at GIGM. He is part of the team that made the Nigerian-based technologically powered transportation company become well-known brand across many African countries. Kenneth is responsible for the company’s technical operations and plays a key role in the development and implementation of new technologies and systems to improve the company’s services and operations.
Kenneth holds a first class degree in Computing from the University of Greenwich in London and an Advanced Diploma in Software Engineering from APTECH Computer Institute in Nigeria.