
If
I had to describe an Agile process in as few words as possible I think I
would
choose business first, iterative planning,
honest plans,
a project heartbeat, working
software,
team empowerment, and daily communication.

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.

Agile
projects keep a set of unfinished features as a simple spreadsheet,
list, or stack
of cards that are a backlog of product features. You want to prune or
groom
this list on a regular basis by removing and destroying things your
customer
or product owner doesn't need anymore. Only keep features you would
consider paying good
money for, the rest go into the trash can or shredder.

From
the list of unfinished features you will choose the most important.
Important means different things to different teams. You can choose the
highest return on investment (ROI). You can choose the architecturally
significant features first. Risk is a very important way to sort. You
can choose the
features in groups that
make good business sense. Most projects settle on a combination. The
one constraint is that the customers guided by
estimates
of effort from
developers choose what is
most important next.

This
collection of most important features is the input to the planning
process. Features are represented in a
minimal way that allows rough estimates of effort, but not detail. You
will probably only implement a fraction of the features, so spending
time on details is a waste until they are actually
part of an iteration or sprint plan. Many Agile teams use a quick way
to scope projects called
story cards.

Stories
are the currency of your project. Like money they don't have much
value themselves, just a piece of paper, but they represent
value and
can be used to buy things.