Iterative development is a key practice in agile development. In iterative development the design, coding and testing are done almost at the same time and are repeated in a short cycles, often called iteration or sprint. Iterative approach helps the team to experiment and focus on learning and flexibility for changes instead of Big Design Up Front.
Instead of waiting and creating a full specification the teams start to design and develop the features just needed right now. This iterations is repeated and after every phase a new version is delivered. This helps the team to create value and plan for unexpected events. To make this work the team need to find the smallest part that have value and start to iterate around it and deliver new versions of the software after every iteration.
It is hard to start working like this but when done right the teams will be able to handle the complexity and demands from stakeholders much better the without this practice. Iteration doesn’t mean that there is no planning or design upfront. There is, but it´s involve the team and other stakeholders and the design, code, test cycle is repeated instead of closed gates between steps in the process.
Mindset to help the teams be iterative.
- Cycles are time-boxed and not boxed around functionality
- Test early and often
- Deliver early and often
- Start development and design at the same time
- Learn from past iterations
- Plan for the unexpected and embrace changes.
Iterative development is closely attached to incremental development where iterative can or should be a part of incremental development.