*CTRL-O*

A Place for Everything, Everything in Its Place

Recently, I was reading an excerpt from The Technique of Getting Things Done (1947) by Donald Laird.

The watch repairman always sets his tools in the same location; he does not waste time removing the magnifying lens from his eye to hunt for the one he needs next. He works, rather than plays hide-and-seek with his equipment. - The Technique of Getting Things Done

Just as the watch repairman, a software engineer needs know where her tools are, and how to use them effectively. The bottleneck for her productivity should be the thought process and not really the speed at which she uses her tools.

Sometimes, my PR reviewer makes a comment but he warns that if the change is something that would take time I shouldn’t do it. Often times, I am able to make the change faster than we can have that conversation. I know my tools, and editing, opening, deleting, moving files is a breeze. This makes it more fun for me to work because I spend time on solving the problem and not really using the tools.

I work on train, bus, or plane by the hour without ever having to hunt for a thing. Habit instantly produces whatever I need, and habit puts it back in its proper place as soon as I am finished with it. Other passengers may think I am scratching fleas as I reach for and return things to the various sectors of my anatomy. - The Technique of Getting Things Done

I’m a big shell user, I love Vim, and command line tools. For my work, I have to switch between Windows and macOS sometimes. Since I spent most of my time on macOS, whenever I switched to Windows, I would dread my experience even though I’m doing the same job. In order to fix that, I invested some time into optimizing my tools so that I can rely on my muscle memory regardless If I’m on Windows or macOS. When I do the switch, I rarely recognize the OS I’m using. I just focus on the problem I’m trying to resolve.

Such organization for work is the simplest and perhaps the basic habit in getting more things done with less effort. It is ideal for the lazy person who hates to be annoyed by details. - The Technique of Getting Things Done

Bram Moolenaar has a great article titled Seven Habits of Effective Text Editing. The examples he uses are specific to Vim, but they could be applied to any editor that you might be using.

You can think of a repetitive task, find a nice solution for it and after the weekend you forgot how you did it. That doesn’t work. You will have to repeat the solution until your fingers do it automatically. Only then will you reach the efficiency you need. Don’t try to learn too many things at once. But doing a few at the same time will work well. - Seven Habits of Effective Text Editing

Find the workflow that you repeat most often, and optimize it to make it invisible so you don’t even realize how you are achieving your goal, it happens at the speed of thought.

As an example, here’s what I optimized my workflow for:

  • Thinking, coming up with a hypothesis, implementing a solution, verifying the solution.

    Everything below this is there so it enables me to do this.

  • Reading code.
  • Moving around in a code base.
  • Reading documentation.
  • Opening files, understanding folder structure of the project I’m working on.
  • Editing a file.
  • Refactoring, finding and replacing code.
  • Gathering information, e.g where else is this code used and in what context.
  • Compiling code and navigating to build errors.
  • Testing code, debugging.

I can do all these tasks but with slightly different tools by making my OS my IDE.