Note: While this post discusses impediments in VSTS, everything mentioned can be applied to TFS as well.
Visual Studio Team Services (or VSTS) has great tools to support Scrum teams. The product owner can use the backlog and board to track the progress of individual teams or the entire product, at the Product Backlog Item (PBI) level, at the Feature level or even the Epic level, throughout the entire lifetime of the product. The developers can track the progress that they are making within the sprint, and see how their work (tasks) fit into the larger picture, by associating them with the PBIs that make up the product.
But what about the Scrum Masters? What tools do they have in VSTS to help them track their work and their progress?
What are Impediments?
According to Scrum.org’s official Scrum guide, one of the services that a Scrum Master provides to the development team, is the removal of impediments to the team’s progress. An impediment is anything that causes a developer to be unable to make progress towards completing the sprint’s goal. Whenever a developer has a problem that cannot be solved within the scope of the team, it is the Scrum Master’s responsibility to remove it.
Impediments in VSTS
Visual Studio Team Services has a work item type dedicated towards tracking impediments, and progress on their removal. For projects using the Scrum Template, this work item type is called an impediment. For projects using the Agile or CMMI templates, this is called an Issue. Regardless of template, they both serve the same purpose: They mention a problem, and their state machine tracks the progress.
Unfortunately, impediments and issues do not show up in VSTS’ backlogs or boards. Those are designed for tracking progress on the delivery of the product, and the Impediment work item type is not included. That said, how should a Scrum Master and the Scrum team track these impediments, especially in large distributed projects, where face-to-face communication and jotting a note on a pad is not a viable solution?
Step 1 – Gathering Impediments
The first step to being able to track impediments in VSTS is obviously to enter the impediments into VSTS. The best way to guarantee that impediments do, in fact, get logged in VSTS, is to make it quick and easy to do so. I suggest using widgets in the Work Dashboard. This should be located prominently in whichever dashboard all the Scrum team members view regularly.
The default dashboard in VSTS (named “Overview”) has a widget titled New Work Item. This widget has a text box for setting the title of the work item, and a drop-down list to select the work item type. You can rearrange the dashboard, if you wish, to make sure that the widget is conveniently located, but otherwise, all you have to do, is select the Impediment (or Issue) type, enter the title (e.g. “I need an MSDN Enterprise license”), and click on the Create button:
This will open a new work item form, where you can add a description, or any other detail that you might want, as you would with any other work item:
Finally, just click Save & Close, or press Ctrl+Enter to save and exit the work item.
Step 2 – Create a Query for Tracking Impediments
As a Scrum Master, I will want to keep track of all the impediments in the team. I will want to note new impediments that are not assigned to anyone for removal, and I will want to keep track of those assigned to me (if there is more than one Scrum Master in the project, which may occur in large projects).
In order to set up your impediments query, you will need to go to the Work | Queries submenu.
At this point you have two options. You can customize the existing Open Impediments (or Open Issues, in the other templates) query, which you will find in the Shared Queries section, under the Current Iteration folder, and customize it, or you can create a new query. If you choose to create a new one, just be sure to save it as a shared query, so that you may use it later with some widgets.
Regardless of whether you’re updating the existing query or creating a new one, make sure you set the following elements:
· Work Item Type should be equal to Impediment (or Issue if in an Agile or CMMI project). This is already set in the existing query
Alternatively, you may make the following variations on the query. You can save these as separate queries, or apply them to the one you are working on:
· You may optionally track only impediments that have not yet been resolved. To do so, you should set State to be equal to Open. This is already set in the Open Impediments query
· You may optionally set a filter to track only the impediments in the current iteration. To do this, set Iteration Path to be equal to @CurrentIteration. This is already set in the existing query, but you will want to modify the value from its current setting which defaults to ‘Your-Project\Sprint 1’
· You may optionally set a filter to track only unassigned impediments. To do so, set “Assigned To” to be empty (the operator should be set to ‘=’ and the value should be empty)
Step 3 – Visualizing Impediments in VSTS
Having a query that shows the list of open impediments is important, but the information must not only exist and be available, it also needs to be accessible. In Scrum parlance, we call this Information Radiation. In this step, we will make sure that this information is in the face of the Scrum Master.
Depending on how cluttered your Overview (the default) dashboard is, you may want to create a separate dashboard, just for the Scrum Master. Doing so is extremely easy. Just go to the Dashboards section of the project, and click on the + New button on the far right. Give the dashboard a name, e.g. ‘Scrum Master’, and then click on the OK button:
You will now have an empty dashboard that you may fill with widgets. We will use the space to add widgets that help us track impediments. The ‘Add Widget’ sidebar will open (you can also click on the edit button, and then the + button at the bottom right to open it. You may now add widgets.
There’s probably no end to the widgets you may add at this point, but I would like to point out the following, as I find them to be of most value:
This widget simply displays the total number of results for a query. Add this widget, and click on the wrench to configure it, as follows:
· Title: Call it ‘Open Impediments’ or something similar. The query name will be the default title
· Default background color: I suggest setting it to blue, or another color that denotes a calm or good state (blue is better than green for accessibility reasons)
· Conditional formatting: Click on the ‘+Add Rule’, and select the red color, with a condition of the number of items being greater than 0
This query simply displays the results of a query, as a list. Add this widget, and click on the wrench to configure it, as follows:
· Title: Open Impediments, for example
· Size: You can leave it at the default of 3x2, or whatever size you like, experiment with it
· Query: Choose the ‘Open Impediments’ query
· Display Columns: Choose the columns that you wish to display. I would make sure to have the Title, State, and ‘Assigned To’ columns.
Chart for Work Items
Visualizes the work items with a chart, such as a pie chart etc. You could use this to track impediments over time. This is especially useful with a query that is not filtered by state. You can create a pie chart for impediments, comparing the number of opened and closed impediments, and so on. Add this widget and click on the wrench to configure:
· Title: Open Impediments
· Size: 2x2 is the default, you may change it or leave it, as desired
· Query: Select the open impediments (or a new query for all impediments)
· Chart type: Pie, for example
· Group by: select something to group by, like State, or Iteration Path
· Aggregation: usually Count of Work Items
· Series: Select the color for each group (e.g. red for open, blue for closed)
If you’ve followed my examples, your dashboard may look something like this:
If you can set this up on a monitor that is always on display in a team’s room, this can be a very powerful tool for Scrum Masters.
What other queries and widgets would you suggest for the Scrum Master’s dashboard? Let me know in the comments’ section.