I have used todo lists for quite a while, and I find it relaxing to be able to write tasks down. This way I don't have to keep all the tasks in my mind and try not to forget anything. The software that I have used was list-based. For short lists or short-term projects this was nice. One could just add a few tasks, and complete them later. One could just pick the next task from the list, and eventually it was all done.
But over time, there were always these tasks which accumulated on the bottom of the list; these things that I felt that I should or could do at some point, but never really thought important enough to actually take the time to do. Yet I have this desire to finish all tasks on a todo list. This of course cannot be realized with this sort of list. And actually it is not desirable either. Once the list is empty, there are no ideas left. I have noticed that at work, where a non-empty todo list stressed me out. And then an empty todo list also stressed me out, because I nothing to work on.
Over time I got a better relationship with my todo list when I discovered the agile approach. It is a big philosophy, but the important part here is that one doesn't plan for too long into the future, but rather picks the relevant tasks every week. The Kanban board is the manifestation of agile that I like at the moment. The tasks are cards in a column on a board, and they are moved between the columns. The first column is called the “backlog”, it is a repository of things that one could do. From these one picks the tasks which one want to work on, and put them into the next column. Once they are done, they are put into the next column, which is usually something like “review”. And then they go into the archive, which is the last column.
This can be done with a whiteboard, actual paper cards and magnets, but there is a bunch of software for that as well. Most programs don't have special columns, these are only found in heavier packages. Jira for instance has a distinct backlog and archive. GitLab Issues can do the same. For my purposes I don't need that and just have columns for that.
The boards are especially useful for homogenous projects, like the books that I want to read. The books go through these stages:
- Ideas, recommendations
- I have put the book onto my wishlist
- The book is available to read
- I have started reading
- It is finished, and I need to write a review
Another use case are the articles on my website. Each post is represented with one card. It goes through four stages:
- Idea, not having any text written
- Working on it, having some text or material gathered
- Waiting on a response from somebody, usually the city administration
- Ready to publish
A lot of my drafts are just sitting there, waiting for the city administration to write a response or start construction work. Because this is in a separate column, it doesn't bother me any more. And I can see which articles are ready to publish at a glance.
First I have used Todoist, because I already use that for my other todo items. One can group the tasks into “sections”, and then also display these sections as a board. It is just a two dimensional visualization with status, but I find it very helpful. With Todoist, a board looks like this:
Somehow it feels a bit sluggish for me. Dragging cards sometimes doesn't work. Editing always open a slow modal dialog, and I somehow grew a bit frustrated with it.
Then I have tried Trello, which is now acquited by Atlassian, the makers of Jira. It works really well and snappy, one can quick-edit the cards with a right-click. The board also feels a bit more compact. Their mobile app is also very cool.
Because Trello only offers 10 boards for free, I have looked into the Planner software which I used for work for a while. Because it works locally, it can store as many boards as you want. But it just doesn't feel as snappy as Trello.
For my blog posts I actually ended up writing a Python script which generates a HTML board from the actual posts. I only add a little YAML metadata to the posts. They already contain
status: draft such that the Nikola blogging software knows not to publish the articles yet. I have added a field like
board: waiting such that I could create the board from it. This way it is always synced with the actual blog source texts.
All in all I find Kanban boards really satisfying to use. They encourage distinct phases of work, and they also allow to do only partial work on a task. If there is a common pattern that one has to wait for some external event, one can create a column for this state. Also the backlog feels more like a noncommittal repository of ideas than an overwhelming slate of tasks.