Agile project management is a high-paced software development methodology for planning software releases. Agile software development depends on small, fast product development lifecycles that produce software with full features every one to four weeks. The software is delivered to and tested by a customer team. Sometimes, the customer is an internal team consisting of project managers and other employees; otherwise, it is the actual customer.
Assemble a customer team. The customer team ensures the product will meet the needs of the product users. Members often include project managers, usability designers and technical writers. Ideally, they also involve an actual user from a customer site.
Develop user stories around desired product features. A user story, according to Mike Cohn, “describes functionality that will be valuable to either a user or a purchaser of software.” Stories should define what the user will accomplish with the software. They should not contain programming or architectural details, and ideally should not be interdependent. Dependencies complicate the job of estimating time as well as completing each story. Programmers should be able to complete a user story in approximately five days, including development and unit testing.
Write acceptance tests for the customer team to execute to confirm the functionality of each feature. Acceptance tests should come from a series of conversations between development and customer teams. The goal there is to flesh out as many details in the acceptance tests as possible.
Decide iteration lengths between the customer team and the development team. Typically, these are between one to four weeks. Use the same iteration length for all iterations.
Have the development team estimate how much work it can complete in each iteration based on the user stories. This is known as velocity. Expect a revision in this estimate, as it is difficult for development teams to determine velocity in advance.
Organize stories by priority and decide which user stories will be completed in each iteration. Some aspects to consider when you prioritize might include the interest or desire of a broad base of users or customers, the interest or desire of a single or small number of important customers and the impact a story would have on others if not completed early, as well as the development team's take on the order in which stories are completed. In case of disagreement between the development team and the customer team, the customer team wins.
Break acceptance tests into many smaller, functional and technical tests at the beginning of each iteration. This is typically the responsibility of a product manager and a leader on the testing team. This team should come up with as many tests as possible to ensure adequate coverage.
Break stories into individual tasks assigned to developers at the beginning of each iteration. This is typically the responsibility of a development manager and members of the development team. Just-in-time design—an off-the-cuff, need-generated process—is created as each story is broken into tasks.
Complete product development and acceptance testing, with testing immediately following development. Have the development manager hold a daily "scrum" meeting to ensure accountability of all team members. Acceptance tests should be run against the previously determined acceptance criteria, not against what a developer decides.
At the end of the iteration, roll those stories that have not been completed into the next iteration. This process should be repeated until you have run out of time for the project or you are ready to create a new release of the product.