In part 1 of this blog, I walked through connecting Microsoft Visual Studio to a Subversion repository on CloudForge using AnkhSVN. Today I want to build on that connection, adding agile project management and issue tracking into Visual Studio with CloudForge’s TeamForge Project.
Even if you aren’t using Subversion in this project you will need to install the CollabNet Desktop – Visual Studio Edition to enable a connection to TeamForge Project. Please refer to that post and follow at least the first few steps to get the connection configured.
I won’t dive too deeply into the features and benefits of TeamForge Project; you can read our web collateral for more details of everything available on the platform. For the purposes of this post I will simply use it for Agile Project Planning, Issue Tracking, and code commit traceability.
TeamForge Project is HTML-based but the CollabNet Desktop Client that was installed in Visual Studio uses the TeamForge SOAP API. This gives me the option of working directly with the TeamForge Web-UI directly in a browser in Visual Studio or through the right-click menus included in the Desktop. You can open the TeamForge Project window within Visual Studio with a right-click as seen below or you can open it directly in your browser.
TeamForge Project Trackers are completely customizable and can track just about anything; defects, user stories, tests, tasks, epics, vacation time, etc. and the trackers can be recursively nested or associated with each other to create dependency and traceability across all of the work done in your project. For the purposes my my work on this project I have created two trackers: Product Backlog Items (PBI) and Tasks. In this case, I have made Tasks children of PBIs; i.e. Product Backlog Items are dependent upon the work done in Tasks. This allows me to have a very simple Agile framework.
PBI’s are a general catch-all bucket for things I want to get done in a product. My backlog items might contain high-level epics, granular user stories, defects and everything else in between. I could break those down into individual trackers if I wanted to create different reports for each but for my purposes they can be grouped.
The Tasks tracker is used to track the most granular level of work done to complete a PBI. A PBI might be dependent on multiple Tasks and by keeping the Tasks as specific as possible I can assign those Tasks to individual people. This helps to keep track of my team but also makes my capacity and sprint planning much easier.
After I have created my backlog items and tasks (or imported in bulk from a .csv file) I moved them into my “Release 1″ folder so I can begin working on them. In order to easily view the work being done, assign tasks, and change task status I am going to open my “Release 1″ folder in the Agile Taskboard included in the CollabNet Desktop Client.
This arranges my Product Backlog Items in the left-hand column with the dependent Tasks spread out in the same row depending upon their status. With this interface I can quickly drag and drop my Tasks, moving them from “Not Started” to “In Progress” or “Impeded” and finally to “Done.” And because this Taskboard is dynamically built based on my TeamForge Trackers the status columns will reflect whatever workflow I establish for my project. I can have fewer, more, or entirely different statuses for every project.
I’ll just quickly assign a few of these tasks to myself and move them to “In Progress.” This will update the artifacts stored on the TeamForge server and inform the rest of my team that I am working on these items.
Using TeamForge for my Agile project management and issue tracking with the CollabNet Desktop Client for Visual Studio I never need to leave my IDE to see all tasks assigned to me, update those tasks, and see the progress of my entire team towards completing this project. This should help getting your product out the door much more quickly.
Next week I’ll bring everything together, linking the code that I have stored in Subversion with the issues I am tracking in TeamForge to provide traceability across the product life-cycle.