Operationalizing Homework with Trello and Google Calendar

4 years and 2000 tasks later, I’m sharing the productivity flow that got me through my undergrad

When I was starting my degree at UBC, I felt overwhelmed by the sheer volume of work required by my classes. While some topics were just plain hard to grasp, the main source of my anxiety came from a lack of preparedness. Managing dozens of assignments over a full course load while also staying on top of extra-curriculars is no small feat — and I was ill-equipped to handle it all.

In fact, while the complexity level of my university work is relatively low compared to that of the work I complete while on technical internships, the amount of work I face at school dwarfs anything I would be expected to handle on the job. At work, I have one boss. At school, I have four or five.

So, for the past four years, I’ve been experimenting with a productivity process, backed by a set of apps, that aims to operationalize this school work. As I enter my last year of school, I’m satisfied with its polish and the value it provides. I’m also not sure what to do with it now that I’m finishing school. So, here it is.

Who is this for?

Anyone completing an undergraduate degree will probably find some use in understanding this system. How it’s currently implemented is personalized to the way I like to do things (that’s actually a huge benefit of it), so I recommend picking and choosing the parts of it that you like. I should also mention that this system works best for university programs that are mostly project and assignment based. My Business and Computer Science degree lends itself nicely to this, but an English major or anyone that’s in a more writing- or creativity-focused program may not find this process as helpful.

Finally, the key constraint underlying this system is the fact that school work, for at least a semester, is a finite amount of work. While assignments may be altered and due dates may change, a syllabus will generally define all the work required to complete a course at the beginning of a term. Additionally, while the content of each assignment will vary, the shape of the work is predictable (a project may require code, a presentation, a report, etc.). If your situation doesn’t have this dynamic, this process may not work as intended.

P.S. Everything I describe in this post is free to use.

Prioritize, Push, Predict

There are three questions that I answer with this system. When answered, they give me a solid understanding of the state of my world — with no concern for what has happened before or what will happen in the far future.

This question causes 80% of my stress. With so many due dates, choosing what to prioritize can be paralyzing. Usually, I just really need to know what to do right now.

Sadly, life won’t wait just because I have a calendar event. Things come up, and knowing when I can reschedule a task adds much-needed flexibility to my day.

A two-week window gives me enough context about upcoming deadlines without overwhelming me with everything due for a term. If I know that a complicated group project is due in a week, I can schedule tasks now to ensure it all comes together.

Starting with Trello and Tasks

Fundamentally, I answer the above questions with a task management system. It follows a modified Kanban-style and lives inside of Trello. Each academic term is modeled by a Trello board. At the beginning of each term, I go through each course syllabus and input all the assignments and due dates they provide (yes… really). While this doesn’t capture all the work for a term, it’s a great start.

Note: In Trello, tasks are called cards and columns are called lists. Let's just stick to tasks and columns for now.

A screenshot of the board view in Trello
My Trello board for the current school term, after parsing through course materials. Read on for a breakdown of what it means. Also yes, each of my boards comes with a pretty picture of Vancouver.

I’ve created an example Board with my columns, labels, and power-ups for you to play around with.

The board is updated often, but new tasks are usually only created on a weekly basis (the big exception being Spike tasks — more on those later). On Sundays, I spend time creating and changing due dates to provide a clear picture of the week ahead (you could call the week my Sprint and this my Sprint Planning). I also spend a bit of time creating tasks for the next week to give myself a solid picture of what tasks may need to be done this week in preparation. However, these future tasks often move and change scope.

Critically, I’m extremely conservative with how early I make tasks due. I will usually create a task that’s due a few days before the actual deadline and simply move it back if needed (or, get it done early!). Deadline tasks help me track this, but like Spikes, I’ll talk more about them later.

Since most assignments follow a similar scope or shape to ones I’ve experienced in the past, breaking down tasks and setting durations has become increasingly simple. However, in my first and second years, this was a major pain point.

I keep columns for tasks due the current week and the week after. This, combined with a browser extension (Chrome/Firefox) that will display a count for how many tasks are in a column, gives me a general understanding of how busy each week is relative to each other. If one week has 20 tasks and the next has 5, I may need to rebalance (depending on deadlines, of course).

I should also mention the amazing feeling the card counting gives me when I look at the Done column at the end of a term (there’s usually about 300–400 tasks in it). Having a single list of every task I’ve completed over four months is very motivating to look at.

A task is defined as a concrete piece of work that only I can complete. A task always has an output and a fixed time limit. A single course assignment is often composed of multiple tasks. Fun fact: in my HCI course, I’m learning that these assignments are called activities.

A task has the following properties: Title, Due Date, Duration, Label(s), and a Description (optional). Because tasks live in Trello, they also have associated columns.

