The base construct of agile and iterative development is the iteration - the ability of the team to create working, tested, value-delivered code in a short time box - with the goal producing an increment of potentially shippable code at the end of each iteration. This is a significant challenge for the team, and mastering the process takes some time to accomplish. In this chapter, we describe the basic iteration pattern and the activities that a team engages in to meet this key challenge.
Before we begin, however, we must first entertain another small debate: What is the optimal length of an iteration? Most people agree that iterations are a fixed, constant length and typically should not vary in length over the course of a release or a project. But the length of the iteration is an agile variable. From the literature, XP recommends a length of 1 to 4 weeks, Scrum recommends 30 day sprints, and RUP recommends flexibility of 2 to 6 weeks.
In practice, however, all but a very few teams we have worked with have come to the same conclusion over time: a week may be too short and 30 days is too long. The conclusion they typically arrive at is to standardize on iterations of 2 weeks in length, and this is our general recommendation.