What is iterative software development? What is the difference between iterations and long-term work? What are the difficulties of the process? Today we are disclosing the main principles of this modern trend – iterative software development.
What is iterative software development?
There are two approaches to the software development models: waterfall and iterations. The Waterfall model undertakes spending some time for design and documentation. After that you spend 6-12 months for the development itself before shipping. The iterative model is something opposite.
The essence of iterative model is a development through small but complete iterations instead of one-time end-to-end development. At the beginning you divide your objective into blocks (iterations). Finishing every block, the team gets a small but ready-to-use functionality. You can test it with users and customers, and receive an essential feedback for adjusting further development plan.
First, iterative development model allows you keeping up with the global trends. With the waterfall model, there is a risk to be out of the date just after completing your service or mobile application. For example, Apple may release new iOS version or Facebook may change its API and this can affect your product that’s being built for almost a year.
Second, any software is a system. And you can’t build a complex system just from scratch; it always arises as an evolution from a simpler system. That’s why you always need some kind of basis to build something advanced. And the iterative model allows you making a simple base and move to the complex version of a product iteratively. At each iteration, you can evaluate the intermediate results immediately with a short feedback cycle from your userbase.
Finally, an iterative model provides the entire team with a strong motivation. It is much better for the team to see the result of the work as early as possible. When one works for a year with a weak understanding of what they are doing, the motivation goes down. But when you regularly see everything you have done in action and understand how it affects the overall result — that really inspires.
Cons and pitfalls
Iterative development is not as easy as it sounds. Initially, it can be difficult to break into parts a beautiful picture of the product from your head. You have to understand what you needed first of all from and what can be developed later. Usually it is a task of the product manager or CEO. The person to handle the decomposition process should is the one with the vision of the product.
In addition, organizing stepwise work of a whole product team – developers, designers, testers –can be challenging. The main idea is moving to iterations everywhere, at all product development stages. Design, development, testing – everything should have own iterations. For example, at the first week, designers are making a wireframes and design of a new feature, at the second week, developers are implementing this new feature, at the third week, testers are checking it to roll the product out. Meanwhile at the second week, the designers are making a new piece, at the third week, the developers are implementing it and so on.
Not every software can be developed iteratively. Thus iterative approach assumes that a developer can release an MVP product, and someone can start using it to provide the feedback. If it is unacceptable (for example, in the banking sector) then it makes sense using the classic waterfall model.
How to implement iterative approach
You need to implement iterative model globally, for the whole development team. Design, testing, and development should move iteratively and in sync to get a result.
You have to make sure that all team members understand this and they are ready to work in this mode.
The product manager and the development leader should determine the certain iterations for the product development. The development leader involvement allows correlating the product plans with the capacity of the development team.
Iterations imply frequent delivery of new product versions to the end user, so it is worth investing in the delivery pipeline in order to automate some of the tasks (auto tests, update of the codebase on the test server, etc.) Automation will allow getting rid of some repetitive tasks associated with every new version release.