Agile software development is a modern and good method for implementing IT projects. This article shows the advantages and disadvantages of this development methodology.
Introduction
For a long time, the so-called waterfall method was (and to some extent still is) the most popular programming approach. This was done step by step. At the start of the project, all requirements were written down. Then the complete design was created (system design, screen design, etc.). Then the complete code was created. After which, the testing of the system and the subsequent maintenance follows. There are some challenges in Waterfall, which one tries to solve through agile software development. Some of them are:
- All requirements are unknown at the start of the project: Some of the project participants, some of whom are non-IT experts, need to know which functionalities the system must have.
- Many requirements only arise during the project: During the project, i.e., after the creation of the first functionalities, it becomes clear that important points in the planning phase were overlooked at the beginning.
- Lack of time for the planning phase: An extensive planning phase is required to succeed in the waterfall model. This is the only way to discuss and plan the most important things. As already mentioned, those involved in the project include many non-IT experts/ managers/ decision-makers/ budget officers, etc., who may not want to wait long for the task to start. For these so-called stakeholders, functionalities such as a form on the software that can be used to send messages are more important. They want to see “results” and not spend time in “uncool and boring” planning phases for which nobody can be charged.
- Major errors only become visible at the end of the project: In many poorly planned waterfall projects, major errors only become visible at the end of the task, when several months have passed, and the head of acceptance on the customer side notices that the software system can’t do what you initially wanted.
Advantages
The following are some advantages that Agile brings and which solve some of the disadvantages (of Waterfall) described so far. Programming can start immediately, projects can be started with minimal requirements for the IT system. This is also because the Agile approach already assumes that not all, or even a few, requirements are in place at the beginning of the task. Only over time are further requirements formulated by the project participants. If the customer, using this method, came to the IT company with change requests during the development phase, then the IT company would be happy to accept the new requests since this is already expected and is a part of the way of working. Interim conclusion on this point: The employees and the customer are freed from an “annoying” planning phase and can bring in change requests anytime.
Results Are Visible After A Short Time And Appear At Regular Intervals
The aim of Agile is, among other things, to deliver functioning functionalities at relatively short intervals. This can happen, for example, in so-called sprints (part of the Agile Framework Scrum). Time units, for example, “a week” or “a month,” are agreed upon here, after which parts of the system are “finished” and can be examined by the customer. Interim conclusion on this point: The customer can see the first results and pass them on/show them to his management with a clear conscience.
The Customer And Internal Testers Can Check The Results
Because ready-made components of the system are always available, the customer and the internal software testers can check the program for suitability. The customer can intervene relatively quickly in the ongoing development if they see things not going in the desired direction. The testers can continuously check the system to see whether all functionalities are running correctly. Testers will also be able to identify undesirable developments at an early stage. Interim conclusion on this point: Major misguided developments and the resulting unpleasant additional costs (time, effort, budget) for the development team and the customer can be avoided.
Change Requests Are Welcome Or Possible
This advantage was already mentioned in the first point. However, it does highlight a key reason why, in some cases, Agile should be used. The IT system is written so that new functionalities can also be incorporated. The only thing to remember is that new requirements are only started after a sprint (i.e., a one-week or one-month phase) has expired. Interim conclusion on this point: You don’t have to keep the customer from changing requests during the project, which you often have to do with the waterfall model.
Everyone Involved Is In Constant Contact
Communication is important in IT projects. Agile encourages and demands that. For example, daily standup meetings are mandated for the development team. Daily reports are made here about the tasks that were completed yesterday, pending today, and the challenges one faced or will face. There is also constant contact between the development team and the customer. Usually, however, at the end of a one-week or one-month programming phase. Interim conclusion on this point: The development can be adapted in short steps through constant communication.
Tasks Are Prioritized
The entire IT project is divided into subtasks and prioritized according to their importance. These are usually the most difficult tasks, bringing the greatest added value for the customer. Since this work is tackled and implemented first, the customer benefits from the implementation. Unimportant functionalities can be completed toward the end of the task. Interim conclusion on this point: Especially at the start of a project, all eyes are on implementation, and the customer and his management want to see results. Thanks to the prioritization, the added value is visible right from the start.
Disadvantages Of This Method
However, there are also some disadvantages of the Agile software development method. These are shown below.
Not All Developers Are Happy With This Method
Developers, in most cases, are people who could be more communicative. Many programmers want to be left alone when completing and implementing functionalities. Constant meetings and constant explanations of previous tasks can be “annoying.” Especially the short, daily meetings can be exhausting if you have little to show for it (it usually takes a few days before you can show something tangible). Agile can be daunting, especially for software developers who have worked with the waterfall method for a long time. Interim conclusion on this point: Agile can lead to high dissatisfaction among developers if they are unfamiliar with this method or have not “grown up” with it.
Increased Testing Effort
In this method, there is constant testing. Therefore, one or more additional testing employees are needed to check the tasks during the entire project phase. This can mean additional costs that should be considered. Interim conclusion on this point: Testing expenses, particularly, are rather difficult to sell to customers, and they are often happy to do without them. Even the IT company often needs to assign more people to the project.
Project Costs Are Not Easy To Estimate
Suppose requirements cannot be assessed at the beginning because functionalities and project requirements arise “on the go” (during the project). In that case, an external service provider needs to specify an exact cost framework for the development. However, this is often a decision criterion for a company’s departments that purchase these services (for or against the service provider; for or against the project, etc.). Interim conclusion on this point: In most cases, an external customer would like to know what investments are expected of them during the project. Decision-making for or against the IT project is therefore made more difficult.
“Too Much” Communication Is Required
Each subtask must be set to “Done” before moving on to the next task. This means that, among other things, the end users and customers must be constantly involved and communicated with. However, time is scarce for most customers and especially for their employees. Therefore, it can also lead to customer dissatisfaction. Or it can lead to delays because the customer has “no time” to deal with the “internal processes” of the IT company. Interim conclusion on this point: The big question is whether the customer is so interested in software development that he participates in all the Agile process parts. This is different in most projects.
Also Read: Git Stash: Temporarily Save Changes In Git