Apr 2, 2010

Getting a good habit, the easy way

I consider myself an extremely unorganized person, which makes me sometimes wonder what the hell am I doing being a programmer.

In software development, planning is an essential activity for getting the job done - something that I've learned the hard way - and personal traits must be essential in this regard.

However, I've also learned that some of those traits can be actually gained with a bit of effort. Specifically, when we talk about habits, there are several mind exploits, which can be used to rewire the brain.

Here's one particularly dead simple, nevertheless useful professional habit, which I managed to get during the last year: using ToDo list for everyday microplanning.

As with any good habit, there are several things which can help:
  • should be simple to do, non-burdened with time-wasting activities
  • consistent, repeatable in a simple ritual-like steps 
  • providing positive feedback
  • have some triggering mechanisms  
  • be forgiving to yourself, no giving up early because of false starts
  • some kind of public commitment, even artificial one, can also help
I use AbstractSpoon  ToDoList (it's really nice and free but Windows-only, unfortunately... however there are many Linux alternatives - the particular application does not really matter).

There are some simple things to make its usage feel streamlined:
  • system-wide shortcut to toggle the application window quickly (Ctrl+Shift+T in my case)
  • it starts on system start and resides as an icon in the system tray
  • auto-saves on window losing focus
  • I use dropbox as a simple way to share the tasklist between different computers.
I start every working day with a simple ritual:
  • open ToDoList with keyboard shortcut and create the new top-level task named by the current date (e.g. "30 mar").
  • look at the previous day's ("29 mar") undone tasks, and either move them to the new day, or to the special "Maybe Later" top-level task.
  • think about what else is to be done today (usually there is some higher-level issue tracking system, such as Trac or JIRA, which already has a list of issues assigned to me and can serve as a guide), and roughly populate "30 mar" with today's goals.
  • look into the "Maybe Later" box and consider if there's something that can be fetched from there for this day. Also, close those of the entries there which are not actual anymore.
  • the current day's goals should be pretty fine-grained (I feel more or less comfortable when there are around 10 of them, doable during the working day), but it's not necessary to go into all the details now, they can be refined later, when it actually comes to doing them.
  • assign priorities to all the entries (10 being the highest), and they get automatically sorted, topmost being with the highest priority.
  • close the task list and start working on the topmost task.
During the day the shape of the list can change - and it's fine.
Some new things may pop in, in which case they get dispatched correspondingly:
  • if it's an urgent emergency task, then it gets right to the top of the current task list, with the highest priority.
  • if it is something which needs to be done, but not necessarily today, then it gets into "Maybe Later" box.
  • if this is just a "nice to have" kind of thing, then it gets into the special "IDEAS" box, which is located below the "Maybe Later" one.
  • some tasks can happen to become obsolete during the day, then they just get crossed out.
Also, priorities of the tasks can change during the day - I also consider it to be an expected phenomena.

Whenever this "popping in", or any other kind of distraction (quite usual on the working place, unfortunately) happens, there is always this magical "what was I doing" keyboard shortcut, which helps to switch the context back and focus again at the task at hand.

It did not work all that well from the first attempt, of course, but eventually I managed to get into this simple everyday rhythm and started to feel comfortable with it.

There is this inherent sense of satisfaction in seeing several things crossed out at the end of the day, and being able to answer these simple, yet important questions: "what have I done today? is there anything exceptional about it? why not, exactly?"

I believe that this manner of dispatching tasks somewhat resembles the Getting Things Done method.

There are few "buckets" of prioritized tasks, which periodically get processed, with the "short term" bucket being a list of today's tasks.

It's not exactly the same, of course. But perhaps I will try to follow the GTD method more closely, eventually.

After all, it's just another useful habit to try developing. There is no harm in trying it, and no penalty if it does not work for me.

Doing the impossible things (such as changing one's personality traits, for example) turns out to be not that hard - with a little bit of persistence and open-mindedness.

1 comment :

Unknown said...
This comment has been removed by a blog administrator.