Agile is a methodology for developing systems, and even within the agile methodology there are various detailed methods.
Agile has the following main points in common
1. It does not aim to realize all requirements from the first release.
2. It is a small-scale iterative development process, and sometimes involves checking with the client and making revisions, etc.
Agile methods are expected to reduce development man-hours and time-to-market, and can flexibly respond to client requests down to the smallest detail.
Agile is such a useful method, but it is not very popular in Japan. In the past, Japan had a strong culture of listening to the client's requirements, making arrangements, and completing each step before moving on to the next step, just like water flowing into a terraced rice paddy overflowing before moving on to the next terraced rice paddy. The waterfall method is still used in many places.
The main characteristics of waterfall are as follows
1. System specifications are finalized at the initial requirements definition.
2. Each process is clearly separated, and coding and testing are not done in parallel.
3. The system is used only after all development processes are completed.
Because of the above points, waterfall tends to have a greater impact on specification changes than agile, and the timing of knowing the completion image of the system tends to be delayed, making it difficult to reach a consensus with the client during the development process, resulting in delivery delays and the system not being exactly what the client had requested. This increases the risk of problems.
This is even one of the reasons why Japanese companies that try to create everything using the waterfall method are said to be less productive than the rest of the world as a whole.
There is no guarantee that the client's requirements are firm, especially for those in the industry who do not know anything about IT, and it is not surprising that some clients even request changes to the specifications in the middle of a project.
Therefore, it is precisely because of such a Japanese corporate culture that there are advantages to using agile development as the main method of development. Agile development allows for frequent communication with the client to ensure that the client's requests are not overlooked, and the more realistic the progress, the easier it is for the client to understand the progress, thus avoiding delays in delivery and problems.
Agile also includes various methods, such as test-driven development, in which testing is conducted during development so that no testing is required at the completion of development, rather than testing after small-scale development, and pair programming, in which two people, one to implement coding and the other to check the testing, work together to code. Because there are various methods, it can be said that it is easy to develop in a flexible manner.