Editors, or The Tools of my Trade
6 Dec 2018
I spend a fair portion of every day writing programs. As with all professions, using the right tools makes a huge difference in my productivity and general happiness. Having good tools helps me keep my gumption up.
One of my favorite books is Zen and the Art of Motorcycle Maintenance. Contrary to what the title suggests, this book is actually not about motorcycles. It’s about a lot of things; one topic is about tools and caring about your trade.
… By far the most frustrating gumption trap is inadequate tools. Nothing’s quite so demoralizing as a tool hang-up. Buy good tools as you can afford them and you’ll never regret it.(ibid. p.g. 291)
For me, my most important tool is my text editor: manipulating source code is what I spend ALL DAY doing. I’ve selected Emacs as my primary text editor.
Lots of programmers use what’s called an IDE If programming were cooking, then an IDE would be a knife that has a sink, a strainer, and a toaster-oven built into it.
I find IDE’s visually distracting. Everything is done with buttons that you click. Emacs has so much more screen devoted to content.
Emacs and Vim do have steeper learning curves. This is in part because the absence buttons make the features only discoverable via manuals. When working with an IDE, the presense of buttons hints at the existence of certain features.
I find it a shame when people don’t read, prefering a video tutorial or the like. Emacs’s features are very discoverable, but not in the way most people are used to. The apropos-function
command is terribly useful—if you think a certain command should exist, searching all available function names for a particular string has helped me find both what I’ve gone looking for, and what I didn’t know I wanted!
The advantage to using keyboard only navigation is that hundreds of commands are immediately available all the time, without having to dig through menus or such. It takes me the same amount of time to access complicated commands as it does moving around a file.
Again, from Zen and the Art of Motorcycle Maintenance:
…One of the first warning signs of impatience is frustration at not being able to lay your hand on the tool you need right away.(ibid. p.g. 286)
Moving a mouse takes me out of my flow, which slows me down and leads to gumption traps. If something takes longer, I’m more reluctant to do it. That means my productivity drops.
Now, you might have used a word processor for text editing all your life. Or perhaps you’re comfortable with your IDE. I encourage you to stretch beyond what you’re comfortable with, and learn Emacs. An investment in a powerful text editor will change how you consider how you program. Editing will become more fluid, and the barrier of buttons and menus will fade away.
Learning Emacs #
There is an index of learning resources here. If you’re just looking for a cheat sheet, check this link out. Also, see my cheat sheet. (I update this one occasionally.)
If you’re coming from an IDE and miss feature X, you might be able to find the corresponding Emacs feature here.
Picture Credit #
I found this via a Google Image search; the origional file came from this blog post, which I think resonates with mine quite well.