Task Based Time Tracking
As a developer. it is very common to be required to report actual time spent working on a project or task. Sometimes the data is used for project planning, and sometimes your time is actually billed back to the customer. Over the last few years, I have used a variety of means of tracking time, some that made me cringe, and some that are almost a pleasure to use.
*** Read an updated post to learn more about my new project gootimer, a task based time reporting tool for Google Calendar ***
The Spreadsheet
One of my previous employers had a consulting firm put together a really crappy web based time tracking application. The system pulled project/defect ids from a different system and automatically made them available to the user in the “interface” so that we could enter in how many hours we worked on a specific task. Management wanted us to update this information daily, but it took so long to manually track and enter that data, that I ended up creating my own method behind the scenes and using it.
I built an excel spreadsheet that had multiple sheets and some “advanced” (well, advanced for me) features like automatic data collection based on project and fancy pie charts. It allowed me to monitor how much time I spent on non-project related tasks, and it had the added benefit of allowing me to easily import that data into the company time tracking application. Using the spreadsheet instead of the crappy web interface actually saved me about 1-2 hours a week.
Something that always bothered me about this method was the fact that I had to have a spreadsheet open all day, and since I never used excel except for that, it seemed like wasted cpu and memory – not to mention that in order to update my status I had to leave my dev environment which took away even more time from actual coding.
The Gnome Applet
My current employer sometimes needs me to report my time, so I have gone on a time tracking tool quest again. At first I tried to use Hamster, which is a Gnome applet for tracking your time on generic “activities”. I initially set this up with each activity being a trac id + description, and then just kept switching the active activity as my day went on. At the end of the day, I could look up the activity total and manually update trac as needed. This seemed to work very well, and I used it for a number of weeks.
While this method was very flexible, it still lacked some features and seemed to add unneeded maintenance to my already busy day. I stopped using it after a while and just started estimating my time instead of actually tracking it, since I was not gaining much automation.
[ad#tg-tshirts]
The Eclipse Plugin
Since most of my development happens inside of Eclipse (PDT or Zend Studio etc), I wanted to find an integrated solution that was flexible and easy to use. I ended up finding Mylyn and I was very intrigued. This plugin has built-in support for some common project/defect management systems like bugzilla and trac and allows the user to link up your eclipse task list with the external tool. With this setup I can add the task list view to my layout, and just click on the task that I am working on to start/stop the timer. If I need to switch to a different task, I can just select the new task from my view and move on – no need to leave the development environment or spend time switching to a different application to update my status. Any task status updates made in trac, automatically propagate down to my task list, and I can even push some updates back to trac. Mylyn even remembers what files were open while working on a task, and will “reset” your workspace to go back to the state it was in the last time you left it.
Mylyn seems very cool, but it lacks basic reporting features. While it is nice to see the total amount of time spent on a task, I need to know how much time I spend on that task today, or this week – not just the aggregate. Another annoyance is that even though *most* of my day is spent in eclipse, I still need to track time spent in meetings/research/planning against a task, and with Mylyn, if it didn’t happen in eclipse, it did not happen at all.
The Eclipse Plugin – Redux
After a little more searching, I found Tasktop which is a product built on top of Mylyn, but adds in nifty features like a dashboard for quick reporting, report creation and export (very handy), and the ability to adjust times or add new sub tasks as needed. They have a cool screen cast of the reporting features here which really shows how flexible and powerful the tool is. You can also turn off the “inactivity” feature of Tasktop to allow the timer to keep running even when eclipse is not the focused window.
I have only been using Tasktop for 2 days now, but I am really impressed with how easy it is for me to track my time on multiple tasks – it really seems to address the shortcomings of Mylyn. I look forward to the end of the week when I can generate a report of my time and submit the portion of my hours that are customer billable – all with little effort on my part. I’m sure that after using the tool a few more days I might find some hangups, but for now, I am in time tracking heaven.
How About You?
What do you use to track your time? I would love to learn about other tools that might help me be more productive.
September 17th, 2008 at 1:15 pm
Good to hear that you’re enjoying our first days with Tasktop James. It would be great to hear more about your experiences with the time tracking features. Also, since you’re using Zend/PDT, consider firing those guys off a note about any ideas you have on Mylyn integration for PHP, since we’ve been hearing a large number of similar requests and are about to start brainstorming with them about that.
–
Mik Kersten
President & CTO, http://tasktop.com/blog
Project Lead, http://eclipse.org/mylyn
September 19th, 2008 at 9:24 am
I plan on going to watch the screencast – but I’m curious – how does the tool actually bring in your trac to do list? The reason I say this is – being a team lead – I have a lot more tickets assigned to me than the ones I’m actually working on. Sometimes I have tickets that are just in a holding place – because I have to do something with them later (which might just be a mass reassign, but its the process that works currently). My concern is how it works – and how do you pick the items – and is this going to be an intensive task too?
For a while I had used a custom adobe air app – but I’d rather use a good tool than continue to build new features into it. heh.
Overall good job man! Thanks for the review.
September 19th, 2008 at 10:03 am
Aaron, I have limited understanding of it, but basically you create a new “repository” for tasks which points to your trac instance. At this point, only versions .9 and .10 are supported. Once the repository is set up, you can create “categories” – you can use the interface to build a trac like queries (similar to a trac report). Any tickets that don’t match a specific query get shoved in the “Unmatched” category.
What I did in my testing was create a category for each milestone I was in charge of, then setup the query to pull all tickets assigned to me in the specific milestone.
Very handy for my work flow.
September 19th, 2008 at 10:06 am
So I would have to find a way to unmatch them – perhaps by a context field…
September 19th, 2008 at 10:11 am
Well, it is basically a trac query, so you can have it pull on any criteria you want. I think it is very flexible.
September 21st, 2008 at 10:33 pm
We started out tracking our time the same way you did, with spreadsheets. We spent hours entering all that data only to find it caged in an unusable format. So then we tried a few open source apps, but this was years ago and none of them were really what we needed.
We finally just rolled our own time tracking & task management app and have been using it for five years now. In the past two years we have turned it into a product for others to use. Check it out, it’s called Intervals:
http://www.myintervals.com