Support for Team Foundation Server Scrum v1.0 Beta
In the past, we've made claims that Urban Turtle supports virtually any process template. Therefore it came as a surprise to some people when our team said that building support for the new TFS Scrum template from Microsoft would take almost an entire two-week sprint. I'd like to take some time to tell you what we think means to be template-independent and how it differs from building true support for a process template.
Supporting MSF Agile 5.0
Urban Turtle 3.0 shipped with built-in support for MSF Agile 5.0 out of the box. We obviously assume most people using Urban Turtle have chosen this template because of this build in support. This template made it a challenge for us to implement a three-column task board because work items only have one Active state. Items are either active or they're resolved or closed. Back then, we decided to use the AssignedTo field to determine where the work item should appear when it is active. An unassigned and active task should show up in the To Do column while an assigned and still active task would appear in the In Progress column. It made sense to us as we're Scrum practitioners and we believe tasks should be unassigned until someone actually starts working on them.
While implementing support for MSF Agile 5.0, we made sure to externalize everything that seemed template-specific, like the state mapping for the task board columns or the stack rank (backlog priority) field. We then claimed to be template-independent, but some assumptions would later turn out to be wrong.
False Assumptions
When Microsoft announced the beta release of their TFS Scrum 1.0 process template, we figured we could quickly create a new mapping file to add support for it. We began analyzing the new template and we realized we couldn't do it without touching the code base. Honestly, it would have been as easy as we thought but the decision by the Microsoft team, to stay true to the Scrum terminology, turned out to be a blocker for us.
When working on the initial release of Urban Turtle 3.0, we made the assumption that system fields such as Id, State and AssignedTo would not be configurable. That was a mistake. Microsoft decided not to use the AssignedTo field used to determine who's working on a task and opt to go with a field named OwnedBy. The vocabulary makes tons of sense but the change made it impossible to use Urban Turtle as it was with the new template.
When basic is not enough
This change was all that was required to build basic support for TFS Scrum with a new mapping file. We could easily define what fields should show up where, what states should appear in the task board columns, etc. We built this basic support within a single day, including refactoring the application code to support configuration for the AssignedTo field. However, we found such basic support to be somewhat lacking.
We started testing the application with the new template and we quickly realized that the state mappings pretty much made the task board impossible to use with Product Backlog Items and Bugs. These two types have the following states: New, Approved, Committed, Done and Removed. We ignored the latter and configured the first three to show up in both the To Do and In Progress columns and mapped the Done state to the Done column. However, the transitions configured between the three active states made us realize that only the Committed state actually made sense in the task board.
We thought that choosing to hide new and approved work items from the task board would cause confusion when users would look at their task board and search for missing items. That's when we decided to implement two new features to facilitate the state transitions.
New Feature: Approval
Product Owners can now approve PBIs with a single click when looking at their backlog in the Planning Board. This feature can be configured as a state transition in the mapping file and could be used with other process templates. In the case of the TFS Scrum template, we've mapped the New -> Approved transitions for PBIs and Bugs to the Approval feature.
New Feature: Commitment
Approved work items still don't show up in the task board. The task board is used to track work being done during a sprint. The team should never be working on something they haven't committed to yet. It makes perfect sense with regards to Scrum. We could have implemented this feature the same way we did with the Approval, but while a Product Owner usually approves items one by one, a team commits to a set of PBIs. For that reason, we decided to make this a batch process. We therefore made it possible to commit to PBIs contained in a sprint with a single click, again from the Planning Board. This feature can be customized by defining the state transition that should be triggered when this feature is used.
New Feature: Sprint Details
The last thing we wanted to add to our initial support of TFS Scrum was a way to manage the new Sprint work item type. This type was defined as a way to work around limitations in TFS regarding Iteration nodes metadata. It defines begin and end dates for the sprint, as well as sprint goal and retrospective details. We've made it easy to create and access this work item through the Sprint Details button in the planning board's iteration list. This button only appears when the Sprint work item type is defined in the mapping, another customizable option.
Beta Release
It has been a mere two weeks since the release of TFS Scrum 1.0 Beta (Visual Studio Scrum) and we are ready to give you a taste of the support we've built for it in Urban Turtle with the beta release of Urban Turtle 3.2. We hope that you will take the time to give it a try and we are looking forward to hearing from you as we strive to improve the Turtle and accomplish our mission to enable your team to create kick-ass software - fast and sustainably.