One of the hallmarks of Agile project management is maintaining a product backlog. A product backlog is an important artifact of any project - it's where requirements are stored and prioritized by both the project team and the client. Keeping a well-groomed backlog should be a continuous process throughout the project lifecycle. If maintained correctly, a product backlog can make Sprint planning a much more effective exercise.
I'm currently working on an Agile project and I've put together a few recommendations on effectively and easily managing a product backlog that I've learned along the way.
1. Schedule a regular Backlog "Grooming" Session
Ideally, this grooming session would take place weekly throughout the duration of the project. Make sure to schedule enough time for the session - two hours is generally enough, but up to four hours may be necessary for larger projects.
The goal of this session is to review items (either tasks or user stories) in the backlog and to adjust the priorities of the items. Top-ranked items can then be easily moved into sprints during sprint planning sessions.
2. Involve the entire team
The entire project team should be involved in maintaining the product backlog through weekly grooming sessions and individual tweaks throughout the week. It's important that the whole team agrees on the prioritization of the backlog as this activity will ultimately define development sprints.
3. Make sure to estimate
Another reason to involve the entire project team in product backlog grooming is to assign estimates to prioritized items in the backlog. This can take two forms - a rough hour estimate (for example: this task will probably take 6 hours), or via assigning story points. Story points roughly show the level of effort involved in a task, without assigning a period of time to it (for example: this task has a story point value of 1, but another has a story point value of 5, indicating that the tasks will take 5 times as long as the first task).
Story points are a good way to go if you will be presenting the backlog to the client for prioritization. This way, the client has a rough idea of the level of effort of a task before a task is broken down and assigned more specific estimates, which are likely to change from the high-level estimate.
4. Involve the client
It's important to involve the client in backlog grooming - especially as priorities change throughout the project. It's likely that the backlog will continue to change throughout the project as new User Stories are added and requirements are developed and fleshed out. Throughout the week, collect new client requests and requirements in the form of User Stories and add them to the backlog. Set up a weekly meeting with the client to review and re-organize priorities.