Use Fields and Groups to Create an Agile Schedule with MS Project
I have read many comments that MS Project cannot be used for Agile projects. While I agree that Project is not the best tool for Agile, I disagree with those who say that it cannot be used at all. Customizable fields and groups are a powerful feature of Project that allow it to be used effectively for a wide range of projects. Here we will show how to use some of those features to create a schedule for tracking Agile projects. An organization with a broad range of projects that needs MS Project for the large complex projects can also use it for those projects that might be more effectively developed with an Agile or a hybrid strategy.
Custom fields allow you to add project-specific information. This information can be used to filter or group tasks to focus in on specific data or just to provide different perspectives on the vast amount of data that Project maintains. I use text fields most often and use the lookup-table feature to assure uniformity.
What Goes Into an Agile Schedule?
So what project-specific data must be added to create an Agile schedule? An Agile project starts with a backlog, which is a list of features to be implemented, and a number of iterations, or sprints, to implement those features. These are the tasks in the schedule. In addition, each feature will have a priority and a size estimate in story points and will be mapped to an iteration, or sprint. Each feature and sprint will also require a status-e.g., not started, in progress, or done.
This Agile-specific information is maintained in custom fields. Unfortunately, Priority is already a field in Project, so we will have to choose another name, and User Need is a good descriptive alternative. Similarly, Status is a field in Project, so this will be changed to State. Thus we have four custom fields to implement:
User Need Text Field
Lookup Table: Low, Medium, or High
Story Points Number Field (Estimate of Story Points)
Set Calculation for task and group summary rows to Rollup: Sum
Sprint Text Field:
Lookup Table: Backlog and Sprint 1 through Sprint n
State Text Field:
Lookup Table: Not Started, In Progress, or Done
User Need, Sprint, and State use lookup tables. In addition, since features start out in the backlog before they are mapped to a sprint, the lookup table for Sprint will set Backlog as the default. Story Points is a numerical field. Since it is important to track totals, the summary task for this field will be set to Rollup: Sum.
Setting up the Custom Fields . . .
Below are some screen shots for setting up these custom fields. The custom fields dialog shows the three text fields. Sprint (Text3) is highlighted and you can see under Custom attributes that Lookup. . . is selected. Also note that below Custom attributes is Calculation for task and group summary rows. While the Text fields allow only None, the Number fields allow a Rollup, and in that dropdown menu there are many choices such as Sum, Max, Min, Average, etc. In the number field for Story Points, I chose Sum, and we will see how this is useful when we set up groups.
Below is the lookup table for Sprint, and you can see that Backlog is highlighted and there is a check in the box to Use a value from the table as the default entry for the field. Whenever a new feature or sprint is added to the schedule, it will be in Backlog. The sprint task should be changed right away to the appropriate number and a feature should be changed from Backlog to the appropriate sprint number when it is mapped to a sprint.
. . . and the Groups
With the fields defined, two Groups are needed to give the required displays:
Sprint Group by Sprint.
Lists all features in each Sprint; story point totals roll up for each sprint.
Features not assigned to a sprint will be grouped under Backlog.
This grouping can be used along with auto-filtering to select the highest need first.
Burndown Group by State, then by Sprint.
Provides story point summary by categories Done, In Progress, and Not Started.
Story point totals roll up.
Below is the Group Definition dialog for Burndown. You can see that it is grouped first by State and then by Sprint, two of the custom fields. Also note that the name is preceded by an underscore and that Show in menu is checked. I do this for my custom groups because the underscore puts them at the top of the list and they will all be together at the top of the Group dropdown menu.
Add the Specific Sprints and Features
The Agile schedule requires two summary tasks: Sprints and Features. Under Sprints enter the expected number of sprints, including the name and duration of the sprint, and link them in order so that when one is done the next begins. Then list the features under Features. Make each of these a milestone. The features will all be in Backlog. To assign a feature to a specific sprint, select the sprint number in the Sprint dropdown. Also, when you assign a feature to a sprint, set a finish-to-finish predecessor to that sprint so the expected finish date of each feature is known.
Following is an example of a schedule with four sprints and a dozen features. Each sprint has three weeks (15 days) and all of the custom fields are visible and have been filled in.
Now, applying the Sprint group, the information is sorted according to sprint and you can see the start and finish of each sprint as well as the total number of story points assigned to each sprint.
Applying the Burndown group, you can clearly see what is done, what is in progress and what is not started. You can also see the total number of story points for each of these states. Sprints 1 and 2 are done, with a total of 45 story points.
When tracking the project, if one or more features is not completed in a specific sprint, it is easy to just update the sprint number and the predecessor to move those features to another sprint. Also, if you just want to see summary data, it is easy to close up the Sprint group.
Custom fields are a powerful feature of Microsoft Project, and when used with custom groups, filters, and views, they allow you to create schedules that are more than just schedules, to focus on what you think is most important at the current moment, and to change your focus easily and rapidly. This makes creating, tracking, and managing your schedules a lot easier.