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 !