Blogs about Jazz

Blogs > Jazz Team Blog >

Oh, the places you’ll work (when you use RTC)!

With Yahoo’s latest change of policy that restricts employees to only working in the office, people have been buzzing about working from home and distributed teams.  At IBM, it’s common for teams to be distributed across nations and even continents.  Working from different physical locations and various timezones brings its own set of challenges, but it allows us to pull together the most talented people on the same team no matter where they live.

So how do we make working from distributed locations work for us?  We have great people on our team, we communicate a lot, and, of course, we use our own tools.  As a professional who works 100% from my home office with a team distributed across Canada, the United States, and Switzerland, I make heavy use of Rational Team Concert (RTC) to remain in the loop.  In this post, I’ll describe some of my favorite features for staying up-to-date despite being physically isolated.

Traceability

I love the traceability that RTC provides.  At any time, if I want to know the status on the development of a new feature, what work has been assigned to me, or our team’s plan for the current sprint, all I have to do is login.  Our team has developed a culture of keeping our artifacts up-to-date.  We utilize the comments section of work items to explain why we are making changes, clarify what changes should be made, and document the status of those changes.  Because we can upload attachments to work items, we can easily include wireframes, screenshots, log files, and more so that all of the items we need in order to understand the work item are in one place.

If I run into an issue using one of our Jazz products, I don’t need to track down the owner of that feature and ask him if someone has already reported the issue and when it will be fixed; I simply need to search for an existing defect and then create a new defect if I can’t find one.  I can ask any questions in the defect, and the owner of the defect will reply there.  All data can be tracked in the defect so others can also benefit from this information.

Track build items

The Jazz team’s primary objective every day is to have a healthy Collaborative Lifecycle Management (CLM) build.  The CLM build consists of our product builds (Jazz Foundation, Rational Requirements Composer, Rational Team Concert, and Rational Quality Manager), so if any of those builds fail, we will not have a CLM build.  We manage all of this work by utilizing track build items.  Each product build has its own track build item, and the CLM build also has its own track build item.

The track build item is where we post information about when the build starts and completes, if the build passes or fails build verification testing, and any significant defects that prevent the build from being considered healthy.  We’ve automated a lot of these status updates to save our release and test engineers time.  When we’re preparing to declare a build as our milestone or release build, we use the track build item to mark the build as approved and note any issues that will prevent us from declaring the build.  The great thing is that we subscribe a majority of the team to the track build item, so everyone has the information about the build pushed to them automatically.  If something goes wrong, the entire team knows and can quickly work to fix the problem.

You can view our current track build items:  CLM, Jazz Foundation, Rational Requirements Composer, Rational Team Concert, and Rational Quality Manager.

Dashboards

We love dashboards!  If you take a look at the CLM dashboard, you’ll see how much we love to create big, customized dashboards.

The CLM Dashboard

A screenshot of our massive CLM dashboard

Dashboards provide a quick and easy way for team members to peruse the latest information that is relevant to them.  Instead of generating a report and emailing it to the team, you can instead create a dashboard that will dynamically generate the most up-to-date information, and your team members can access it at any time.  Dashboards consist of tabs that contain widgets.  The widgets can range from static text to query results to graphs.  We have a CLM dashboard, product dashboards (for example, the Rational Team Concert dashboard and the Rational Quality Manager dashboard), and individual team dashboards (for example, the RM Web Client Team dashboard and the Jazz Function Test Team dashboard).

Dashboards are a great way for me to quickly check the latest status.  I might want to see a list of defects that are open and assigned to my team, or I might want to see a burndown chart for the current iteration.  The great part is that I can access a shared team dashboard or I can create my own private dashboard for widgets that are relevant only to me.

Dashboards are also an easy way to run distributed meetings; everyone can access the dashboard when the meeting begins and you can start discussing the latest information.  At least twice a week, the CLM leaders gather together virtually for a planning call.  One of the things they always do in this meeting is consult the Defects – CLM blockers tab of the CLM dashboard.  The dashboard tab contains a widget for every project area that is part of CLM; each widget queries for open work items tagged with clm_blocker.  The CLM leaders discuss every work item listed on this tab to ensure the work item has an owner and to find out when the work item will be closed.  Without a dashboard, this process would be much more complicated, and defects would likely slip through the cracks.

Notifications

Notifications can be automatically generated for numerous reasons like a user commenting in a work item you created, a team member delivering a changeset, or a build completing.

One of the handiest notification features is Messages @Me.  If you want to mention someone in a work item, you can use @username in the work item comment or description, and a link to that person will automatically be created.  So, for example, if you wanted to ask me a question in a work item, you might say something like “@lhayward What a great blog post!  What inspired you to write this post?” and I would automatically get a notification that you mentioned me in a work item.

There are three major ways to receive notifications relevant to you:  feeds, email notifications, and toast popups.  I’ll discuss each of these in the following sections.

Feeds

One type of notification that is really popular with developers is feed notifications.  The feeds are automatically populated in the RTC client on a regular basis.  The preconfigured feeds are Build Events for My Teams, My Teams, and My Work Item Changes.  Many developers like feeds so much that they disable all email notifications and rely solely on the feeds.

To view your feeds, open your RTC client for Eclipse and expand the Feeds section.

You can double click on a feed to open it.  From there, you can view your notifications and customize what notifications should be displayed and how they should be sorted.

You can also add other feeds.  You can create a new team events subscription, a new query feed subscription, or a new subscription to any feed by right-clicking on Feeds in the Team Artifacts view and choosing to add a new subscription.

Email notifications

My favorite type of notification is the email notification.  Email notifications are probably just what you think they are:  whenever an event occurs that triggers a notification, you automatically receive an email containing details about the event.  I like email notifications, because I can easily manage the notifications; as soon as I have completed whatever action I need to relating to the event (the action might be as simple as reading a comment or it might be more time consuming like reviewing and approving a changeset), I delete the email.  I know that any notification in my inbox requires me to take some action.

You have the option of customizing which events will generate email notifications.  To do this, begin by logging in to your RTC client for the web, clicking the down arrow next to your name in the upper right-hand corner, and selecting View My Profile and Licenses.

View My Profile and Licenses

In the left column, select Mail Configuration.  Here you can customize which notifications you will receive by email.

Mail Configuration

Toast Popups

The final type of notification that I’ll mention in this post is toast popup notifications.  These are notifications that appear to fly in to the lower right-hand corner of your RTC client for Eclipse, remain for a couple of seconds, and then fly out.  Most people use these notifications in conjunction with feeds or email notifications.  The toast popup notifications appear for events like a build completing, a teammate delivering a changeset, or someone mentioning you in a work item.  The great thing about these notifications is that they alert you instantly whenever an event occurs; you don’t need to remember to check your email or check your feed.

These notifications are quick bursts of information, but they can be very helpful.  For example, if you’re heads down programming something, you might not notice that a teammate has delivered code in the same area in which you are working.  It may be a big time saver for you to accept their changes right away, merge any conflicts, and then continue with your changes rather than waiting until you have completed your changes and trying to merge a large set of conflicts at the end.

You can configure which toast popups you receive by opening your RTC client for Eclipse, selecting Window > Preferences, expanding General, and selecting Notifications.

Keeping it all together

Of course, tools are just tools, and it takes active communication and motivated, talented people to develop our Jazz products across the continents.  I love that I am able to work from my home office in Maryland with others who also have a passion for developing high-quality, easy-to-use tools that support the software development lifecycle.  I rely on RTC to help keep me up-to-date with the latest information.

What tools and features do you find most helpful when working with a distributed team?  Are there any features we should add to RTC that would better support your distributed team?