On why you should learn Emacs or Vim, as soon as you're comfortable with your first editor

AKA: How I learned to stop worrying and love Emacs, which is the bomb!

This post was originally a TweetStorm. You can see that Tweetstorm storified here

The Journey Awaits

You’re a newbie programmer. We all were once! You’re teaching yourself using one of the recommended programming learning platforms. I wrote about learning within Programming Platforms in my post titled, Thoughts on learning as a junior dev.

It feels like the time to enter the wild world of non-platform based coding environments. Starting a long loving relationship between your favorite Text Editor and You. You tackle a few tutorials.

Cat in Pink Wig Typing

This is great!
{Sublime Text||Atom||Brackets} is awesome.
Look at this slick new theme I’ve got, all these dope packages I’ve installed. I’m templating with Emmett. Linting like crazy.

You’ve got this covered. You feel at home in your text editor.

Now is the time to give your new friendly neighborhood in terminal editor a chance.

The Battle Begins

I’m not going to get into the battle of Vim versus Emacs. Let someone else fight that war. It’ll be better than Batman v. Superman at least.

So just choose one. How? Probably the one a peer is using and will happily teach you the way in.

![Rey is the Sht](https://fsmedia.imgix.net/32/53/89/e8/4399/43a2/8fda/387a67c6bc68/rey-finds-luke-skywalker.gif?dpr=1&auto=format&q=75 “Rey is the Sht”)

It’ll be a humbling start. You won’t know how to navigate or select things. The thing is…. There’s not really a cursor, no mouse. You’re stuck on the keyboard.

But don’t fret you’re going to level up.

You’ll go from not knowing how to quit the text editor

You quit Vim with :q, You quit Emacs with the not-included foot pedal and midi-keyboard

To being a keyboard wiz

And this kids is what your brain is like on Tmux

The Force Awakens

The reasons you’ll benefit from working with Vim or Emacs are as follows:

You probably didn’t know how badly that mouse & trackpad were holding you back. You should spend as much time on the keyboard as possible. It’ll become oh so evident how much you rely on them. You’ll see your shortcomings first hand.

There’s a pretty high learning curve. This probably isn’t an accurate description, but it’s worth considering.

Emacs: Upwards, not forward and always twirling, twirling, twirling towards freedom!

As you progress in learning your chosen editor you’ll start to notice where the navigation and keyboard skills you’ve picked up can be applied elsewhere. It’s fun to discover the numerous places where you can navigate with the ctrl+N,ctrl+P,ctrl+F, ctrl+B movement keys present in Emacs or the h,j,k,l movement keys in Vim.

You’ll get more intimately acquainted with your terminal. Rather than giving half your attention to your text editor and half to your terminal, all of your focus rests inside the terminal. Do you need to ssh into a box without a nice GUI? Sure no problem! Let’s open Vim or Emacs in the box and go at it.

Once the basics are embedded into your head, you’ll slowly gather speed. Now that you’re spending more time hands on keyboard, not on the track pad or mouse, your overall productivity has gone up.

Remember all those handy packages you were using. That sweet as theme. Those are available for Vim and Emacs. Slowly but surely you’ll add packages and tools back into your upgraded utility belt.

Then when you feel you’re comfortable with Vim or Emacs, the choice is up to you. At that point you can go back to your old text editor with these new found super powers. I’ve recently done this, returning to Atom. Stay with Vim or Emacs. Maybe you make the choice to move to another IDE like Eclipse, RubyMine, Webstorm, or IntelliJ. It’s about choosing the right tool for the project, for you, and for your workflow.

Why you should learn Vim or Emacs now - Machete Order

To recap, by diving into using Vim or Emacs early on, you’ll overcome that learning curve faster. No fear. I've made a terrible mistake

Do so for the following reasons:

  • Overall productivity increase as you won’t rely on the mouse or trackpad

  • Greater familiarity with your terminal

  • Portability of this knowledge to most any system (most have vim or emacs)

  • The capacity to use shortcuts or navigation from Emacs or Vim elsewhere

  • Knowing you’ve conquered one of those “good to have” Dev experiences and moving forward however you please

Go give one of them a try today.

Addendum: The Vim & Emacs Christmas Special - Tips & Tricks!

  1. Vim and Emacs have cool online and in-text editor tutorials.

    • Emacs has a tutorial within the text editor itself, you can access it by using the following hotkeys ctrl+h, t
    • Vim has a fun online tutorial called Vim Adventures
  2. Make your desktop background a cheatsheet of shortcuts and commands for your chosen editor to refer back to and learn

  3. Keep researching different commands with the help of your peers and the Internet.

  4. Disable your arrow keys when using either terminal (enable hard mode)

Classes in HTML & CSS (screencast)

This screencast talks about Classes and how we use them in HTML and CSS

Why I prefer soft talks and the hallway track at conferences

This post was originally a TweetStorm. You can see that Tweetstorm storified here

After RubyConf 2015, I was encouraged by Sarah Mei and Ernie Miller to write about my experience.

I left that conference, with feedback that I preferred the wetware, soft skill, and hallway tracks.

I can watch a “soft” talk and then go on to engage with others in the hallway track in a discussion of the questions or concepts posed.

Though I gain value from a hard or technical talk, the most I can use that as a start to a deeper conversation is “I liked that talk” or “I will use that technique later.”

Talks like Avdi Grimm’s at Lone Star Ruby, Sandi Metz’s at Keep Ruby Weird, and Carina Zona’s at Ruby Conf stay with me.

I still think about those talks. I’ve had further discussions about those talks. I refer to them in conversation with other people, devs & non-devs alike. Now this doesn’t mean that I don’t think you should sit in “hard” talks. If you do & they bolster you. You do you.

I’m talking about some level of ripple effect that occurs from a “soft” talk. It may not speed up your test suite. Yet, it might change how you write features, or how you test. Or more immediately, again, make you start conversations about the topic.

Additionally, I feel as if I leave “soft” talks with questions. Open questions, which propel me to chat with the speaker.

“Why did you say this?”

“What did you mean by that?”

Leading to, “Who are you eating dinner with?” or “Thank you, can I buy you a ☕🍻🍩?”

It helps foster a human connection that doesn’t always come from leaving with a mind full of code. Let’s say I leave and spend 6 hours building something in Padrino. Could I have spent those hours building something with someone?

If this is you though, scream it from on top of a mountain. Maybe take the time to ask, “Who wants to hack on Padrino and test suites for 4 hours at ___?”

So all I’m saying is, rethink avoiding those soft talks, because they may create conversations & friends you didn’t know you could.