First, whoever you are, you should remap your Caps-Locks key to any other useful key. Recommended Esc or Ctrl. Should be a default IMO.
TLDR: Emacs is a very customizable working environment with time tested features and great extensiblity while also forcing an upfront learning curve that can be hard to invest in. It forces you to learn the power of the editor(environment) to use where other tools are very capable too if you dig into them. Learning Emacs can potentially save a lot of other tooling fatigue issues.
Note: I am not a writer so grant some leeway on the grammar/styling or whatever a pro writer would do that I missed, I’m trying. These are all my thoughts aggregated from various resources, experience, opinion, and probably lack of knowledge as there's so much to learn! Let me know what I missed!
Why did I write this?
I think about editors a lot. I think about efficiency and productivity way to much. Probably to the detriment of actually being productive. Having to many thoughts with no one to talk to...
This story will go through my path as a developing programmer and how I got to Emacs(Spacemacs) and my thoughts on it.
I started programming 1.5 years ago and am currently looking for a job in New Mexico after attending a coding boot camp for 6 months. I contemplated what my interests were and what I wanted to do for a long running career and have a long history using computers. So I vetted and aggregated learning resources to avoid fumbling around with what learn next at any stage of development. To test my interest in programming I went through the highly touted Harvard CS50 course and loved it! I choose to start with Python as a language.
How does this have anything to do with editors? Well, I researched editors and tried a lot of them! At one point I had Sublime Text 3, Pycharm, IDEA, Atom, VSCode, Emacs, Vim(with someone else's config setup), Geany, Notepad++(on windows dual boot), Eclipse, Brackets, and Netbeans ... all installed. I did open and get all of them running in some form or another but, admittedly, I went for high review editors hoping some vetting of good resources had been done by the community. I have put time into Atom, VSCode, Pycharm, Sublime Text 3, Vim, and Spacemacs. Currently I try to code within Spacemacs and run VSCode or PyCharm in the background for visual debugging because I am the more comfortable and productive using them for now.
So I started coding with Sublime Text 3 as it was recommended first (actually python IDLE =/ ) and had no clue what the other options, features, and differences were with editors. So off exploring I went. Most GUI editors have been mostly the same and very good with their own set of pros/cons. I looked into Vim and after getting more familiar with Python, started using it. Vim is awesome as an editor! It really opened my eyes to powerful editing that I had missed trying different GUIs(not for lack of good editing shortcuts rather no forced need to learn them). It also really sparked the questions of, “If this exists, are there other eye opening tools?” Using Vim also made me notice how many things supports vims hotkeys and crave that far reaching utility.
That search invariable ends up leading to Emacs, the most non-user friendly, standoffish, long-living, and infamous tool you can find. It took a lot of digging to answer, “Why learn and use Emacs?” The tipping point was this video youtube.com/watch?v=JWD1Fpdd4Pc. It left me asking to many questions that have no real answers when googled other than I would have to try Emacs myself. And here I am a month and a half later, using Spacemacs casually as I’m ⅓ as productive, highly frustrated when I kill/close/lose a buffer(if that’s even what’s happening?), and turn to other tools/editors to ease into this transition that I’m so obsessed with! Thank you stubbornness?
OK, I have been lumping Emacs in with Editors and that needs clearing up. If the adage “Emacs is an great OS without a good editor…”(how ever the saying goes) than let me define editor and/or OS. I have almost never used an editor in isolation and always with other tooling. Vim and Tmux is common, I us VSCode with the built in terminal along with another terminal for other commands and file traversing which in turn has Midnight commander and ZSH and...(I know I can have multiple terminals in Code), and a browser is always open. My use of the word editor here is more connotative toward the entire environment that I wrap the editor in. This is important to denote for two reasons. One, it creates a better comparison. And two, you spend a lot of time learning tooling to use you editor of choice efficiently within that tooling environment. The difference is presentation and discover-ability and where that learning curve takes place.
This is where Spacemacs stepped in...eventually. Opening vanilla Emacs and going through the tutorial left me wondering how to put the pieces together and, while more familiar, guessing at the correct commands just to get started. It felt overwhelming as I sat staring at the open prompt asking myself, “Now what do I do?” Highlighting that feeling when you get a deck of cards with the idea your going to learn magic tricks with them and blow your own self away! I new learning everything (or anything) would be slow and incremental (did the Vim tutorial, steps 1-6, 50 times and the whole things 1 time). I just wanted to check out Org-mode and Magit, maybe figure this Tramp thing out!
Google-fu said that I needed to learn E-Lisp and install plugins/layers and just us M-x butterfly or something. I searched for some videos for a general workflow to template off of. I looked at Evil-mode, Doom-emacs, Spacemacs and Prelude and had no idea where to begin again until it became clear that I just needed to learn by doing and find an easy way to start off. Spacemacs offered an out of the box experience with visual command input guidance! Also key commands I was familiar with as well as space-bar as a default. It also had some easy documentation for adding layers(which is pretty easy without Spacemacs as it turns out!).
Hopefully I have passed some of the harder parts of getting started and have hope of learning E-lisp and building out a config of my own. It is worth noting that there is a smaller community which means less quality resources. It’s pretty easy to find all the answers to your issues in, say, Atom or even just more help since there’s way more people using it.
Overall I am still obsessed with Emacs and how/when I can get productivity out of it. Its been useful to see how configurable it is and how that translates to other software, how I come to expect more from it! What’s this a closing line with no solid conclusion? I've been using Emacs for a month and half, give me a few more years! How did I even get here?
P.S. This was wrote in google docs where all I could think about was the blasphemy of not using org-mode.
😂 Thank you for sharing. There is alot to discover about Emacs for sure. Just started messing with magit about a half hour ago. I like the the informative popups. Still so much to learn. Seems worth it though.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.