Task List For Programmer’s Soul

I was talking to a lawyer friend of ours last night about driving your daily work based on a strict task list. I can’t say I was surprised to hear that he also keeps a task list for the day ahead. But as the conversation went on, I realized that we need to keep track of completely different things when we keep track of tasks. A lawyer effectively “delivers” dates. Did the contract get written up by the promised date? Were the papers filed in court for that case by the required date? There’s no “next release” as such.

For a programmer, things are a bit different. The useful outcome of our labor is features in software. Software with one few feature is still working software. We enhance software one step at a time.

As a programmer, I find I’m always having to juggle many features, bugs, and nice-to-have ideas. I have to figure out what is the most important thing I should be working on at any point in time. At the same time, I have to keep an eye out on the plethora of other things that may more effectively enhance the software I’m producing.

Now, I’m not talking about the overall list of tasks, features or bugs for the product I’m working with. That is a topic far outside the scope of this conversation.

I’m talking about the list of tasks and subtasks that concern only me. The small tasks that let me achieve the bigger tasks visible to everyone else. The tasks that would be noise to my team.

The task list strategy I’ve honed over the last couple of years is mostly inspired by Joel Spolsky’s task list strategy. I mix in a bit of GTD (getting things done) to come up with something makes a lot of sense to me, and eliminates a lot of FUD (fear, uncertainty and doubt).

There are a few attributes that I hold dear in my task list:

  • Flat list. No hierarchies.
  • No priorities, ever. The first position is special in that it describes what I’m working on now. Anything below the first position is a loose attempt at deciding what I’m going to work on after finishing the almighty now-task.
  • The now-task is small and has a tangible, measurable outcome.
  • Secondary tasks can be as ambitious and unclear as you want. Everything I don’t want to forget goes here. The closer to the top I place them, the more likely they are to become the now-task.
  • Completed tasks move to the very end of the list. They are not deleted. This is simply a confidence booster. (Could be used for tracking and billing.)

I know better than anyone what I want to accomplish as part of the now-task. If the task is too ambitious, I won’t be able to mark it completed, which leads to frustration, which leads to flawed perception that the task list is not working. You know the proverb “every journey begins with a single step”? That single step is the size of my now-task.

To tell the truth, most of now-tasks start out overly ambitious. As I’m working on such a task and I realize that I over-estimated the work required, I pause, decide what small bit I think I’ll be able to achieve. That becomes the new now-task. The old task is either pushed down the list or is eliminated altogether for lack of clarity.

The final hurdle to my workflow was my failed attempt at Merlin Mann’s Inbox Zero system. I had all the Ds down, save for Do. What do you do when you want to do an email, but you just don’t have time at this moment? I tried using my inbox as the task list, but it doesn’t even come close to the desired attributes I mention above. What I finally decided to do was manifest each “do” email into a task on my task list, and immediately archive the email. This way, I don’t forget to get back to the email, and the email is not sitting there in the inbox, constantly mocking me.

I tried many tools over time to help me achieve a way to keep a list of things to do, without getting in the way. Here’s a summary of some, in order I’ve tried them:

  • Moleskine Notebook (aka Hipster PDA) Pros: stylish and portable. Cons: Can’t re-arrange ink. Also, susceptible to theft, loss, and fire.
  • Remember The Milk Pros: Relatively easy to add tasks. Sync to pretty much everything in the world. Cons: Can’t re-arrange tasks. I tried to mimic something with tags, but it felt foreign and caused a lot of friction.
  • Text file/Word document, etc. Pros: Each task is a paragraph. Easy to move tasks around via copy-paste. Easy to back up and sync. Cons: Formatting is either lacking or requires confusing conventions. Backup/sync is your responsibility.
  • (current winner) OneNote. Pros: Each task is a paragraph. Moving paragraphs up and down is a built-in functionality (a little doohiky to the left of the paragraph), which works brilliantly for my needs. I can visually decorate the paragraph with a “task” tag, which supports visual marking for completion. Automatic sync to my live account, almost as soon as I finish typing a paragraph. Automatic sync to my Windows Phone 7. Cons: Decorating a paragraph with the task tag requires a CTRL+1 keystroke, wish it was automatic.

Well, time for me get compete this task, and figure out which of my secondary tasks is getting promoted.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s