Using TFS 2012 and SCRUM for Iteration Capacity Planning for Software Development

Posted by: Subodh Sohoni , on 8/9/2012, in Category Visual Studio, VSTS & TFS
Views: 89684
Abstract: In this article, I will explain how the sprint planning is done by the SCRUM Team using Team Foundation Server 2012 a.k.a TFS 2012. I will also show you how to consider capacity of the team while planning the sprint backlog.

It is a common misunderstanding that there is no plan and planned work if you are implementing Agile methodologies like SCRUM. Contrary to that belief, these Agile methodologies too have plans but they are usually short term plans to the length of iteration and they are flexible. These plans are influenced by Product Owner and Scrum Master but the plan for the Sprint has to be evolved in the Scrum Meetings by the Scrum Team Members only. Team Foundation Server 2012 has a built in process template for SCRUM which supports this sprint planning. The features of TFS 2012 that support sprint planning, do allow the team to consider product backlog, priorities and capacity of the team, for the length of sprint.

 

Note: In a follow up article, I have explained how to Use TFS 2012 and SCRUM to Run the Sprint

Sprint planning usually begins by the time the earlier sprint run is nearing the finish line. Product owner should indicate the priorities for the Product Backlog Items (PBIs) so that the team can consider those as a part of the planning process. Team also considers the PBIs that were part of the earlier sprint and were pushed in the next sprint. This can happen because either those items were beyond the capacity of the team, or were having some related impediment or were just not completed in the earlier sprint.

 

As the first activity of the sprint planning, the team will set the dates for the next sprint. In the case of TFS 2012, that can be done through the Web Access interface. If you are beginning from Team Explorer, then on the home page of the team project, you can select the link to settings

tfs-scrum-1

In the settings, select the link for ‘Work Item Iterations’

tfs-scrum-2

Then you may either set dates or change them for Sprint 2 to suit your sprint length. You may set dates for any sprints in the release.

tfs-scrum-3

Now the team will set the capacity of various team members for this week. Each team member may work on multiple projects and hence may devote different amount of time for each of them. You can open the current sprint on the Work – Backlog page of the Web Access. Assign each team member the hours capacity per day as shown below. You may as well set the off days or leaves for each team member from the same page.

tfs-scrum-4

We can now add PBIs in the product backlog. It can be done using MS Excel, MS Project, Team Explorer or directly in the Web Access. I will show you how to do it using MS Excel, but using other interfaces is also equally easy.

In MS Excel, select Team top menu item and then in the ribbon, select New List.

tfs-scrum-5

When the prompt for team project is shown, select your team project from the list and click Connect.

tfs-scrum-6

We will now create a new input list by selecting the radio button for that option

tfs-scrum-7

We can now see the basic structure of data that is needed to be entered for work items.

tfs-scrum-8

Let us first add two PBIs and set their default column values as shown.

tfs-scrum-9

Then add columns that are needed for PBI work item. To do that, click on Choose Columns button and select the required columns for Product Backlog Item work item type.

tfs-scrum-10

Now we can add the values for Area Path and Iteration Path for those two PBIs as shown here.

tfs-scrum-11

Click on the Publish button in the Work Items section of the Team ribbon so that those PBIs and their data is added to the TFS and IDs provided by TFS can be seen here.

tfs-scrum-12

Once the PBIs are added to the sprint, the team will add the tasks to implement those PBIs. Again the tasks can be added using any of the interfaces that are mentioned above.

In Web Access, right click on the PBI for which you need to add the task. Select Add: Task from the context menu. (In the example, some tasks are shown as already existing but it can also be the first task for the PBI)

tfs-scrum-13

Add the details of the task and then Save and Close the task. Relationship with the PBI will be automatically set as well as the capacity planning charts will get updated.

tfs-scrum-14

In the initial scrum meeting, team will add all the necessary tasks to be performed in the sprint to complete the PBIs. Each of those tasks have some efforts that are estimated by the team. They are automatically rolled up by TFS for the entire PBI for which those tasks are children. TFS also rolls up the total efforts required for implementing all the PBIs of the sprint. This total may work out to be more than the capacity of the team and that is where the sprint and member load balancing will be needed to be done.

Now we will balance the load so that it does not exceed the capacity of the team and team members. We will do that from Web Access.

tfs-scrum-15

You can see in the web access home page that the total load exceeds the team capacity that we had set.

tfs-scrum-16

When we go to WORK – backlog – Current – Sprint 2 we can see the contents of the Sprint, that is the Work Items (PBIs and Related Tasks), Work against Capacity for team, for activities and for individual team members.

tfs-scrum-17

There are number of team members also for whom the load exceeds the capacity. We will go ahead and move the PBI ‘HR Person Edits the Employee Profile’ back to Product Backlog so that the load will reduce and will be within the capacity of the team. To do that right click on the PBI and select Move to iteration – Backlog

tfs-scrum-18

