To introduce you to Agile, this article will focus on a methodology
similar to what I am familiar with. This is based on a training course from
Robert Martin, author of among other titles Agile
Principles, Patterns, and Practices in C#.
This article assumes that the reader is familiar with Agile
concepts. We will go over some of the precepts of Agile development, but the
reader will need to look into other articles, books, etc. for a real
introduction on agile software development.
There are many reasons for utilizing agile methods for your
software development. In our case, we needed to produce better quality software
and communicate better with our customers. The Agile Manifesto has 12 principles.
"Satisfying the customer through early and continuous delivery of valuable
software" is the first one and "Welcome changing requirements, even
late in development" is the second. These 2 principles address issues
important to my current workplace.
This article assumes a project that utilizes user stories
as part of the requirements documentation. So a project has a collection of user
stories which define the features for that project. The development team
assigns each story a point value by voting how many points each story will take.
This point system is totally arbitrary. After a few iterations the team will
decide what points equal easy, medium hard, etc.
Each iteration starts with a planning meeting where customers
select stories. Customers are constrained by the number of points the team
believes can be done within that iteration. Once stories are selected, there
should be some form of Customer acceptance tests created by the Customers,
which the team will code to. Since one principle of agile is "Welcoming
changing requirements, even late in development," new user stories can be
added at any time to the backlog of user stories.
This particular version of an agile practice is very close
to XP in tracking and selecting the teams focus. For true XP, things like pair
programming would figure in as well. I also recommend having as much of the
team as possible in a "war room." Having the team working together
in one room, without cubicles, during the project really improves productivity.
There are studies that prove this.
So for this type of agile project, we are tracking user
stories, and point totals for the current iteration.