9 Lenses   |   Emergent Patterns   |   Design Ideas and Options   |   Adaptive Experimentation   |   Adaptive Iteration
Example

Agile software development

Toolkit-IterateThe ‘agile’ approach to software development is a form of Adaptive Iteration. The agile approach relies on rapid iteration to develop what is effectively a constantly expanding prototype of the software. The agile approach recognizes that, in many cases, it is very difficult to fully and clearly specify client/user requirements at the start of the development project. Often, clients/users do not full appreciate the nature and scope of their needs and expectations until they see and experience working versions of the software. This is especially the case if the software is for a novel or innovative application or the software supports business processes that are complicated and have a high level of current or potential integration. The iterative development and testing of increasingly comprehensive working versions of the software enables the client/user to review the software, provide feedback and adjust their expectations throughout the development process. Effectively, representatives of the client/user become an intimate part of the overall development process.

The iterative and adaptive nature of agile software development is clear from the following two extracts from the Overview section of the Agile Software Development entry in Wikipedia:

Iterative, incremental and evolutionary
Agile methods break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames (timeboxes) that typically last from one to four weeks. Each iteration involves a cross-functional team working in all functions: planning,requirements analysis, design, coding, unit testing, and acceptance testing. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations might be required to release a product or new features.
Very short feedback loop and adaptation cycle
A common characteristic of agile development are daily status meetings or “stand-ups”, e.g. Daily Scrum (Meeting). In a brief session, team members report to each other what they did the previous day, what they intend to do today, and what their roadblocks are.