I haven’t been writing much recently (sound of crickets coming from this year’s blog archive), but this is such an OnBrand™ post that I couldn’t not write it. At work, I’ve been shifting into more of a TL role, and as such I’ve been tracking an increasingly large number of streams of information. We use JIRA for bug/feature level work, but a lot of the stuff that I need to track is more micro-level: Slack threads to respond to, docs to review, reminders to ping people, etc.

While I was at Google, and for the first ~year at Databricks, I used my Gmail inbox primarily as a todo list for micro tasks. I would keep emails as unread as a reminder to respond to them, and would use the snooze feature as a reminder system. This worked well when my primary interrupts were code reviews and doc comments. But this system didn’t work with Slack, and the toil of maintaining a sane inbox front-page was taking too much effort.

Fast forward to a year ago, and I transitioned mostly to using Slack reminders as my todo list. Slack has a “remind me about this” feature that was (and still is) super useful. In retrospect, I think of this now less as a “wow, this is a great feature for productivity” and more as a “wow, Slack is so poor at resurfacing old threads that I need to use a reminder system to keep track of things”. But it worked well enough for a while.

As I started needing to keep track of more, Slack and Gmail both fell over for me. I fell back to more manual approaches for tracking: first, Apple Notes, then a Google Doc. Both Apple Notes and Google Docs have native checkboxes, which made reasonably nice to use as a todo list. I know some people swear by a long-running doc/note for tracking work, but I ultimately found it too manual to keep up with. I’d try to have a new section per day, and move uncompleted tasks to the new day as time went on. But it was too easy to forget to clean up old/irrelevant tasks, and I’d end up with a bunch of stale tasks that I realistically would never get around to.

I also made a basic Eisenhower Matrix emoji prefix system for tasks, which was helpful for prioritizing tasks, but ultimately didn’t help as I had to manually rearrange/filter things to keep what was most important at the top of the list.

Urgent and Important: 🔥

Not Urgent but Important: 🌟

Urgent but Not Important: ⚡️

Not Urgent and Not Important: 💤

Won’t do: ❌

Top Priority Task: 🥇

Randomization: 🫨

And so recently, I switched to a system that I intuitively feel will be stickier: Taskwarrior (though, TBD since each of these systems seems to have a 2-6 month lifecycle before falling over). Taskwarrior is a CLI-based task tracker that has a lot of features that I’ve been missing in my previous systems:

Prioritization: It has a built-in prioritization system, and automatically sorts tasks by priority. It’s more sophisticated than a “Low/Medium/High” priority system as well, as the priority is calculated based on a number of factors (due date, urgency, importance, dependencies, etc). I really appreciate that I can enter a bunch of tasks, and I get a sanely sorted list with the most important tasks at the top. I also appreciate that if I work-crastinate on a non-urgent task, TastWarrior tells me “You have more urgent tasks”.

Ease of task creation: It’s super easy to add tasks. I’ve aliased task to t, so I can add a task with t add <task>. I can also add tags, due dates, etc. inline when creating a task. I always have a terminal window open on my work laptop, so this ends up (surprisingly) being a lot faster than inputting something into Google Docs or Apple Notes.

Dependency Tracking: It has a built-in dependency and “waiting” system. I can mark a task as “waiting” until a particular time, and it won’t show up in my list until that time. Similarly I can mark a task as dependent on another task, and it won’t show up in my list until the dependent task is completed. – Tasks that have dependencies automatically also get a bump in priority, which is nice. Tracking all of this manually would be a huge pain.

There are a bunch of other features that I’ve only dabbled in so far that are also appealing:

  • Recurring tasks
  • Projects / Tags / User-defined attributes
  • Ecosystem of related tools. Bugwarrior looks particularly interesting, as it can pull in tasks from JIRA, etc.

All this makes me think that Taskwarrior is a good fit for me, at least for work-related tasks. ~All my non-tirival work is currently done on my work laptop, so I don’t worry about cross-device syncing. (The lack of a friendly mobile app would be a dealbreaker for using this for personal tasks, though.)

Ok, enough bikeshedding for now. :)