Knowing what you are doing

Back to my research page.

Seems like for some people, time is the natural resource which is vanishing the most, and for which a reasonned management is urgently requested :^).
The point is that just like for code optimization, we have very bad intuitions about where the time is spent and spoiled. So, as for optimization, the best way to do is starting by profiling your typical activity.
From this, you will be able to name your frustrations (and maybe to relativize the time footprint of somes), check where you really spoil (or use for good, finally), verify that you pay enough attention to some tasks and persons. Next step will be to fit how you think your time schedulde should be distributed, taking into account the real amount of time available in a week.
Profiling your past and your current activity is also a convenient tool to help us telling "no thanks, I already accepted my fair amount for this kind of task" or "yes, I should still accept this request/proposal".

Here is a set of tools I developped (no, it didn't took me much time) for this profiling purpose:

timers: this simple timer.c glut program manages a rack of timers, possibly persistent, customized by a .timerrc preference file. See help file (in French).

temps: this simple temps.c text-mode program analyse the time data you stored in a text file in order to produce customized statistics from command line with options and a .temps preference file (in this example, it includes separate preference files timestats/presentation, timestats/aliases, timestats/datas ).
There are many ways you can organize your datas (here is an example file timedata_2006.txt. The minimal requested is, per day, a list of categories with time spent for each, and the length of this working day. In fact, there is a 'bloc-note' area between the day entry and the day summary, which I suggest to use to easily dump the raw information as it comes: for each big chunk of task I'm doing in the day, I type an entry in the bloc-note. If the same kind occurs several times in a day, this makes several entries. For spotty tasks (mail, phone, and other interruption-based), I use the timers (I simply clic on or off on the dedicated box in the rack), and I type this value in the bloc-note at the end of the day or half-day. I also account for pauses and lunch time (to be substracted from work time). In the bloc-note you can use pseudo categories or even clear meaning. At the end of the day I type the summary from this (in 30 secs). Using pseudo categories helps you to better define the real categories, especially during your first monthes of using the tool. It also avoids you to think too much about tool syntax during the day (risking miss-classification). Also, it might helps you later for a finer analysis of your time activity (e.g. if the time amount of a category was inexpected).
Example of result detailled report.

timechart: this simple timechart.csh C-shellscript program does month analysis (using the temps program with an alternate preference file timestats/timechart_prefs) exported as a table in a text file, ready for graphical visualisation using a tool like OpenOffice or Excel.
Example of resulting graphical chart.
Same with my hand-made analysis.