Red-Green-Code

Deliberate practice techniques for software developers

  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter

Wish List for a Time Tracker App

By Duncan Smith Apr 6 0

Watch

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)

Categories: Habits

Prev
Next

Stay in the Know

I'm trying out the latest learning techniques on software development concepts, and writing about what works best. Sound interesting? Subscribe to my free newsletter to keep up to date. Learn More
Unsubscribing is easy, and I'll keep your email address private.

Getting Started

Are you new here? Check out my review posts for a tour of the archives:

  • 2023 in Review: 50 LeetCode Tips
  • 2022 in Review: Content Bots
  • 2021 in Review: Thoughts on Solving Programming Puzzles
  • Lessons from the 2020 LeetCode Monthly Challenges
  • 2019 in Review
  • Competitive Programming Frequently Asked Questions: 2018 In Review
  • What I Learned Working On Time Tortoise in 2017
  • 2016 in Review
  • 2015 in Review
  • 2015 Summer Review

Archives

Recent Posts

  • Do Coding Bots Mean the End of Coding Interviews? December 31, 2024
  • Another Project for 2024 May 8, 2024
  • Dynamic Programming Wrap-Up May 1, 2024
  • LeetCode 91: Decode Ways April 24, 2024
  • LeetCode 70: Climbing Stairs April 17, 2024
  • LeetCode 221: Maximal Square April 10, 2024
  • Using Dynamic Programming for Maximum Product Subarray April 3, 2024
  • LeetCode 62: Unique Paths March 27, 2024
  • LeetCode 416: Partition Equal Subset Sum March 20, 2024
  • LeetCode 1143: Longest Common Subsequence March 13, 2024
Red-Green-Code
  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter
Copyright © 2025 Duncan Smith