Published: May 06, 2022 • Updated: September 14, 2023 • 2 min read
Great programmers can be great because they are fast.
I’ve sunk a lot of time into being fast 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 dozens of times. Why? Because I want to be a fast programmer.
In this post, I’ll explain why I think being fast at programming is a worthy goal.
What is fast? Ben Orenstein once said that the ideal of text editing should be zero friction between thought and code on the screen. You think it, and it’s correctly on the screen. That’s the fast I’m referring to.
I do! I want to save my mind for hard problems.
Programming is a resource-intensive activity. We’re juggling multiple abstractions. We built these abstractions with hard work, and they are houses of cards in the wind. It takes effort to keep that house standing, and every bit of brain we devote to anything else, like how many milliseconds it takes a 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-quality guitar solo the first or second 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. They had some base talent, typically. 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, and we can be that fast, too.
As a caveat, I think there’s a terminal velocity to programming, a fast speed that most people can’t and shouldn’t try to surpass. You can do it in most text editors and most languages.
Great programmers can be great because they are fast. Be fast, and be great!
Thanks to Justin Sandercoe for helping me realize this mental model.↩
What are your thoughts on this? Let me know!
Join 100+ engineers who subscribe for advice, commentary, and technical deep-dives into the world of software.