Hashrocket is known as a Vim shop; what does that mean?
When visitors learn Hashrocket is a "100% Vim shop", questions follow:
- Does everyone use Vim?
- Is Vim mandatory at Hashrocket?
- Why Vim?
These are fair, and I admit that from the outside, our company's
preference for Vim might seem unusual.
When we evangelize Vim to the development
world, via the Vim Chicago Meetup and
others, the questions become more acute. In a recent
talk I tried to sell Vim to
React.js developers. I feel obligated to have compelling, succinct
answers on hand.
I'll tackle this subject in three parts: why Hashrocket uses Vim, what
Vim is, and why we think every developer should try Vim. Few subjects
are as contentious in the development world as text editors. Whatever you use,
learn and make it your own. I hope to simply add Vim to the list of things
willing to consider, if it's not there already.
Hashrocket + Vim
According to Hashrocket lore, Vim was brought to our team by an early
Hashrocket employee, Tim Pope. Tim is the author of many widely used Vim
plugins. His passion catalyzed a shift from the editor of the day, TextMate,
toward its retro predecessor.
We are known as a Vim shop; what does that mean? It means that everybody
who works at Hashrocket either is or becomes a Vim expert. Vim isn't required
for our job applicants, but it doesn't hurt and can be an impressive data point
when used well.
Who cares what tools people use? Because we pair program most of the time. People can and do
prefer other editors, but when client code is being written involving almost
any two developers on our team, Vim is the shared workbench. In a profession of nonstop decision making, it's one less to make.
Our passion translates into sponsorship of the Vim Chicago
Meetup. We meet on the third Tuesday of
the month for long form presentations, lightning talks,
and hack nights.
Let's backtrack: what is Vim?
What is Vim?
According to its website, Vim is:
A FOSS advanced text editor released by Bram Moolenaar in 1991. Based in
the Vi text editor.
Vim has three facets that make it stand out. It is:
- Highly configurable.
- Legendarily challenging.
Let's explore each in greater detail.
Vim is Modal
Modality was Vim's big idea. To paraphrase my coworker Chris Erin, developers
spend more time reading code than writing it. Thus, an editor should be
optimized for what we do most often.
Your mileage may vary; I feel that I spend, on a tough bug, maybe ten minutes
reading code for every one minute that I spend writing it. Most text editors
are optimized for writing, so the easiest thing to do is the thing I do the
Vim is Highly Configurable
Vim has many paths to customization:
- Settings (via your
- Mappings (such as
Each of these could fill a book on its own. Customization is a feature of most
text editors, but the vibrant OSS ecosystem and bottomless customizability of
Vim is unmatched.
Vim is Legendarily Challenging
Vim is perceived as an editor where the "basics are hard", and I don't
disagree, at first. See 'How to exit the Vim
a trivial question with over 1 million views on Stack Overflow. This is the
so-called 'vertical learning curve'; it's real and every developer who uses Vim
to confront it.
There a lot of potential answers to this question: Vim's speed, wide adoption,
and depth are all attractive. For me, the best argument is
Vim is a blank, endlessly configurable slate. It's written in a language called
VimScript, which itself has plenty of dark caverns you can spelunk to your
heart's content. The vibrant OSS community behind Vim means it's constantly
rising to every development challenge that appears. A developer's Vim setup
is a reflection of the things they value, as personal as a fingerprint.
There are a lot of other reasons to consider, and if you come to Vim Chicago
Meetup, you'll be exposed to and able to
offer more of them.
I hope this post has helped give some insight into what Vim means to Hashrocket. If you come pair with us, prepare to learn some new Vim tricks,
and teach us some, too.
Photo credit: https://unsplash.com/photos/w5inNVfSyNU