, I listened to Things Your Editor Should Have with Amir Rajan on the Rubber Duck Dev Show.
Amir Rajan outlined four high-level pillars for his software development tools. He needs to be able to…
- See the function called when I press a key.
- Run the function without pressing the key.
- Trivially create my own functions.
- See the source code for any function.
I have previously written about the Principles of My Text Editor and Revisiting the Principles of My Text Editor. And when I heard Amir’s four points I nodded in deep understanding.
As I grow in experience, understanding, and processes, I want my tools to grow with me. And as my growth is unique to myself, there’s an implication that I should be able to extend the tools to match my frame.
I had spent years with Textmate 📖, Sublime Text 📖, and Atom 📖; and as Atom reached end of life, I explored Vim 📖 and Visual Studio Code (VS Code 📖). I wrote two “plugins” for Atom:
And forked a language markdown package to add some Hugo 📖 functionality. The process for writing those packages felt obtuse and cumbersome.
I contrast that to my three years working in Emacs 📖. Prior to adopting Emacs, I hadn’t programmed in Lisp 📖 and as of , I have defined 231 functions in my Emacs configuration.
rg "\((cl-)?defun" | wc in the root directory of my Emacs configuration.
These functions help me, in small ways, move fluidly in my day to day writing, reading, coding, and testing.
Looking at the Time Investment
Later in the interview the hosts wonder about the time investment of learning a tool versus the pay-off. I disagree with Amir’s sentiment: “If you’re career trajectory is you want to do 10 years of development and then go into lead and management, then this it’s not worth the investment.”
From where I sit, I can easily say Emacs has been worth my investment; and will continue to pay dividends for me for years to come. Because I intend to continue writing and reading.
In fact, if I were coding less, I think Emacs would become even more valuable. I think about Emacs for Writers; when Jay Dixit, a journalist, presented on Emacs for writing. Watching that, I took notes and sharpened my tools. After watching that recorded meetup, I setup my abbrev_defs to improve my auto-correction.
I write so many things in Org-Mode 📖 and use the multitude of export functions to get the right format for my audience. Using my jf/formatted-copy-org-to-html with surprising regularity, as I write notes in Emacs and then paste them into Slack.
Advice for Junior Developers
This is some great advice:
When you’re a junior developer, you don’t have the experience and intuition to make good decisions about how your code needs to be written…Do you invest in design patterns, or elsewhere? You want to invest in your fundamentals.
The fundamentals you have in your control is typing speed; being able to quickly go to code and read it; those mechanical functions.
You’re in your exploration phase. Don’t commit to VS Code; do Vim, do Sublime Text…try it all.
I really appreciate Amir’s four pillars enumeration. It resonates with me and draws into focus what I appreciate about Emacs and did not appreciate about VS Code when I last explored using it.
My advice is to broaden your time-frame of consideration for a “text editor”; in my experience I have bounced between developer, manager, and team lead. One constant has been my need to write. As a developer, I’m often writing code. As a manager, I’m more often writing documents. As a lead, I’m writing reviews, technical documents, and tasks breakdowns.
, I had breakfast with my dad. He’s one who’s always loved working in the shop; building things. We got to talking about the tools of our trade. And how I use my tools to make more tools.
He nodded in understanding. Knowing what your tools can do, and using them to make more tools, is a virtuous cycle.