lucaswadedavis / reading-list

Personal Reading List
18 stars 1 forks source link

VIM Pays Excellent Dividends: Learn it early if you can #20

Open lucaswadedavis opened 7 years ago

lucaswadedavis commented 7 years ago

VIM Pays Excellent Dividends: Learn it early, if you can

http://ift.tt/2l51Va4


VIM Pays Excellent Dividends

Learn it early, if you can.

VIM is stunningly unsexy.

Sometimes, it grants you geek cred. A passerby looks over your shoulder and thinks, “oh, she’s using VIM and the Greybeard’s do as well, so she must know what she’s doing!” But, credibility does not compensate for the much-lamented (and exaggerated) steep learning curve. So, people don’t learn VIM. Or, at least, when I was younger, I didn’t learn it. It seemed like a waste of time.

Instead, I learned programming languages. Lots of them. There were so many novel paradigms and patterns to learn — so many dopamine hits! “Whoa, Forth is so weird!” “My god, LISP is mind-blowing!” “With Erlang, I can scale perfectly!” “Hrm, monads in Haskell must be magic, look at all these tutorials!” “Oh em gee, I can use any pattern I want in Scala!” Basically, any time I came across a cool Slashdot or HN post on some language or framework that only existed in some language, I had to learn it.

Now, it’s not like exposure to lots of different languages and patterns is a waste of time. Learning to program well is similar to learning chess: you need to see lots and lots of board configurations while reasoning through moves that let you accomplish your goals.[1] A commitment to learning grants you a reservoir of prior bitsweat to draw on in the future.[2] That’s valuable.

But, mundane work dominates the practice of programming. Most of the time, you shouldn’t use the Best Paradigm (TM) that exists. You should use the one that is good enough and works well in the language you are using.[3] Clever only gets you geek cred; conventions let you communicate well, both to others and to yourself six months later. That really cool pattern you learned that one time? You may never use it, and even if you do, the marginal gain probably won’t be that impressive.

Meanwhile, you could have learned VIM.[4] Being conservative, let’s say it makes you 5% more productive. More specifically — once you’re brain maps the keystrokes to muscle memory — it makes you 5% faster at completing the mundane tasks…the ones which dominate programming. That added productivity snowballs. It’s an extra twenty minutes a day to build or explore (or learn), that used to go to copy/paste-like operations.

And, the ironic thing, at least for me?

Ignoring the pure pleasure of play, I learned languages semi-consciously hoping that I would find The One that would let me translate my thoughts into digital reality, immediately. Even today, I feel bottlenecked by this brutish interface — banging on keys trying to render my imagination concrete. But, for now, it’s the best we can do. And, I can translate my thoughts more rapidly…

…with smart editors, like VIM.


[1] Says the guy who never properly learned to play chess…

[2] I’ve said this before — I’m wildly envious of Jeremy Daer’s handle.

[3] I think this explains Scala well. Initially, Scala feels like a language without limitations. You expect magic. Then, you use it for a while. Eventually, it feels like quicksand. Meanwhile, a language like Python — to those exposed to lots of languages — initially feels too restrained. Then, you use it for a while. Eventually, it feels like your closest and most reliable friend. Constraints are liberating.

[4] Or, emacs. Or, really, any other tool that you 1) use constantly; 2) is almost universally applicable; and, 3) makes you more productive.





Technology

via Hacker News http://ift.tt/YV9WJO

February 27, 2017 at 04:43AM