We all use dozens of pieces of software a day - email clients, web browser, email clients inside web browsers. Cameras and chat, digital art tools and spreadsheets. We switch between them dozens of times, and when we really get into a task, when can sometimes achieve a state of flow, a state of satisfying and effective effort that lets us accomplish more than we thought and enjoy it all the way.

But then you add another layer to your Photoshop project, or attach a picture to an email. The beachball starts spinning, the text box gets laggy, and you start thinking about opening that Twitter tab again.

This is one of the reasons I still use vim after all these years. Even in large software projects with plugins for syntax highlighting, autocomplete and build-on-save, the navigation and input remain quick. But not always - vim on my home computer feels faster and more responsive than my work computer, because I’m asking it to do less. When compared to a product like IntelliJ/GoLand, it’s like a car against a horse. Very few editors are both as fast and as capable, and I can thereby keep going as long as the work requires.

Every time your software lags, it’s a chance for your user to lose their state. Every time you make them move the mouse to open a menu, they have to go away from their task. Put your menus in context with the work, not in a toolbar. Make your software as quick and as smooth as possible. This is what makes people love software, not flashy features.