I make a task for nearly everything. Even if something will take me less than five minutes, I will make a task for it. Doing so trains me to rely on my process for direction and frees me from the stress of not knowing what I should do next. In the rare cases where I don’t have a task, like eating lunch, for example, I still ensure it’s in my calendar.

A screenshot of a Trello card: “Complete peer review”
A screenshot of a Trello card: “Complete peer review”
A typical task, seen here as a card in Trello. Out of context, it is hard to understand.

Task details rely heavily on the context that a given week. I wouldn’t be able to tell you what the above task means in six months. But right now, and up until the task is completed, I know exactly what is required to complete it (I log into the course website and find my pending peer review). Anything that isn’t obvious is put into the task description (for readings, I will put which chapters are required).

Out of all the properties on a task, labels are the most powerful. Mostly, they are “buckets” of work. Each class I’m taking gets a label, as do each extra-curricular I’m involved in.

Two labels, Deadline and Spike, act instead as modifiers to a task’s meaning. A Spike signifies that the output of the task will be to create more tasks (the term is nicely stolen from the Extreme Programming/Agile world). A Deadline means that the output of the tasks will be to submit something for grading and that the task’s due date can’t be delayed.

A list of labels: Personal, Academic Management, COMM436, CPSC410, CPSC430, CPSC344, CPSC319, Biome, nwPlus, Deadline, Spike
All of the labels that I can use on tasks.

Since my workflow involves creating a lot of Trello cards, I’ve memorized the keyboard shortcuts needed to create them efficiently:

n (title) enter tab [0…9] d (date) enter

Creates a new card with a title (n (title) enter), switches to that card (tab), assigns label based on the number ([0…9]), opens the due date picker (d), sets date ((date)), finalizes date (enter)

If you’re wondering how this task model works for preparing for exams, I will tell you right now that it simply doesn’t (I learned that lesson the hard way in my second year). Since exam studying doesn’t really have concrete outputs, the system falls apart. I’ve devised a modified version of this process for exam periods, but I think I’ll save that for a future post.

The Secret Sauce: Google Calendar

By now, you’re probably wondering what makes this all so special. I have built a… detailed Trello board. Moreover, while Trello gives a great view of tasks, it doesn’t do a good job at surfacing due dates or putting them within the context of my life. How does a task’s due date line up with my course schedule? How do I know if I can push a task back to have an impromptu lunch with a friend?

The missing piece is integrating Trello with my Google Calendar. When combined, they give me a holistic view of my life. It allows me to answer my original three questions: what should I be doing right now, what can I move back, and what should I worry about in the immediate future?

A screenshot of the week view in Google Calendar
The current week in Google Calendar. It actually looks a bit empty, but to be fair, it’s still the beginning of the term and assignments need to be spiked (the first two tasks on Tuesday are indeed Spike tasks).

I make extensive use of Google Calendar’s ability to show multiple calendars at once. In total, I have eight private calendars — each denoting a different type of event. For the purposes of this post, only five are interesting:

  • The dark blue events are tasks synced directly from Trello
  • The light blue events are my classes
  • The purple events are my “true” events — usually with other people
  • The grey events is a rough schedule of things to do that don’t have real outputs.
  • The green events are for my part-time job at the UBC Library and are synced directly from UBC’s work scheduling software

Splitting these events into different calendars allows me to easily filter certain events out, and gives me nice color-coding by default.

Although Trello has an official calendar power-up, I use Cronofy instead. Cronofy provides a two-way sync between Calendar and Trello. This means that if I move a card in my calendar, its due date will be updated in Trello. In fact, most of my due date changes happen within Google Calendar, since the UI is optimized for just that. Cronofy also allows you to fine-tune card durations and reminders.

A key detail to note is that due dates set in Trello are actually the starting point for events in Google Calendar. That means if a due date is set at 8:00pm in Trello with a duration of one hour, the task is actually “due” at 9:00pm.

I have the default duration of tasks set to one hour. This is usually very conservative, however, I regularly tweak this duration based on past experience and make sure to go back after a task is done to give it the actual duration it required for record-keeping.

Final Thoughts

Well, that’s pretty much it. Trello and Google Calendar, backed by a solid data model for tasks and columns. After four years of tweaking, it’s a fairly streamlined process. But it wasn’t always like this — iterations of this system included other apps, tools, and at one point a sticky note wall.

If you have any thoughts or ideas on organizing tasks, school, or anything else in life, I’d love to hear from you. You can find me at cbolton.net or @cboltt on Twitter.

I’d like to thank my former team at Shopify (internal productivity tools) for allowing me to share this topic with them early-on in the form of a sprawling, hour-long presentation.

Here are all the links I’ve mentioned throughout the article:



Apps and Tools


Get the Medium app
