Finding Flow in Your Dev Environment
Before my last day at LinkedIn I went to the Apple store in Grand Central to buy a new laptop. In my five years as a professional software developer I never had a personal laptop.
I purchased a 15 inch MacBook pro with a 2.6GHZ 6-Core processor and 512 GB of storage.
I already have a dotfiles repository so I can setup a new computer quickly and get back to work.
However, I didn’t just want to setup my old environment on my new computer. I no longer needed to optimize my setup for the work I did at LinkedIn. I also had time and space to think about what about my setup was working well and what needed improvement.
I’ve read numerous articles about saving keystrokes. The author counts the number of minutes you could save a day by doing a keyboard shortcut and tell you how many hours (or days) you could save in a year. This focus on efficiency didn’t resonate with me. I never thought my main bottleneck as a developer was using a mouse or needing to type a few extra characters.
Max Kanat-Alexander has a great blog post called The Secret of Fast Programming: Stop Thinking. I have several ways to avoid “stopping to think” while I code:
- reading and thoroughily understanding the relevant documentation
- for a particular subtask I can think through a potential solution and give it an estimate
- thinking through the best order to tackle subtasks
- thinking through how I will divide my larger task into smaller code reviews
When I was at LinkedIn these kinds of tasks happened at my laptop rather than at the iMac at my desk. Being on my laptop put me in a mindset more conducive to thinking, reading code and planning rather than hardcore development.
Once I’m ready to code it is important that interactions with my development environment feel joyful and seamless. I currently use the AdventureTime color scheme for iTerm just because it makes me happy. Using my tools more efficiently also makes me feel powerful. I get excited when I discover a better or faster way to do something.
Recent changes that worked well for me:
- Using custom keyboard shortcuts in BetterTouchTool to open my most used applications
Felix Krause has an easy to follow blog post on how to do this. I follow the pattern of making the shortcut ⌥ plus the first letter of the application name. To open Xcode I type ⌥ x.
- Reading the Highlights for New Users page in the iTerm2 Documentation
I had been using iTerm for years without spending time digging into its features. For example, I didn’t know that that iTerm already had Notification Center support. I had been using a tool called noti to do the same thing. You should definitely still check out noti if you want to to send notifications to other services like Slack.
Exposé Tabs and the Toolbelt were two unfamilar features I plan to start using more.
iTerm has many other cool power user features but many of them are less relevant to me as an iOS developer.
- Trying out Moom
I had been using a window manager called Magnet for awhile but never got around to learning any of the keyboard shortcuts. One thing I like about Moom is that it can show the keyboard shortcuts cheatsheet while you are using it. The UI feels like a natural way to learn the keyboard shortcuts.
I care about feeling calm, focused and powerful when using my computer. These tools, along with many others, help me achieve that.