Now you can see that the situation has somewhat improved. Total team can do the work in stipulated sprint time but some of the team members are overloaded and some are under loaded.

tfs-scrum-19

Select the task that is assigned to the overloaded team member and reassign it to another team member who is under loaded.

tfs-scrum-20

tfs-scrum-21

Now we have one more team member who is overloaded but we cannot assign his task to some other member (Arun as shown in this example). This is either because that task is needed to be done by that team member only or because it cannot be split in multiple smaller tasks.

tfs-scrum-22

Now we move to capacity tab of Sprint 2 and adjust the available hours of Arun so that he can complete the work in time. This will be done by SCRUM Master and Arun in consultation.

tfs-scrum-23

We can also see that Minal is under-loaded. We can reduce her available hours so that those can be given to some other project.

tfs-scrum-24

This completes the sprint planning and load balancing activity of that plan.

Summary: In this article, we have seen that there is planning required to be done for sprints in the SCRUM methodology. Microsoft Team Foundation Server provides tools to do that planning efficiently. We have also seen how the load during the sprint can be adjusted and balanced for the team as well as for individual team members.

In the next article, I have explained how to Use TFS 2012 and SCRUM to Run the Sprint

Give a +1 to this article if you think it was well written. Thanks!
Recommended Articles
Subodh Sohoni, Team System MVP, is an MCTS – Microsoft Team Foundation Server – Configuration and Development and also is a Microsoft Certified Trainer(MCT) since 2004. Subodh has his own company and conducts a lot of corporate trainings. He is an M.Tech. in Aircraft Production from IIT Madras. He has over 20 years of experience working in sectors like Production, Marketing, Software development and now Software Training. Follow him on twitter @subodhsohoni


Page copy protected against web site content infringement by Copyscape


User Feedback
Comment posted by Scott Oliver on Monday, August 13, 2012 8:51 PM
Thanks Subodh for this interesting piece. I specifically liked the way TFS helps you in situations where you are over-committing yourselves during the sprint planning and helps identify capacities
Comment posted by Sebastian on Monday, August 13, 2012 10:13 PM
To identify capacity, how will I identify Scrum ceremonies, Training days, vacations, statutory holidays and Recurring meetings using TFS?
Comment posted by Subodh Sohoni on Wednesday, August 15, 2012 1:53 AM
When we enter capacity per day of a user the same UI also allows us to enter Days Off for a member. Reason for Day Off may be anything as you have mentioned (training, vacation, statutory holidays etc.)
Comment posted by Satya on Thursday, January 16, 2014 4:23 AM
Very nice article. one question how do we assign a task to more than one developer using TFS.
Comment posted by Danish on Wednesday, January 22, 2014 1:47 AM
Very well written and very informative. However, some of screen shots are shown, it says file not found. Please rectify this issue. Thanks.
Comment posted by Danish on Wednesday, January 22, 2014 3:45 AM
Very well written and very informative. However, some of screen shots are shown, it says file not found. Please rectify this issue. Thanks.
Comment posted by Danish on Wednesday, January 22, 2014 5:04 AM
Very well written and very informative. However, some of screen shots are shown, it says file not found. Please rectify this issue. Thanks.
Comment posted by Vernon Carter on Friday, June 20, 2014 2:46 PM
So we just upgraded to VS 1013 and it seems not to support pair programming. We would like to have multiple people assigned to one task but the software does not allow, as you probably already know. From what I read above is your solution to just split larger tasks (Like a automation tasks for a already split PBI) into smaller chunks of Automation? Or do you have alternate solutions to this?
Comment posted by Vernon Carter on Friday, June 20, 2014 3:04 PM
So we just upgraded to VS 1013 and it seems not to support pair programming. We would like to have multiple people assigned to one task but the software does not allow, as you probably already know. From what I read above is your solution to just split larger tasks (Like a automation tasks for a already split PBI) into smaller chunks of Automation? Or do you have alternate solutions to this?
Comment posted by Mayur on Tuesday, July 22, 2014 5:04 AM
Can we have report downloading capacity st for each sprint?
or show capacity chart showing capacity set for each sprint.
Comment posted by Subodh Sohoni on Wednesday, August 27, 2014 5:19 AM
Hi Vernon,
First of all my apologies for so much delay in reply.
Yes the only way is to split the tasks further with distinct responsibility to each developer so that they can do separate but related tasks. TFS does not and will not allow assigning multiple values to "System.AssignedTo" field.
Comment posted by Subodh Sohoni on Wednesday, August 27, 2014 5:21 AM
Hi Mayur,
I am sorry for the delay in reply.
There is no report present for the capacity of team and team members. It is just a facility provided for planning the sprint.
Comment posted by Alan on Friday, September 5, 2014 12:29 PM
Sobodh,

Very nice article. However, images tfs-scrum-10.png through tfs-scrum-19.png are broken. Everybody loves screen shots. Can you fix these? :)

Post your comment
Name:  
E-mail: (Will not be displayed)
Comment:
Insert Cancel