Tuesday, August 10, 2010

Improving customer satisfaction by time tracking? Yes!

JIRA time tracking allows you to log work against issues. In fact, many issue tracking systems now support logging work against issues with varying degrees of functionality, but my happiest experience is with JIRA. My product, Worklog Assistant, is a hassle-free time tracker for JIRA so this is a topic near to my heart.

Why would you want to measure and manage your time? The most fundamental reason as an organization is to improve whatever service it is you deliver. For example, if you are a consultancy, you want to make sure the best and highest margin consultants have as many billable hours as possible. If you are a software development organization, you want to be sure that your star developers are not mired in meetings or spending too much time working on legacy components. As a support organization, you need to know which customers are using the most support hours so you can sign them up for the Platinum support contract.

But most people really hate time tracking. I still do, believe it or not. It is notoriously difficult to track your time without the help of a robot.

So what service do I deliver? Is it a time tracking application for JIRA? Not exactly. I deliver something that makes it easy to track your time directly in JIRA. A subtle difference! If something is possible but annoying, it's still not going to get done properly. Some anecdotal evidence from my testimonials page:

I'm happy to report that the logged hours across my team doubled since we started using your tool. They're also much more accurate since the tool is completely objective.

Here is another one that just came in as I was typing this blog post [Note: This blog post was written in January]:

Your product has made my daily management considerably easier.

Exactly my goal. Thank you dear users!

At the end of last year, I felt it was important to review what I could do to serve my current and future customers better. I believe one of the ways that I can serve them better is by spending as little time as possible doing administrative things because that keeps me from improving the product. Administrative work is usually never completed, only obsoleted. I made it a point to record tasks like manual testing, planning new releases and building new releases. I turned to JIRA's new query language to help me decide what was taking the most time:

And man, was I surprised:

The above image shows that making new releases took 3 full days out of the whole year. That is 3 days I do not fix bugs, add features or talk with customers. To put this in perspective, I spend up to one week a month on Worklog Assistant. So nearly 10% of the time I spent developing Worklog Assistant was put into making new releases. Completely unacceptable. All the other tasks above were one-time jobs. That is, once the work was done, I usually did not need to revisit that task.

The question, to me, was obvious: how can I modify my process to reduce or eliminate the time I spent making releases? I reviewed the process for making a release:

  1. Merge development into main line
  2. Build the software: manually check out on Windows and Linux VMs and execute build and test scripts. Do the same on Mac build machine.
  3. Wait for about an hour.
  4. Fix any issues.
  5. Repeat until no more build issues.
  6. Generate updated website and upload all build artifacts
  7. Make release announcements

Believe me when I tell you that I am completely embarrassed by the above procedure. Although I never made a mistake, it was quite easy to do by checking out the wrong branch or forgetting to update the working tree. Building and uploading artifacts was all automated, but I had to manually start and babysit the process. That was what ate up the most time!

The solution is probably obvious by now: I needed some build machines.

Fortunately, buying some good build machines was within the budget. So as soon as they got here, I set them up immediately using TeamCity. I wondered how long it took:

The above image shows that setting up the build machines took me around four days. Hmm, oops? Not quite! Remember, this is a one time investment and I just had really bad luck with installing Ubuntu (had to do it twice with two different versions to get some VMs to work.)

Compare the old process above for making an official release compared to the new process:

  1. Merge into main line of development
  2. Make release announcements

As some of you may know, I have an active beta program. You may also be actively using the beta. If there is a bug fix or experimental feature, I need to get these out as soon as possible to the people who are most interested. And believe me, if there is a bug fix, I want to get it out to the user yesterday!

Perhaps unsurprisingly, I rarely made beta releases last year because it just took too long. Not anymore. Here is my new process:

  • Merge feature or bug fix into beta branch

That's it.

In January of this year alone, I've been able to make more beta releases than I was able to in 2009 altogether. And I can tell you that the users are happy.

They are happy because I can prove that I am paying attention. They are happy because they can give me feedback on improvements they can touch.

In the same month, I had a relative torrent of really great comments and feedback in my inbox directly related to the support I am able to provide thanks to the beta, which was previously languishing. I know I've made the right decision.

You can't improve what you don't measure.

How true! So how did time tracking with JIRA help me serve my customers better? Simple:

  1. Tracked all my tasks in Worklog Assistant
  2. Found the least efficient task using JQL: babysitting builds
  3. Purchased and configured build machines: no more need to babysit builds!
  4. Reduced average time required for a release to 5 minutes down from an hour: more frequent beta releases with bug fixes and new features
  5. Customers like being able to use features and fixes as soon as possible: happy customers!

I had no idea I could improve customer satisfaction just by time tracking. What can you improve by tracking your time in JIRA?

About this blog

We strongly believe that tracking your time properly is the first step to deterministic software development. If you feel that you have been guessing or you can't be bothered to remember to log time, Worklog Assistant might be for you!

Give it a try!

Please download a free 30-day trial today by clicking on the link below: Download