I
prefer to say iterative planning instead of
iterative
development because it places the emphasis where it belongs: You must
adapt as the project unfolds by changing your plans. You can plan out
an entire project into detailed iterations in advance, but that isn't
Agile. You
change plans based on feedback from incremental delivery of working
software. The
customer/product owner is part of
your team
so let them guide your project not
just at the start but day by day. Show them the system as it
is being built so they can learn more about the solution and then
listen to them.
Some
Agile projects don't even have iteration ends. They remain Agile by
balancing the need for stable requirements with the need to change
requirements while launching working software on a regular and frequent
basis. Iterations are just an easy way to demarcate when changes are
accepted, when a new plan is created, and when working software is
released to customers. Shorter iterations give more opportunities to
plan.
There
are three Agile levels of planning.
Release planning is a group of
stories selected because they represent a usable set of features that
can be released together. These types of plans are made by selecting
the stories and deciding how many iterations are needed or by selecting
a release date and seeing how much can be done by then. Release plans
have no details other than a list of stories to be done by a date.
The
second level of planning is the
iteration or sprint plan. This
plan is
a subset of the release plan stories that will be done in the very next
iteration or sprint. Only one iteration plan exists at a
time. With our
chosen collection of important features we can now estimate the