Skip to main content

How I Org, A Software Engineer's Process

How I Org #

I’ve encountered a half dozen or so personal productivity, task management, organization and motivation systems. (I will spare the list.) The latest I’ve read is David Allen’s Getting Things Done. Having been there and done this, I read Allen’s book with a “Just take me to the algorithm” mentality.

Also, I create software for living. Software development is an occupation that is both creative and technical. It’s also a craft that is mostly performed at a computer and is now more virtual than ever. A lot of text in Getting Things Done covers tools and techniques that support the algorithm, but are incidental: there are many ways to implement, track, and execute Allen’s techniques. A salesperson’s needs here are different than a manager’s, are different than a software engineer’s, and so on.

My own personal organization needs are nearly full-virtual. Either I’m in a virtual meeting, preparing for one, working on tasks from one, or—and what I do best—designing and writing code and building software products. And finally, I spend as much time as possible in the Emacs editor. There are many, many code editors and IDEs out there. Yet once you’ve paid the admittedly steep learning curve for Emacs, it’s the most effective “flow tool” I know of. What I do in Emacs, including this very text, I can get lost in, which means maximum productivity.

By the way, I do not mash up personal todos with my work as GTD encourages. I prefer a simpler in->due?->done for this part of my life. For personal work I use Todoist for it’s clean UX, mobile app, and sync across devices. Todoist recently added Kanban boards, so I may toy with a GTD-esque flow sans Emacs (which is a fiddly challenge to sync across devices.) That notwithstanding, I’ll continue with my Emacs setup.

Why Emacs? #

I admit, I’ve got years of Emacs key bindings in my fingers. But like playing the piano, practice makes plenty good. More keyboard, less mousing around many windows lends to good flow. I can now capture meeting notes, reference tidbits, fleeting ideas, and so on, with confidence I can forget them now, find them later, and fold follow ups into todo lists and projects plans.

References #

The following works were highly influential in my own productivity thinking and, of course, this article.

  • Getting Things Done by David Allen: This highly popular “work of the day” got me re-thinking about personal productivity again, and tweaking some of my own practice as a result.
  • Getting Things Done: The Science Behind Stress-Free Productivity by Francis Heylighen and Clément Vidal: An academic paper on GTD that lays a foundation for what I think is the biggest return on investment for GTD: reducing cognitive stress and overload. No less important, the authors provide an extremely concise and on-point summary of Allen’s method, including a comprehensive (wait for it) flowchart of the algorithm! Recommended reading.
  • Trying Not To Try by Edward Slingerland: This trade book is very thought provoking if you have interest in the convergence of history, culture, religion, and creativity. Of most relevance here is the connection to “flow state”. Every section of Slingerland’s book got me thinking about my own creativity, workplace and historical bias, and where I fit on the spectrum between Confucius and Laozi. Wu-wei ftw!
  • Org Mode Basics and Organize Your Life with Org Mode (videos): System Crafters is a great source of live code videos and one of the best ways to get into Emacs.

Emacs Config #

If you’re interested in my detailed Emacs config, i.e., init.el you can find my setup in my GitHub dotfiles repo. My Org-mode config started with Organize Your Life with Org Mode. If you’re new to Emacs or Org-mode, start there.

A Walk-through #

The rest of this doc is a walk-through with animated GIFs to illustrate.

It All Starts with a Meeting #

Let’s start with a meeting, which was my original use-case. Alt-tab to Emacs, then C-c c m to open an entry in meetings.org from the meeting template. The template will ask who the meeting is with and what it’s about. (There’s also a 1-on-1 meeting template, with just the “who?” question, C-c c 1.)

Figure 1: Fave Music meeting with Lunis and Lucy

When the meeting is over and I’m ready to finish the capture I’d normally hit C-c C-c. Instead, I’ll use C-u C-u C-c C-c to follow the capture buffer into the filed location in meetings.org. I’ll add a TODO manually, without a template, by typing M-enter to open a new outline node and then TODO Learn Für Elise on piano. Text files ftw!

Figure 2: File the meeting, create a task

Check the Backlog, Schedule the Task #

C-c a a brings up my agenda for the week. It’s empty right now, nothing scheduled. C-c a b brings up my backlog view. I’ll I see the “Learn Für Elise on piano” todo. Using GTD practice, I can either do this right away (2m rule, iirc) and make it DONE, move it to NEXT state, or realize it’s too big for a single task and break it up. #+CAPTION Agenda check

My Algorithm #

Now’s a good time to highlight the tasks states I use and my typical path through them.

Review Backlog, Schedule Work #

C-c a b into my backlog view, I realize my task is a project, too big on its own. (I try to visit the backlog at least once a day.) I’m going to set the task to BREAKDOWN-PLAN. (For example, I have to get a keyboard, buy the sheet music, hire a music teacher) and schedule the planning work for tomorrow.

In the backlog view cursor to the “TODO Learn Für Elise on piano”, use C-c C-t and choose the new state with b. Then, C-c C-s brings up the calendar. S-→ navigates the calendar. I’ll finish with C-c a a to double check my agenda.

Check Agenda, Plan Project #

Later, I’ll check my agenda, C-c a a, arrow down to the BREAKDOWN-PLAN task, hit ENTER to jump to the task. I’ll drop TODO entries right under that in the outline. I’ll change that BREAKDOWN-PLAN state to PLANNED, then C-x C-s to save.

Refile Into Projects File, Set Deadlines, Tee up Tasks #

Refile is the gem of Org-mode. I don’t want to track and annotate my project in my meetings folder, that’s not the way. I’m going to move the whole project outline to my projects folder.

C-x C-f meetings.org to open my meetings file, arrow to the PLANNED project, and C-c C-w to invoke Org-mode refile.

Prep and Schedule my Backlog #

Next, I’ll set deadlines and move tasks to NEXT state. C-c a b to the backlog, C-c C-t n for NEXT state and C-c C-d to set deadlines, C-c C-s for scheduled dates. Then I hand edit the “Practice Weekly” task scheduled date for a 1 week repeated task. (Either you love text files, or you don’t.)

Finally I’ll take some historical notes about Für Elise and put a link to those notes into the project outline. I open a reference note with C-c c n and save it with C-u C-u C-c C-c. The template asks for a title, then I can tap in text. I’ve bound C-c l to save an “anchor link” at the current point, and can then open projects.org and use C-c C-l to paste it in.

Features, Features, and more Features #

Emacs Org-mode has a dizzying array of features and this walk-through is only meant to capture the essence of how I org. I don’t use all of these, but for reference, here goes…

And of course, we’re talking Emacs here. If you can code it in Elisp, you can do it.