There are literally thousand of articles on why you should track the time you're working on a project. (including one article in our own blog).
Without repeating the various motivations in great detail, let's just say it comes down to two main reasons:
Both make a lot of sense. If you don't know how much time you or your team spent on a project, any amount that you put on the invoice would just be random. And because we humans are notoriously bad at estimating how long a task will take, without historical data to base your estimates on would also be just arbitrary.
Another, less popular, reason could be to monitor employees in an effort to increase productivity. Research (and common sense) shows that this is a fallacy though. Most employees perceive it as being controlled, feel pressure and actually get less productive as a result.
Once you are convinced that time tracking is beneficial (and let's be honest, you are - why else would you be here) the big question is: how to do it?
I categorized the most popular approaches for time tracking in three categories: The start/stop button, guess-filling and hands-off.
This is the most simple form of time tracking software. Usually all you have to do is entering a project name, hit the start button when you're starting to work and (usually the same) stop button when you're finished or taking a break.
The most popular such software is toggl which is quite cheap (they have a free plan), easy to use and has a nice interface. It's available for all major platforms and has some integrations to work with project management or invoicing software.
Ideally you would hit start when you begin working on a task and stop when you're done. But as with anything that we're supposed to do manually, the risk is that we just simply forget to do it. You might end up working on and finishing a task and only at the end realizing that you never hit the start button.
Even worse, the tracking software reminds you that you forgot to start tracking with a nice but distracting notification. Although this might be a well intended feature, it gets annoying really quick and decreases your productivity as any interruption does.
Probably the most used and most hated type of time tracking is what we call guess-filling.
Basically what you do is write down how much time you spent on a task after you finished the task. In many settings it's the project manager, scrum master or some similar role in a team that is kindly reminding her/his team members to fill in the time sheet.
This could be in a project management tool like Jira, Redmine, and the likes, in a spreadsheet (here's a list of templates) or, if you're really old school, on a piece of paper.
The downside of manually filling in timesheets is threefold:
So it seems like there is a lot of potential for improvement. Obviously we 're not the first to realize this. That's why there are many software solutions for time tracking:
Mainly to solve the problem of team members not logging their time at all, companies and agencies often choose an automatic time tracking software.
The number of different services are so big that it can be a very time consuming task to find the best one for you. Thankfully there are a lot of articles and lists about the best time tracking softwares.
Some are fully automatic, some semi-automatic. Some integrate with your favorite project management tool, others just show you the reports and it's up to you how you use them.
As easy as it sounds for the user, as hard it is for the developer: Don't worry about tracking your time, let a software do it for you. But how does the software know what you're working on at any given moment?
We 'll that's exactly the challenge we are working on right now. As we believe in transparency within our company aswell and especially towards our customers, here's a quick description of how we're solving this issue :
Basically we're using information that the user's operating system provides about the application that's currently open and in focus. The most valuable piece of information is the window title.
Usually the title contains which application it is (e.g. Google Chrome, Microsoft Word, Visual Studio) and the document that's currently open (e.g. Example.doc, a website like google.com, or the project which is opened in the IDE).
Additionally for some applications we might get the path of the currently opened document. This can be either the url of a website or webapp or the local path of a file on your computer.
Which of these approaches is best for you or your team depends on your requirements.