One of the challenges facing someone with a small company is tracking where you spend your time. It gets more important and harder when you charge hourly. There are a lot of products out there that allow you assign hours to a client. They run the gamut from a handful of PHP pages to full-blown CRM systems. I found a better solution in an unlikely place, Google Calendar.
At first, I used vTiger CRM, a fork of SugarCRM, to track time. I have vTiger on my hosted server and I have populated all my clients in it. When I get new clients, I put them in as well. I don't have this automated because I have few, long-term, clients, so it's not more than 2 or 3 entries a month.
When I did work for a client, I would login to the CRM, navigate to the “Tasks” page, and add a new task. Every task had to be associated with a client, which meant I ended up adding new clients even for one-offs. Also, the calendar view was very inconvenient for me. It was near impossible for me to figure out what I did on a particular day.
In the end, what killed vTiger for me was simply that it was too slow. It's slow to load. It's dependencies on a lot of tables makes it slow to render. And, it takes way too many clicks to get something done, so it's slow to navigate.
After months of using vTiger, I was still unable to track what work I did for whom. So, I went looking for a new solution. My requirements were simple:
It needs to allow me to enter a job title, a client, and a timespan
I must be able to view a day in its entirety so I can see if I have any unaccounted for time
It must be quick to load and require very few clicks to perform any task
The storage must be more or less permanent, so I can review tasks for a minimum of 4 years
It must have some way of exporting data, in case I need to migrate to another system
I found no time tracking package that met these requirements. The only real solution came from an unexpected quarter, Google Calendar. Since I've started using it, I've found it very easy to enter time records and very easy to examine my time spent. Google backs-up and maintains the database. Import and Export can be done with iCal or XML, both of which can be converted easily with Perl or Java.
Now, I can tell a client with easy assurance how many hours I spent on their project and what I worked on. This simple change has made billing and project management 100 times easier, and that's key for any software consultant.