How I manage tasks and projects with Todoist

Someone asked me recently if I'd changed my organisation processes since writing this post in 2014. In fact, almost everything I mentioned in that post has changed!

Just recently I was fired for the first time ever. I was just settling down after the shock of switching from freelancing a couple days a week and spending the rest of the time on my own projects to working full-time for someone else when I was told to pack my bags and leave.

So I had to make a big adjustment all over again. Aside from the financial stress, I'm a lot happier with my current work set-up, but it did require a rethink of how I manage everything. I have so many different projects and contexts of work to think about now that I was worried I'd forget things or miss deadlines.

I spent a few weeks exploring different options before settling into my current process. I use a paper Leuchtturm1917 notebook with a modified Strikethru system that I talked about here, and Todoist to stay on top of everything.

My notebook is for planning what to do each day, and Todoist helps me stay on top of longer-term project planning and repeating tasks with reminders.

Projects

Todoist projects

I mostly rely on filter views in Todoist, but I do have a bunch of projects set up to give tasks more context when I'm working outside the project view. My project tree looks like this:

  • Coding
    • Exist for iOS
      • App Store version
      • HealthKit branch
      • Location branch
      • New features
    • Littlelogs for iOS
    • ToRead
    • Journal
    • Notes app
    • Larder for iOS
    • Project ideas
  • Personal
    • Calendar
    • Bills
    • Shopping
    • Goals
  • Hello Code
    • Content
    • Exist
    • Littlelogs
    • Larder
  • Writing
    • Topics
    • Field Trip
    • Productive Habits course
    • BBC blog
  • Clients
    • Client 1
    • Client 2
    • etc.

Exist for iOS is my most tricky project to organise. It's pretty much the only reasons I've been trying so many different digital task managers recently, because several others fit my working style for everything but this project. The issue is that it's a big project with different branches (each sub-project represents a code branch where I'm working on different things) and different task contexts within it: fixing bugs, building new features, refactoring code, etc.

In the future I'd like to see fewer sub-projects under Exist for iOS, but the Apple Health integration took much longer than I expected, so I ended up having to manage the App Store version separately, so I could ship small bug fixes to the App Store quicker than if they were bundled in with the HealthKit branch. I also started the location branch far too soon—I was overconfident that the Apple Health integration was pretty much done and wanted to work on something new, but I've had a few setbacks since that have held up releasing the HealthKit branch into the App Store.

Some of the other projects listed under Coding are not even started yet, but I'd like to build them someday.

My Calendar project holds calendar items as tasks that I create automatically using this IFTTT recipe.

Otherwise, the project set-up is fairly straightforward.

Labels

Todoist labels

I have a few different types of labels, so it would be nice if I could group them together for easier reading. Todoist doesn't offer this functionality, but in my mind they're grouped, so that's how I'll explain them.

Coding

  • @feature
  • @bugs
  • @optimisation
  • @refactor

I tend to work on the same types of coding tasks at once—for instance I'll spend a day fixing bugs, so I want to just see the tasks labelled @bugs.

Writing

  • @post
  • @outlined
  • @drafted
  • @needs-revision
  • @update

I use the @post label for any task that is actually a post I need to write. Then I can just look at what writing I need to do, without seeing all the writing-related admin tasks as well.

The rest of these labels help me keep track of what stage each post is at, so I know what the next step is.

Other

  • @waiting

I use this label to show that I can't move forward on a task until someone else does their part. I use it for posts that have been sent to an editor, or projects that are held up by someone else.

Filters

Working on

Todoist labels

I spend most of my time in this filter view. It's split into three sections:

  • overdue tasks
  • tasks due in the next 7 days (sorted by date)
  • anything in progress or that I want to work on next

This last section is created by searching for tasks with priority 1 status. Since Todoist doesn't have a star or flag feature (you might see these in apps like Wunderlist or 2Do), I use priority 1 as a replacement. I use priority 2 and 3 within lists, but priority 1 is reserved for pushing tasks into this list.

Using the priority flag means I can push tasks into my "Working on" filter without giving them a specific due date. I don't want these tasks to get overdue or to feel like burdens—I just want them to be visible when I'm wondering what to work on next.

Follow up

This is just a filter for any task with the label @waiting.

Forgotten tasks

Any tasks that doesn't have a due date that falls in particular projects gets filtered into here. I don't include long-term projects that include lots of steps to complete. The projects that can push tasks into this list are ones where I've noted down errands, bills to pay, or admin tasks that need to get done at some point.

Having this filter set up means I can confidently throw tasks into Todoist that I want to do at some point in the future without worrying that I'll forget to schedule them.

Exist for iOS

Todoist labels

The best part about Todoist filters is the ability to separate the filtered list into sections for each different query. For instance, a filter search of @waiting, (p:personal & !due) will make a list with two sections: one for @waiting tasks, and one for tasks without a due date in my "personal" project.

For my Exist for iOS filter, I've created a filtered list that breaks all of my Exist for iOS tasks into sections for each sub-project. So I have a section for my App Store branch, a section for my HealthKit branch, and so on—but I can see them all on one screen.

Exist for iOS bugs

This filter only shows tasks labelled @bugs in my Exist for iOS project. It's also broken into sections for each sub-project, so I know which branch each bug relates to.

Posts to write

This filter shows any task with the label @post. It's separated into sections for all my client work, my personal writing, and Hello Code-related blog posts.

Clients

When I want to get an overview of all the client work I have due or coming up, I use this filter. It shows both posts I need to write and other tasks, and it's separated by sub-projects: one for each client.

Usage

When it comes to actually getting things done and staying organised, here's how I work:

If I want to work on a particular task next/soon, I make it priority 1 so it shows up in my "Working on" filter. This is where I spend my time when I'm working and checking what's up next.

Every now and then I try to check my "Forgotten tasks" filter to see if I need to schedule anything from that list.

Todoist labels

To quickly add a task I use Todoist's quick-add shortcuts. Pressing "q" inside Todoist brings up a simple, easy-to-use box to quickly enter a task, choose a due date, and pop it into a project. I sometimes use the quick-add box that pops up when you hit cmd+shift+a in any app, but this one is a bit more overwhelming than the in-app option.

One thing I'm trying to change when working with Todoist is to only add tasks I really think I'll do someday. I've been guilty in the past of filling up my task managers with any task I can think of. This inevitably ends up in a task manager that's crowded, and full of stale tasks I've forgotten I ever added.

These days Todoist is fairly clean, and full of tasks I actually want to do. I try to be ruthless about removing anything that's no longer relevant, rather than letting my Todoist account get cluttered and overfull.