Real Programmers Have Todo Lists

EDIT 2017-03-03 : This article is old, I am now using an improved Jira Personnal Kanban.

EDIT 2015-08-18 : This article is old, I am now using Personnal Kanban instead of TODO lists.

Productive programmers maintain a todo list. No Exception.

Why is it so important

As programmers, here is the typical internal discussion we have all day long :

- Why the hell am I doing this again ?
… hard thinking …
- Yes ! I remember now :
- Encapsulate this field
- In order to move it to another class
- In order to move this other function there too
- In order to be able to remove that other static variable
- In order to refactor the login module
- In order to remove the dependency between the custom search query generator and the login module
- In order to refactor the query generator
- In order to be able to optimize it
- In order to speed up the whole website !

Phew, now that’s a list ! A 9 frame stack, all in our heads, and that’s only a simple example. Knowing that us humans usually have around 7 ‘registers’ in our brains, this makes a lot of clutter to remember.

Maintaining all this in a todo list frees us some brainpower !

What happens when you use a todo list

Quite a lot in fact :

  • It’s satisfying to check something as done !
  • Our programming gets better, because we can fully concentrate on it
  • We have a clear idea about what’s done, what’s still to be done, and why we are doing it
  • We avoid getting lost in things that don’t really need to be done
  • We can make better choices about what to do, what to postpone, and what not to do
  • We can make more accurate estimates about the time it will take to finish the job

In the end, all this makes you feel less stressed and more productive !

How to do it

There are many ways to maintain a todo list. Which to choose is not as important as having one. Here are my 2 design principles for a todo list system :

  • It goes in finer details than a typical bug tracking software
  • It should help you to concentrate on the few items you can do in the coming hours

For example, I am now using a simple TODAY … TOMORROW … LATER … scheme. I tend to avoid deep hierarchies as it gets in the way of my second principle. I like to keep DONE items visible to keep track of what I did for up to 1 day.

Here is a list of tools you can use to set up a todo list :

  • Any text editor using a simple format convention will do
  • Dropbox or any other synchronization tool can be helpful to access it from different places
  • Org Mode of Emacs has built-in support for todo lists. It’s a simple text file, but with color highlighting and shortcuts
  • Google Keep might do just fine for you
  • Google Docs can also be useful, especially if you need to share your todo list with others (when pair programming for example)
  • Trello is also a good one, it can even be used as a personal kanban board
  • Any other todo list tool that suits you !

If you are not already using a todo list, start now and become more productive ! No excuse !