Stories represent business value. If you accomplish them, it will help the business. Tasks, on the other hand, are a means to track what must be done to accomplish those stories. They can be really helpful in communicating what work remains and coordinating on who does it.
Tasks are often defined in iteration planning to give teams a better feel for what work will need to be done to accomplish the stories targeted for the iteration. This also enables the use of burndown charts to track progress. But unlike stories, which shouldn't be added or removed in the iteration, tasks come and go as you learn more about what needs to be done. In other words, your goals for the iteration don't change, but your understanding of what needs to be done to accomplish them might.
Tasks should generally be in the one hour to one day size. Smaller than that and they become too difficult to manage. Bigger than that and they span multiple days. When they do, your goals become fuzzier in your daily stand up: "I'll make progress on this" rather than "I'll get this done". Tasks can linger as a result. And the team has a fuzzier picture of what remains.
Here are some recommendations on how to best manage tasks:
- Don't assign tasks until people have started working on them. See this blog entry for more on this.
- Try to minimize dependencies when breaking things down. This enable others to work on the story.
- When you free up, take on the highest priority task that you can. This ensures that the focus is on the highest priority stories and that if the team falls short, it will be the lowest priority stories that don't make it. It also helps to ensure that the team doesn't end up with lots of partially done stories. If you can't help with the highest priority open task, consider using this as an opportunity to cross-train.
- Keep the task list up to date. This helps to ensure that you don't end up with two people working on the same task. When you identify new things that must be done, add them to the central list. Don't keep a hidden list of to do items. This enables others to help with the new tasks. If the task list is up to date, it clearly communicates what is standing in the team's way of accomplishing the goals for the iteration.
- Limit the number of tasks you take on at once. In other words, limit your work in progress. Multi-tasking is less efficient. There are significant costs in switching context. Plus you're taking away the ability for others to help. If tasks become blocked, force their resolution rather than letting them accumulate.
- Try not to keep tasks in progress over night. This will avoid coming back up to speed on where you are in the morning. It also ensures that if you're out sick, etc., that the rest of the team isn't blocked by what you have in progress.
- Include enough context in the tasks that others could take them on. This enables other team members to help.
Tasks can be tracked on a task board in the team room or in your agile project management tool (see below for an example from Planigle). If you use both, you'll probably want to use the task board as the primary for tasks and use the tool for story level progress. This helps to reduce the overhead / possible confusion of dual maintenance. But it also reduces your leverage of the tool (for burndown, etc.) and makes it harder when people are working from home / out of office.
In the above, how could the tasks have been restructured so that more people can work on them?