I have a system. It works for me, maybe it will work for you. Probably worth trying, you never know.
A note before starting: Keeping things simple and accessible is key to a system that works. You don't need the perfect tool, most of the tools I use are probably missing some features, but they work well together as part of my daily routine and that is the most important factor.
Managing my own tasks
I work from Google Tasks. Google Tasks is a very simple application that doesn’t really support much more than some text and adding a reminder. However, its integration with the Google product suite makes it a winner for me.
- Every email that I need to do something about (i.e. not corporate spam) goes into the tasks tab (which is always open) with one click.
- Tasks can be assigned via Google docs by adding a checkbox and assigning a person/date (this is more than one click).
- Chats can be added to the task list with (used to be one click but now is) two clicks (because it’s hidden in a sub-menu, I am not happy about this change).
- I also add tasks manually by typing on my keyboard.
- Recurring tasks that are designed to remind me to do something but have no other content are in a separate “Reminders” list so they don’t bother me.
I only work from my task list.
Every [last day of the work week] I have 30 minutes scheduled for “weekly roundup + planning”. During this slot I:
- Close all my open tabs (yes! you can do it too!).
- Mark all my emails as read and then archive them (anything important was already added to my task list, and if I missed something? People know where to find me).
- Organize my document and summarize “what did I do this week” (more on this below).
- Go over all my open tasks, prioritize and plan what I will be doing next week.
I make plans, you-know-who laughs
- I time box my tasks onto a private calendar so I know what I plan to do with my time.
- I will often have to rearrange my calendar blocks and push things forward (or back? I never know in which direction I’m pushing things when I defer them), but the calendar defines and reflects my priorities for the week.
- I have two fully blocked focus days a week for urgent meetings only, and those are the days I used for deep-work tasks. For some reason people respect the focus days and rarely schedule anything over the blocked time, thank you for that, I appreciate it.
- On the other days I will schedule reviews, short-context-switchable tasks and whatever I can get done in between meetings.
- When new tasks come in, as they invariably do, I dump them into the list.
- If they are important & urgent, I make time for them.
- Otherwise, they will either fit in to the time blocks I have already scheduled (e.g. one more code review is not going to mess up my schedule, it’s expected) or be deferred to next week’s planning. Maybe if I ignore them they will go away on their own.
The one document system
I have one document for all my stuff. In this document I have the following tabs:
7 itemsĀ±
This is my short term memory tab. This is my junk pile (and indeed, that is the first header in this tab). Terminal commands I ran, links to things I saw, bugs I’m investigating… Whatever is happening right now.
Long term memory
Every weekly roundup I review the short term memory tab and decide which items should graduate into something I think I will probably want to remember long term. Ways to search logs, those annoying git commands I can never remember, useful links etc. I am a firm believer in search, so while I do maintain some headers in this section – I mostly rely on keywords. To help me find things later, I may “tag” things using alternate spellings, one word, two words etc.
Some items may remain in short term memory if they are still useful, but mostly I delete everything that didn’t move into long term memory.
Noteworthy
This tab contains everything I did this week that might be noteworthy. This is the work and achievement log I use for performance reviews. I also add interactions with colleagues that may be useful for feedback for their performance reviews (since I am unlikely to remember anything when the time comes).
I have a header per week and write a few lines for context + links to code, presentations, design documents, community contributions etc. It makes writing my performance review very easy and I recommend everyone does it.
Per-project tabs
Each major project I am working on also gets a tab. Projects I manage get their own public project log document (see here, under the header “One document to rule them all”), but I still have personal notes or tasks I want to manage privately. For instance, for one of the projects I lead I have a weekly prep email I send to project members reminding them to update their task status and ETAs and add items to the meeting agenda – the per-project tab is where I keep the email template.
Managing Project Tasks
I don’t. I don’t manage project tasks. I manage project goals or milestones and I let software engineers manage their tasks to reach those goals however they please. Google tasks? Ticket system? Do whatever you want, as long as we’re making progress.
I have the aforementioned project log document where I keep all the public information about the project: meeting notes, design docs, tracking, monthly progress reports etc. Each in their own tab, of course (I am a huge fan of this feature).
I also have a Google Sheet where there are high level tasks with assignees (how high level? “design”, “implementation” etc.). Each task has an ETA and status, one of:
- Not Started
- On Track
- At Risk
- Off Track
- On Hold
- go/no-go (that means it’s in testing or waiting for our approval process)
- Rolling out (e.g. during experiment ramp up)
- Done (experiment is fully ramped up & rollback safe)
Tracking rules
- When someone starts working on a task, they set the ETA and set the task status to On-Track.
- If after the work starts if they believe they won’t make the original ETA they can change the status to At-Risk or Off-Track according to the severity of the delay and update the new ETA.
- Once a task goes into At-Risk or Off-Track it can’t go back to On-Track, but the ETA should reflect the current estimate.
- If the implementation is done but the task requires an approval process the status should be set to go/no-go.
- Tasks that don’t require experiments or rollout (sometimes implementation has multiple phases) can go directly to Done when the code is merged.
These rules allow me to easily understand the state of each high level task without getting into the nitty-gritty details. If your design is not approved it doesn’t matter that it’s in review – it’s not “Done”. I your code is not tested yet – implementation is still in progress etc.
I don’t track post “Done” tasks like experiment cleanup, I trust my engineers to follow through on that (and it’s not strictly part of the completion of the project).
I use the Google Sheets timeline feature to visualize the timeline of the project according to current estimates. I also have a system where I freeze the original estimates so I can see how we’re doing compared to the original plan, but I won’t go into that much detail here and creating a template is tricky because I never know which features aren’t publicly available yet.
That’s it. Good luck.