It’s been a long time I use TaskWarrior and since this is one of the best to do list managers out there , I thought I may share with you some of my experiences with it, as well as how to make proper use of a to-do list manager. First, you see a lot of very funny articles in the recent past saying “todo lists don’t work” and shit like that. Well, it’s because most people have usually no idea how to properly write their tasks in the first place into a list. The common mistake is to make your to-do item too broad, too vague. Like “Become the president”. The key thing when writing tasks is to respect the sacrosanct S.M.A.R.T. principles. Got no idea what this means?
Here’s what it stands for.
- S pecific
- M easurable
- A ctionable
- R ealistic
- T imely
Here, Become the president is failing at multiple endpoints: it’s not actionable (how do you become the president??), its not realistic, and there’s no timeline attached to it. It’s probably OK as a general goal but it’s not a proper to do item for a to-do list. For far away goals you need to break things down to get to a point where your tasks are actionable, and have a low barrier to start them.
- friday : do second module of javascrit on codecademy
- sunday : use what I have learnt to add one feature on my website
…and so on. This means you need to think a little bit before writing tasks in your list. That’s normal. A to-do list is very much the same thing as planning, and you don’t plan for something in 2 minutes. You need to think about the time implications of each of your tasks, how often you want to work towards a goal, and ensure you are not putting too much on the shoulders of your future self. If there’s such thing as feature creep in software development, there’s the very same equivalent for to-do lists. The goal is not to discourage you with a 100 items long list next time you open it, the only real objective is to end up doing things frequently!
Then you need to have a tool you use often to manage your list. Honestly, for this kind of things, it’s up to you to find what works best for you. Some people like to keep a small notebook with them and work with actual paper, some others prefer digital tools. The advantages of paper are obvious and well-known: it can’t be destroyed as easily, it’s material so you are less likely to forget about it, it does not need any battery, and you can write tasks the way you like the old analog way. Electronic tools have other advantages: you are not limited by space, you can use powerful tools to sort and filter tasks, you can have reminders, it’s interactive and you can easily copy the data from one device to another.
It’s your call. Personally I use both, for different purposes. If you use paper, I can vouch for this item called Action Journal which is a beautifully crafted object that will make you feel you need to treat it with importance.
Just make sure that, whatever you choose, you use it often.
Now on to TaskWarrior. It’s a command line tool, available for several platforms, including on Pandora (repo link). You may be hesitant to use a command line tool, eh? Well, honestly it’s better this way because you don’t want to waste time moving the mouse around and clicking stuff right and left, since most of the input is just going to be text. Command line fits just fine.
When you launch TaskWarrior on Pandora, you can easily add tasks this way:
add do washing
This will add the task do washing (and you don’t need to put any ‘ ‘ around it) in your list, and it will be associated to a number. One very important thing about the numbers, that you have to keep in mind: numbers are not always associated to the same single task. In order to keep the input short and simple, Task Warrior rearranges the numbers every time a task is completed to use the smaller numbers possible. So, make sure you confirm the number of your task whenever you issue a command for it, since commands usually rely on numbers to be processed.
To see your current list of tasks, just type:
If you want to show a minimal list, you can just write
…and that will show only the bare minimum information. Then, you can add another task with a deadline indication.
add do math homework due:friday
This will specify the due date of the homework to be in the next friday in the calendar and convert it into a date.
If you made a mistake you check the number of the task after doing “list”, then write:
xx being the number associated to the task (you can get it through list).
When you start having tasks covering different types of topics, it’s better to assign them tags. For example, if I want to separate my Pandoralive actions from the rest, I can do the following:
add finish task warrior article due:today +pandoralive
+pandoralive adds the pandoralive tag to your task. If you want to see all the tasks sharing the same tag, you simply type:
…and the task you just entered will show up. It’s a good way to break down your list when you start having lots of tasks and still keep it manageable.
Another practical thing in Task Warrior is the ability to call a calendar in the command line, without going into any other application. Useful when you want to set a due date but don’t have a calendar at hand.
does just that. It even shows up the days when have due items for completion.
Some tasks may be short to complete (and I recommend to keep most of them this way if you want to achieve something), but if you really want to keep long tasks into a single line as a kind of objective, and want to indicate that you started them but not finished them yet, use:
…again, here, xx being the number associated to the task.
When you are done with a task, you simply write:
…xx being the number of the task. It will then disappear from the list when you call the list anew. But don’t worry, it will still be saved in history if you need to find it back.
If you want a task to recur frequently, you can do the following:
add pay my rent recur:monthly due:28th
This will set a task for every month due for the 28th. You need the due:date parameter so that it knows when to fix the recurrence start point.
You can also establish logic between tasks to ensure you do tasks in the right order. You use depend: to do that. Let’s look at an example.
add take a shit
Note the number of that task. Let’s say it’s 64. Create a new task depending on it:
add wipe my ass depend:64
Let’s say this task is number 65. If you try to complete task 65 first with
it will still complete the task but it will tell you it’s blocked by task 64. In other words, you need to take a shit before wiping your ass.
If you do:
64 done 65 done
…it will work just fine and show no error.
If your list gets too long (even though I warned you to avoid that!), you can call:
…to show a shorter version of your list, computed by priority based on when tasks are due and which tasks are late and so on. Can be useful, too.
It’s important to see your progress as well. You can visualize what you have done so far with the burndown command. It will show bar charts of how many tasks you have completed, how many are remaining and how many have been done so far.
shows this kind of progress on a daily basis on the x axis. You can change this by using monthly or weekly instead.
Another way to look at your progress in a more quantitative way is to use the following command
since it displays the same kind of information, using numbers instead of a chart.
Finally, if you need to modify one attribute of a task, you can do it with the modify command.
xx modify due:15th
will for example reschedule (or schedule) the due date to the next 15th day of the month.
There’s a lot more stuff that TaskWarrior can do (as you can imagine it’s actually a quite complex and capable program) and if you want to find out more I would recommend to check out the cheat sheet on the official site, or type
in the program.
If you choose to use TaskWarrior I hope you will have a great time with it. It does work very well for me, at least. Keep in mind my advices from the beginning about your tasks. Make them actionable and lower their barriers.
And once you accomplish a bunch of tasks after a given day, give yourself a treat. Be it beer or a chocolate or whatever you see fit.
You earned it.