Dan Griffiths (shown below) is Managing Director of Buffalo, a UK-based web design, development, and e-commerce shop. The company uses git for version control and has recently hooked it up to Basecamp in order to log time there. Below, Griffiths and Jasper Tandy, fellow Buffalo director, explain how the system works.
Time tracking is one of the biggest bugbears for anyone. We've all got our rituals, but the minute you're in a rush and you forget, you're either losing money going through work history or losing money not charging.
A while ago, we began to experiment with time tracking via git (our choice for version control). Checking each commit message for a specific machine code, we used this to calculate the time spent on each commit. This data was then saved, along with the commit message so that we could easily look through our history and see who'd done what and how long it took. This was only mildly successful as we'd invariably forget something and have to trawl through our git logs database table or memories to infer timings. Not the picture of accuracy we were all hoping for.
Like many companies, we use Basecamp to track our projects and I'm sure we haven't always squeezed everything we could out of it. We used personal to-do list managers to keep track of time and activity, we used a combination of starred email, Basecamp messages and luck to manage what people needed from us.
This Basecamp screen shows our support to-do list. Clients email a special address and it gets added as a to-do.
There's only so many hours you can spend editing a spreadsheet of boring log data before you need an alternative. Our idea was to improve workflow and change as little as possible doing it:
- everyone start using Basecamp to track our todos
- log time spent on every little thing you do against your todo list
- manage all client requests through Basecamp
Tracking todos in Basecamp is easy (especially with the new mobile webapp), but when it comes to logging time against an item, you have to save and commit your work, then log the time, then move onto the next thing. This might not seem like much, but the fewer steps you need to take to achieve something, the more likely you are to adopt it as a habit and make it work. We integrated our git hook with Basecamp's todos using their API, taking our machine code and logging it as time spent on Basecamp. Our commit messages look something like:
Something more useful than this
time:h:2 # h=hours, also responds to m and d, minutes and days
:resolve
:BASECAMPTODOITEM