Software developers spend a lot of time in front of computers, obviously. It’s also a modern truism that a networked computer is both a productivity enhancer and the greatest time waster humanity has ever invented. The same devices that we use to make a living are also perfect for delivering endless cat videos.
But we can’t just stop using our computer and go back to the abacus. Even turning off the network is problematic, now that Stack Overflow is the de facto source of documentation for anything useful. (Turning off email while you work is recommended though).
So what’s the solution? One thing about computers, especially those that run desktop operating systems, is that they’re designed to be customized. So let’s try to solve a problem that technology has created (Internet distraction) by applying a technological solution: a time tracking app, customized for self-tracking developers.
Manual Processes
As I have written before, I have a set of productivity habits that I find useful. Many of these, including a system I call Time Bank, depend on a collection of software tools. Although these tools are better than nothing, they don’t inter-operate well, which leads to manual work to keep data in sync. No developer likes manual processes. With that in mind, here’s a list of features that I would wish for in my perfect time tracking app.
Wish List
Time Tracking
The basis of our app is time tracking. If you want to make progress on a goal, one of the fundamental productivity habits is resolving to spend a minimum number of hours per day on it. If you do your work on a computer, it’s convenient to have a timer in the corner of your screen keeping track of those hours. I use one called Grindstone because it’s easy to use and has these features:
- Detect when you’re away from your computer.
- Easily create and manipulate tasks.
- Display time totals on the fly.
Using these features, I can generate accurate work time measurements for all of the projects I care about tracking. At the end of each day, I move totals into a spreadsheet. This is the manual process I mentioned earlier. What if the time tracking app could also do everything else I want without extra tools? That’s where the rest of the wish list comes in.
Time Goals
It can be interesting to peruse time tracking reports to see how you spend your time. But the main benefit of personal time tracking is to set and track time goals. A basic goal is “n hours per day,” but sometimes your schedule for a particular day doesn’t allow that. As I described in The Time Bank Productivity System, a more flexible approach is to set the daily goal but provide flexibility by depositing and withdrawing hours if you work more or less than planned. I provide a spreadsheet to keep track of the details, but it would be more convenient to have the logic integrated with a time-tracking app.
Pomodoro
The Pomodoro Technique is a popular time management method based on 25-minute intervals of focused work. Basic use of the technique doesn’t require any fancy technology. But integrating it with the rest of this app could make it more useful. In addition to a basic 25-minute timer with no pause button, the app could also keep track of goals and history.
Focus Practice
The ability to focus on a difficult task is a prerequisite for deep work. Though people are born with the ability to focus, they eventually grow out of it. The Pomodoro Technique can help achieve the benefits of focus, but if we’re building a custom time tracking app, there are other approaches. One idea is to adjust the length of the focus time. A Pomodoro is traditionally fixed at 25 minutes, but that may not be the optimal length for some problems. If you’re working on something that requires loading a lot of state into your brain (e.g., a difficult programming problem), it may be more effective to use a longer focus time.
While almost anyone can focus for 25 minutes with some practice, focusing for longer is not as easy. A time tracking app could support focus practice by offering a focus mode, allowing you to challenge yourself to focus on one task for gradually increasing time segments. It could also track a (self-reported) focus quality metric, indicating how focused you were during a time segment. As with regular time tracking, having an app keep track of focus time can increase productivity by encouraging you to practice the skill of focusing.
Planned vs. Actual
Cal Newport recommends that you plan every minute of your work day. If you have a lot of control over your daily schedule and work environment, then Cal’s approach of two columns on a sheet of paper may be best. If your day is less predictable, then this time tracking app could help.
As with the other features, the purpose of tracking planned vs. actual work is to provide a target to aim for. Planning to do specific work at specific times is more effective than just planning to spend a particular number of hours on a project. The reason: if you’re just targeting a number of hours, you have to decide when to do the work so that you reach your target. If you instead plan specific blocks of time, then you avoid the effort of deciding when to start each task. You just start when you planned to start.
For most people, it’s not quite that simple. An interruption may derail your careful plan. But once the interruption is over, a productivity app could help by reminding what you’re supposed to be working on. At the end of the day, it could also tell you how close you came to your plan — for example, what percentage of your work minutes were you doing what you planned to do. You could then set a goal to increase this percentage, thereby getting more control over your schedule.
Web Activity Tracking
What could be better than a program that records every web page you visit? Like most time and activity tracking, features that would be really annoying when used by your boss can instead be quite useful when they’re under your control.
Just as this time tracking program should track a lower limit for hours spent on a project or number of Pomodori completed, it should track an upper limit for some types of web sites. This is the approach taken by RescueTime. In fact, using the RescueTime API would be one way to implement this feature. The main drawback of RescueTime, in my experience, is categorization. Many sites are marked as uncategorized. A one-click way to categorize them from the browser would make tracking more seamless.
Measuring
“That which is measured, improves.“
Tracking a target value for focused hours worked, Pomodoros completed, or time spent as planned directly contributes to getting closer to that target. If you already spend most of your work time in front of a computer, it makes sense to also use that computer to track your time in various ways. Once you get in the habit of setting goals and measuring results, you may find it easy to get rid of inefficient parts of your workday. Until someone implements this perfect app, I’ll be doing that with spreadsheets.
(Image credit: Guy Sie)