The Effective Programmer’s Secret Weapon: Time TrackingBy Khurram Aziz
Time is the most precious commodity we have. Anyone involved in a project of any kind must learn to harness its power and be disciplined in its application.
For programmers, especially those who work as contractors, time tracking is an essential function of billing, and it’s invaluable in helping you maintain focus on projects that want to pull you in all sorts of directions.
It’s no accident that there are so many different time tracking solutions specifically for coders. In order to get a proper account of the costs incurred during software development, you need to keep track of the amount of work performed and the type of work performed to develop a given solution.
And it’s not just about measuring cost either. Any practitioner of the Pomodoro technique or Kanban understands that time tracking is essential to streamlining workflow, managing multiple projects and simply getting things done.
Time tracking concentrates the mind and forces efficiency like nothing else. For coders, the tedium of writing pages of words in an abstract language wears the concentration extremely thin, and working in blocks of time is the only way to stay focused on long and complicated projects.
Tips for effective time tracking
Regardless of whether you’re more interested in capturing billable time or increasing your productivity, there are some simple rules to follow when tracking your coding time.
First, you need to break down all the discreet “tasks” that make up your project. This can be simple as dividing up the coding tasks into the different languages you will be working with. Or you may choose to differentiate between the “development”, “analysis” and “testing” portions of your coding.
Second, when you’re ready to work, you need to sit down and prepare yourself mentally. One of the most appealing aspects of time tracking is that it really allows you to focus. Maintaining focus requires cutting out distractions and maintaining an organized workstation.
Third, you need a timer. This doesn’t need to be sophisticated, and some people prefer a simple pocket timer that you can set to count down from specific time. There are also desktop and smartphone timers that will track your time digitally and record them automatically for you to observe and analyse later. Some of these desktop timers, for PC and Mac, will cut off your Internet access while you are working, which can help you focus further.
Finally, you need to record the time you’ve tracked. Whether it’s using pencil and paper, a spreadsheet or a project management app, make note of the time you spent on all coding tasks to get an accurate overview of the scope of the project both for you and for your client.
Low-tech time tracking tools
Time tacking doesn’t have to be complex. Indeed, proponents of the Pomodoro technique use simple tools–a ticking wind-up timer, a pencil and a piece of paper. Using this they can mark off chunks of time, or “pomodoros,” worked on a project and account for all interruptions and breaks.
At minimum, I would urge all coders to have a developmental journal for notes, sketches, times and dates. This is useful for both forward planning as well as noting down actual time spent.
For a slightly less low-tech solution, spreadsheets are useful. The main advantage of spreadsheets is their flexibility.
For example, some coders will want to charge more for programming in a complex language, such as C#, and less for simpler tasks like writing HTML. By using a spreadsheet you can accurately track the amount of time spent on both.
Tracking your time with software
While low-tech approaches are fine when you’re working by yourself, most coders work in a team environment. If that’s you, it is worthwhile investing at least some time in learning and using some of the more sophisticated time tracking solutions that are available.
Many of these cross-platform, cloud-based solutions allow you to manage the time of an entire team, get a clear picture of the tasks in progress and limit these tasks to address any bottlenecks that have developed in your workflow.
What’s more, you can even allow clients to “join your team” so they can see your work in progress as you complete each task, and see the time you’re spending coding in real time.
Some of these time tracking solutions even include features specifically for coders. These will automatically begin tracking your time as soon as you fire up your text editor, and quickly discern which language you’re coding in, and output that data into reports–automating the entire time tracking process.
Here are six good options to consider when you’re deciding which software to use.
This plugin is available for a whole range of programming text editors and will fully automate your time tracking. It detects exactly what software project you are working on by name and gives you a language breakdown, showing your most-used programming languages in daily, weekly or monthly email summaries.
WakaTime supports most popular text editors, including Vim, Sublime Text, Xcode, PyCharm, PHPStorm, AppCode and Brackets.
The base version is completely free while the premium version costs just $9 a month for unlimited history and data exports.
Available for PC, Mac and Linux as well as Android and iOS, RescueTime runs in the background of your machine and accurately measures time spent on applications. It also produces reports and data for you to analyze later and allows you to pause and quit the application at any time.
The “lite” version of the software is free, while the premium version blocks distracting websites, sends you alerts as you complete goals and even tracks time you spend away from your computer.
A free app for iOS, 30/30 keeps thing simple with a gorgeous interface and an easy-to-read timer that will keep you focused as the clock ticks away. It has a full task list that is easy to edit and organize into folders, and its intuitive gesture controls allow you to easily alter the time you allocate to coding tasks as well as breaks. It lacks in reporting and analysis, however, since it’s main function is serving as a timer.
For Android users, Task Timer+ is a sophisticated alternative to 30/30. While it’s not as gorgeous to look at or as easy to use as 30/30, it allows you to allocate “work time” and “rest time.” It also gives you basic reporting on how you spent your time, and it can synchronize with Google Tasks.
Task Timer+ costs $2.99.
Free for Chrome, this is a simple but powerful app. It works in the background, will cut off access to all the distracting web pages, and also produce detailed reports. Progress bars allow you to run multiple tasks simultaneously and move between them with a simple click.
It also syncs with Google Tasks and allows for notifications and export of your data to CSV files.
A free plugin for cloud-based project management tools like Trello and Asana, TimeCamp is perhaps the most powerful solution in this list.
Because it’s an add-on for existing project management software, it allows you to track time on all your existing projects. You can add multiple team members, tracking everyone’s time in a location that clients can easily view.
Time tracking makes you a more efficient programmer
Whether you use spreadsheets, paper or digital timers, time tracking can ensure that clients and contractors are always on the same page, fully understand what the other is doing and the client fully understands exactly what they are paying for.
With some of the more sophisticated tools available, often for free, there is simply no reason to have the types of misunderstandings and difficulties that plagued the business-to-business world of programmers and clients in the past.