The iterative-incremental approach to software development is the best method for the life cycle of projects with a high degree of uncertainty. Such as ours.
We came to this conclusion after "experiments" with various methods. For example, using the iterative lifecycle in one of our projects, we made short iterations of the development architecture and software algorithm in the early stages of development. Despite frequent releases and reports to the customer, it was precisely the insufficiently detailed elaboration of the architecture and analysis that became a mistake. Just one architectural programming error could violate the entire logic of the system.
Reducing the level of uncertainty and, as a result, reducing risks for the product - these are the goals for us and our customer are priority. In our case, the iterative-incremental method solved these problems.
Finding a compromise with the customer and communicating the need to increase the deadlines at the first stage was a decisive moment for our project. Putting more time into architecture and writing software algorithms is not a fiasco. This was the only way to avoid serious architectural mistakes during the iterative-incremental development approach.
A particularly important point with this method is transparency between our team and the customer. Regular releases, where we show real progress, are fundamental to ensuring an efficient process and monitoring development progress.
We will describe more technical details and concrete conclusions in the next part of the stories about the project life cycles.