Iterative development is an approach to software development which centers around the idea of moving development cyclically, rather than trying to do everything all at once. This method is not suitable for all types of software but it can be highly beneficial and very useful in some settings. It is important to note that a common misconception about iterative development is that it is unplanned or spontaneous. This is not, in fact, the case. It is actually highly structured.
In iterative development, people start with the planning stages of a project, moving through these stages into development and release of the product. As the product is released, results come in from product testing and users, and these results are folded into the next release. “Release” can be a misleading term; iterative development may involve in-house release of a product in the early stages, not release of the product to the public.
Developers who use this technique assume, accept, and in fact expect that the products they develop will not be finished with one round. Rather than trying to foresee all potential problems and user needs, they move through a series of iterations to gradually refine and improve the product so that it will be useful. One major advantage of iterative development is that it allows people to respond quickly to problems and changing needs because rebuilds, rollbacks, and refinements are structured right into the development process.
This approach to development usually involves close cooperation between team members who may come from diverse departments within a company. By getting everyone involved at the ground level, companies can cut development costs, encourage innovation, and develop products which integrate multiple perspectives from the start. Iterative development also requires a great deal of research and analysis as people respond to market pressures, stated needs from consumers and clients, and internal feedback on the product under development.
This process is dynamic and it can be very rapid. Some companies may have cycles as short as one week. At the start of each cycle, developers meet to identify the changes they wish to implement and they focus on these changes; as other issues emerge, they can be added to later development cycles. This encourages focus and helps companies meet expectations more easily; as products in iterative development start to be rolled out to the public, users who are testing the products can follow planned changes and can report problems and be assured that there is a set time frame in which these things will be addressed.