Iteration planning plays an important role in agile software development. Iteration, in the context of an agile project, is a time-box during which development takes place, the duration of which may vary from project to project and in most cases is usually of fixed length. Iterations are also called as sprints in agile methodology. As they are usually of fixed length and are not flexible. Therefore, once the iteration period is finished, it will end regardless of the tasks assigned in that iteration was done or not. The leftover tasks are either assigned in the next iteration or reprioritized among the remaining tasks.
In agile, iteration period should not be too long. It usually should not be exceeded by 30 days. The length of iteration is based on the collaboration of the teams with customers, how they required working together. As the duration of iteration is very small as compared to the whole project completion duration, the team can finish iteration planning in few hours and then can start working on decomposing the tasks fairly accurately.
During iteration planning, the requirements included as backlogs with the intent being that all the chosen requirements will be satisfy after the completion of an iteration. The team then starts working together to breakdown the requirements in to tasks. And at the end, the team delivers the small part of the software to the customers and waits for their review and feedback.
Now, talking about iteration planning, if there is a great deal of uncertainty about work to be done (if the requirement in the project changes frequently), short duration iterations are always preferable. On the other hand, in long duration iterations (let’s say 4 weeks), teams often has to investigate and pursue more creative solution, having a high risk of slippage and error. However, scheduling small iteration can also cause a problem of struggling to produce something valuable at the end of iteration.
Two week iteration is mostly preferable in common agile practice. Therefore, two week iteration will be a good practice if you are new to agile development practices. And finally, an important tip, if you have chosen an iteration length then it is better to stick with it. Avoid bouncing to different length for no good reason.