Published: May 06, 2022 • 2 min read
Great programmers can be great because they are fast.
I’ve sunk a lot of time into being proficient at Vim. I’ve used it as my text editor for eight years, co-organized a Vim Meetup, and I’ve written about Vim on this blog and Hashrocket TIL. Why do I use Vim? Because I want to be a fast programmer. In this post, I’ll explain why I think being fast is a worthy goal.
In Why Vim, I argued that an expert Sublime Text user can be just as fast as a Vim user. I stand by this argument, with the caveat that I have never been a Sublime Text user specifically. My point is that I think there’s a terminal velocity to programming, a fast speed that most people can’t and shouldn’t try to surpass. And I believe it can be achieved in, sigh, editors besides Vim.
What is fast? Ben Orenstein once said that the goal of text editing should be zero friction between thought and code on the screen. That’s the fast I’m referring to.
Who cares? I do, because I want to save my mind for hard problems. Programming is a resource-intensive activity. Every thought we think that isn’t about a silicon switch flipping is an abstraction. You built that abstraction with hard work, and it’s a house of cards in the wind. It takes effort to keep that house standing, and every bit of brain you devote to anything else, like how many milliseconds it takes your wireless mouse to wake, is wasteful. Great programmers have incrementally freed up as many resources as possible to focus on hard problems.
My mental model for fast programming is expert guitar playing1. It’s understood that great guitar players can drop a record-worthy guitar solo the first time hearing a song. But how? Were they born with extraordinary ability and creativity?
Read their bios, and the answer is always no. They loved to play, sure. But they also invested an absurd amount of time into that skill set. They listened to songs and learned to play them perfectly. As in, sitting by a radio or with a finger on a record or pause button— painstaking work. Through this process, they became musically prolific and technically proficient. Only when they approached that level of mastery where they could play anything did their unique artistry appear. They got fast first.
As programmers, our art is writing software. That’s why I say that great programmers can be great because they are fast. Be fast, be great.
Thanks to Justin Sandercoe for helping me realize this mental model.↩
Get better at programming by learning with me. Subscribe to my newsletter for weekly ideas, creations, and curated resources from across the world of programming. Join me today!