Sunday, January 4, 2015

Rational Team Concert Tips to Efficiently Get The Job Done

For the past two years I have been working with IBMs Rational Team Concert (RTC) as it is my team’s project collaboration tool. Using some sort of collaboration tool is essential in any software project setting to manage timelines, priority and team member task ownership. Not using the proper collaboration tool is going to become a nightmare for project managers especially, but also all other team members involved because constant updates will be required. It will inevitably lead to loss of maintainability of items; traceability of when an item is being worked on and by whom; and creates overhead in calculating timelines and assigning work to team members. RTC is the perfect tool that has been designed to be a perfect fit for software development teams.

I have used RTC for numerous sprints and even across different projects. It has a large effect on how my team and I progress through and manage our time on a project. I have been on projects with both Agile and Water-Scrum-Fall based methodologies and we have found ways to modify RTC to work effectively for both. I am going to share some of the easiest modifications and techniques used in RTC that resulted in a better workflow for our team. Some of the ways to improve our process are due to customizations we have made in the workflow of how we use RTC. I will not go into the details of how to make these customizations in this article, but I will instead explain what we customized to improve our development and management process. I have compiled a list of the most effective techniques and modifications made with RTC that our team uses that work for the diversity of members and roles involved on the project.
  1.  Always assign a Priority (and Severity) when creating an item – A side from placing an item in a sprint, setting the priority and Severity of each item should determine the workflow of the project. It is an easy way for managers to make sure that developers are working on the most important functionality for the business. Each day when I come into work I check a query in RTC that shows me the highest priority and highest severity items that are either unassigned or assigned to me. If I am not working on the highest priority item then I might need to stop what I am working on and switch to something more important. It can be very easy for a developer to get side-tracked and work on something that might be a low (or really have no priority) so this is approach will help to keep them focused on delivering the most important functionality to the business. Severity is very important but is only used on defects for our projects. The severity of a defect will usually determine the priority, but not in all cases. Businesses may also have regulations that determine if a defect is deemed very severe no one’s leaving until the defect is resolved or at least the severity is reduced.
  2. Give the Summary/Title a meaningful and descriptive name – Use accurate and descriptive keywords in the summary of the work item. It will make all the difference when you want to quickly search existing tasks. One of my favorite features of RTC is how accurate and easy it is to search. You can search for anything within an RTC item, but usually if you are trying to search for something you will only try keywords that would be related to what the task is trying to do. Creating meaningful titles will also help reduce clutter and duplicate tasks. I have come across too many items with names like “Complete Step 3” instead of “As a User, I should be able to enter my credit card information”. I would recommend that if you come across tasks with generic titles to change them to something descriptive. Your team will thank you later.
  3. Create templates for clarity– Similar to creating descriptive summaries for items it is also ideal to create a pattern in the description so when a team member opens a new item they know exactly what is expected on them. In our team we have come up with a set of steps we use when a defect is reported that we require before working on it. The form is as follows and is located in the description field of defects:
    a. Description – brief description of the issue.
    b. Steps to reproduce – Steps on how to reproduce the reported issue.
    c. Definition of done – What needs to be done so that the defect can be closed as resolved.
    d. Signoff person – Who needs to approve that this defect has been tested and resolved.
  4. Always assign new items to a team member – By assigning tasks to a user you are increasing the traceability of that task. Assigning tasks to a user puts that individual in charge of it. RTC will also by default email the user if it is assigned to them so they will not be stuck with an unknown task at the end of a sprint. If a new task is entered and the user is unsure of whom to assign it to, assign it to the lead developer and they can reassign it to the individual in charge of the item. I have seen quite a few unassigned tasks not get completed because they were never placed in the scope of a sprint and the team was too busy with other items to pick up an item that could have been more important.
  5. Tag users in comments when asking questions on an item – Tagging users will by default email them with the question you are asking. Without tagging a team member in a work item they may have no idea you are asking or need anything from them. Usually questions can be a blocker to completing an item and getting a quick response is always desirable. As well, I would highly recommend asking questions related to items though RTC instead of directly through email as it will keep a trail of conversation for traceability. Therefore, when any member looks at the task they can easily understand exactly what is going on.
  6. Update the status workflow to match your environment promotion process – RTC allows you to customize the status and workflow of items. Working on a project with multiple test environments, we have found it extremely useful to include in the status which environment the item is in. For example, the status of an item would go from New -> In Progress -> In DEV -> In QA-> In PROD. Therefore, you can always check if an update has been applied to a specific environment, and if something is wrong with the update you know what environment it can be found in.
  7. Create a standard when determining item estimates – One of the hardest things I have found to do as a team member is accurately estimate the time required to complete for each item. Within our team to get the most accurate estimate we try to get the person who is assigned to, or most involved with the item to make the estimate as they will best understand what is required. Additionally, we have a standard that you must include the time it will take to promote this update to production so that you have some ‘slack’ and do not underestimate and create frustration with managers.
  8. Create queries that highlight outstanding and important items – RTC allows users to create a private or public custom query to show any list of items. Use these to your advantage and add them to your dashboard so at a first glance it is clear what the top priority is and what can be picked up if needed. I find these really helpful so I can see which members are working on the top priority items and who has a heavy list of items and who has some availability to do a code review. My project lead created queries that show the “top priority” items as well as “To be picked up” items which were ordered and if someone was looking for something to work on it could pick taken off the top off the list so there is no confusion as to what needs to be done.  
As part of any good software lifecycle each sprint and project is followed up with a retrospective which has given us time to think about how we can better improve our process using RTC. RTC has been a very effective tool for our team because we have learned to use and modify it to meet and adapt to our team’s needs. The list provides simple ways we believe have helped us deliver a better product more efficiently.

It has been our exposure and experience with RTC that helps our team keep on track and deliver the best possible product to our clients. I would highly recommend RTC as a collaboration tool for any Agile or Scrum based projects. Our team has enjoyed using it and we hope that with each retrospective we can come up with new and better ways to improve our process. Hopefully you can use these tips to help improve the process used with your collaboration tools.

No comments:

Post a Comment