Sandeep Deb's Home Page
BLOG entries
  [01-Aug-07] TimeTracker Part 3 - Last lap
Although TimeTracker was a relatively small coding exercise, it was quite enjoyable and refreshing in itself. For those who don't have the context of this blog, this is the last of a series of blogs on my journey to capture time :). You can read the earlier posts by following the links below.
Ok, now coming back to this blog. TimeTracker turned out to be a sweet struggle between two conflicting objectives, 'intrusiveness' and 'ease of use'. The tool had to be intrusive to gather information from the user, but not so frustratingly intrusive as to drive the user off. Making the tool intrusive was not too difficult. A modal popup window, which stubbornly refused to go to the background was the logical choice. The difficult part was to make the beast likable.

The easiest way to tackle this problem of usability was to introspect on what makes the modal window an ugly beast. The solution was to try and negate the concerns.

  • Concern : Volume of data entry. One of the major pain points in the traditional time tracking applications is the volume of data the user is required to enter in a session. I have taken some statistical measurements and have seen that it takes between 15 to 20 mouse clicks and atleast 40 key strokes for a typical time entry session.

    • Remedy : The input requirements for the tool are quite simple, all is requires as primary inputs are the task name, the start time and the end time. The start time of the the next task is the end time of the current task. Essentially, two inputs. There are three primary use cases for the application, Enter a new task name, Continue the current task, Switch to a new task. Of these three, the most commonly executed use case is continuing on the current task, followed by switching to a new task and the least used is entering a new task. Continuing on the current task can be indicated by a single mouse click, without and mouse movements. Switching to another task can be accomplished by a double click. And hence, in the best case scenario, it would take the user a single mouse click or keyboard entry (Enter or Space) without any mouse movements.

  • Concern : Distraction. When the window pops up, the attention and focus of the user is broken. For one, the user has to readjust his field of vision. Secondly, the user has to transfer input focus to the time dialog, in most cases moving the mouse half the screen across.

    • Remedy : After a lot of usability testing, I realized that a 15 minutes auto popup interval, which translates to 4 popups an hour is the least intrusive. Also, if the size of the popup window is made to fit the entire screen, the current field of vision is not broken. In terms of shifting the input focus, I have done some analysis and have realised that 85 to 90% of the time, the user's input focus is concentrated on area (A) as shown in the figure to the right. The three primary use cases described above (Continuing on current task, Switching to another task and Entering a new task) can be arranged as per the hot screen areas as shown in the picture.

      Since, continuing on the current task is the most commonly executed use case, the area (A) can be converted into a single button, which can receive the user's input without needing for the user to shift his input focus or changing his field of vision. Area C can be devoted for the second use case, from where the user can double click and choose another task from a list of tasks. Area D can be used for the third use case of entering a new task name, which is very infrequently used once all the tasks are loaded.

  • Concern : Motivation. Time tracking tools are not motivating, primarily because they provide no means of feedback. They are just one way tools for extracting data.

    • Remedy :After implementing the first two remedies, I realized that the tool lacked the zzing, it was too dry. To spice things up, I added some real time graphs on the button in area A. The gantt chart was very interesting to look at. Also, I used the screen area B to show the current task and made it dynamic by updating the time. The feedback thing was quite addictive. Soon, I started missing any kind of feedback when the tool was invisible and I added a tiny window which I call 'Cute Window' on the top part of the screen - the cute window is dynamically updated every second with the time spend on the current task and also serves the purpose of summoning the tracker window by double clicking on it. The summoning is required in case the user wants to switch tasks when the tool is in a hidden state.

Report generation was an offline feature added to the tool, which could help the user generate time reports for a period of time in a paged HTML format. The reporter application can be invoked by a script and presents the user with a form as shown below:

A sample report looks like the image specified below. The table contains links to day based reports which give a task break down and provide graphical analysis in terms of bar graphs, pie graphs and gantt charts.

You can find the detailed software description, usage instructions, downloadables etc in the software section. I would love to hear your views on this.

Post a comment -