Why I Use Emacs
Table of Contents
I work on a computer all day, every day. My work involves reading, writing, and editing source code. I am not the most naturally talented engineer, so I must make up for it in other areas. The area I have chosen is tooling. I strongly believe in this approach and encourage all young engineers, even those much brighter than I am, to dive headfirst into a niche editor like Emacs or Neovim. It will quickly become apparent that you can run circles around the average software developer.
I once read a comment on Hacker News stating that learning to master one of these editors requires a shift in your general mindset from that of a software consumer to that of a software producer. The reality of relying on open-source software, or truly any software, is that bugs are inevitable. When your ability to work depends on a piece of software, you have little choice but to investigate the cause of your issues rather than throw up your hands and ask someone else to fix them. The advantage of open-source software is that you have the ability to read the source code and make at least some attempt to debug the issue yourself.
This mindset shift is most apparent when I compare myself to my peers. It has also allowed me to contribute back to the community that provided me with such an amazing tool; see my Doom Emacs bugfix.
Day-to-Day Emacs Benefits
Create and edit pull requests using Magit Forge
Org Mode
REST Client
Project Management
Buffer Management
Keyboard Navigation
I am an Evil user who occasionally experiments with becoming “holy” again by using the default keybindings, but I cannot quite commit. I started using Vim in college, and the modal editing experience is deeply ingrained at this point. No matter which keybindings you choose, navigating text using only the keyboard will make you look like you have a clue about what you are doing. Emacs packages like avy and swiper make you a wizard. It will become difficult to watch your peers use their computers when you attempt to help them with an issue.
For me, writing good code is like writing an essay because I need to iterate on it. My first attempt ought to be heavily edited and refactored. In the real world, we deal with deadlines alongside non-technical product managers or business folks who do not give a damn whether your code is elegant, maintainable, or generic. They certainly do not care about the concept of technical debt. Therefore, it is essential that I can iterate fast. Mastering an editor is a critical piece of this puzzle.
My Take on Emacs Versus Neovim
Emacs’s biggest weakness for someone like me is Emacs Lisp. It is a language I will probably never master as long as I have a day job. I occasionally worry that Emacs might die out one day due to a lack of popularity, so I work on my Neovim setup to prepare for the inevitable. That said, there is nothing like Emacs in terms of integration. It is difficult to put into exact words, so I recommend simply trying it. Even when I watch people on YouTube use their highly customized Neovim setups (which are admittedly very cool), there are always a few little things that jump out as dealbreakers. They still issue shell commands to interact with files, open dedicated REST clients, or use entirely separate programs like tmux to manage concurrent projects.