Agile vs Waterfall: Approaches to the Development of Software Products
The approach to software development determines the success of project implementation.
Agile and Waterfall methods are the most popular. It should be noted that these methods are quite mature and tested in practice. Generally, the top custom software development companies combine these methods to deliver projects. And although they have common features, in general, the approaches are fundamentally different.
Besides, in practice, they are rarely found in their pure form. What the difference between Agile and Waterfall is, and what to rely on when choosing a software development methodology, we are describing below.
Agile methodology: main features
The Agile system combines ideas and principles for flexible management of the project development process. The methodology appeared relatively recently in the USA. It was developed by 17 IT specialists who worked out 12 principles of this method, which can be summarized as follows:
- Processes and tools are less important than people, their interaction, and communication.
- A working product is more valuable than documentation, which contains everything, even the smallest details (though at SDH, we do not neglect documentation either).
- Cooperation with the customer in the long term is much more efficient than the agreed terms of the contract.
- Sometimes following a planned algorithm is not always right when there is an opportunity to change and adapt to new circumstances.
If we evaluate the Agile methodology from a practical point of view, then with this approach, software development takes place in the format of iterations, that is testing throughout the whole process. An iterative and team approach to software development aims at strengthening communication between customers, developers, and testers.
What is the point? Instead of creating schedules and tasks, the entire period of time allocated to development is divided into several phases — sprints, which take several weeks. Each sprint ends with an assessment of the results that the team was supposed to achieve according to the planned action list. Actually, the Agile methodology is largely determined by the client's participation in the process.
In the SDH company, we usually hold a demo for the customer after each sprint and receive feedback.
- Since the Whole process is client-oriented, the participation of the latter is ensured at all stages;
- High-quality development is guaranteed;
- The client can view the results at an intermediate stage, thus is able to make some adjustments;
- The feeling of involvement of the customers unites and attracts them to the work;
- This approach makes it possible to create a basic version of the product to be used during subsequent iterations. It is indispensable in projects where time to market is really decisive;
- A higher level of motivation and organization of Agile teams is achieved;
- The number of refusals is lower because the focus is on gradual progress, controlled by the client.
At the same time, there are also disadvantages of the Agile methodology:
- A project may fail if lacking confidence in the product;
- You may need an expert evaluation to make an important decision;
- The method is not suitable for small projects (for example, business card sites, and landing pages);
- Projected timing for the development project may increase if new ideas are added at each sprint, thus significantly expanding the scope of work for the MVP.
Agile product development may never achieve the ultimate goal, precisely because of its flexibility. In addition, the specialists themselves must be highly qualificd and experienced, be able to analyze the results, and look for alternative ways. Finally, calculating the final amount of work is sometimes difficult. So this approach is suitable for business management programs development, for example.
"When implementing this approach, in cooperation with the customer we normally try to agree on the main set of functionalities that should be introduced at the launch stage of the MVP project in order to further develop them, considering users' feedback."
– Marina Fomenko, Head of PM at Software Development Hub, shares her experience.
What the Waterfall methodology is
The "waterfall" model used in software development is a classic one. This is the total opposite of flexible Agile with its constant testing and improvement of results. The Waterfall methodology is based on a gradual, systematic process that is divided into stages. Besides,you can move to the next stage only after completing the tasks of the previous one. 6 stages of software development were established by the founder of the model, Winston Walker Royce, in 1985:
- Documented system and software requirements are developed.
- Analysis is embodied in diagrams and business rules are defined.
- Design is created. At this stage, the internal architecture, requirements implementation capabilities, interface, and structural logic are developed.
- Coding is performed.
- Final product testing, and bug fixes are done.
- Product adaptation to operating systems is made.
Advantages of Waterfall:
- Client participation is optional at all stages;
- The ability of team members to focus on different tasks is preserved;
- Separation of the results of each phase and ease of their verification are achieved;
- Easy adaptation for other teams is ensured;
- Planning is simplified by coordinating stages in advance;
- In the beginning, the full scope of the tasks to be achieved is known, so the results are easy to evaluate;
- The client is less likely to see a partial result at the end, again due to planning at the beginning;
- Clear documentation of process and results are provided.
The stability of the tasks, convenient reporting, and clarity of the cost make the methodology acceptable for the development of small projects with overhead requirements.
Among the disadvantages are as follows:
- Lack of flexibility makes it impossible to allocate additional time or finances to solve a problem that arose during development. So you often have to save costs at the testing stage.
- Inability to make changes during work;
- Even if the projected costs increase, it will not be possible to optimize costs or functionality to adapt;
- Testing the finished product, rather than individual components, reduces the efficiency of the process.
These shortcomings are taken into account and corrected in the models created on the basis of Waterfall: Waterfall Sashimi with stackable phases, Waterfall with subprojects, etc.
The choice of a development approach should be based not only on the obvious advantages and disadvantages of each but also on the company's experience, the client's involvement in the project, etc.
In SDH, there is a well-established balanced model for several projects. The customer knows that the team is doing a certain iteration according to the described task (which is inherent to Waterfall). And he/she is sure that in case of any urgent changes in circumstances, the team will not reject his request and make changes directly to the current iteration (which characterizes Agile).