Lately - for the past ten years or so - I am of the impression that many of today’s coders and software developers have an unhealthy obsession with GUIs (Graphical User Interfaces) and very little knowledge of the raw keyboard power available to them at their fingertips. I often observe them meticulously navigating through a maze of menus, opening windows, and clicking buttons with a balletic precision that would have Steve Jobs and Xerox PARC researchers applauding if they were to see it. But at the same time, it’s an inanely slow method of using a development environment, and it’s hard to shake off a certain feeling of despair; a kind of bleak future in which our noble code warriors have been reduced to becoming mere mouse clickers.

I am not “anti-mouse” - that little peripheral has its place in our digital ecosystem - but I am vehemently arguing against an over-reliance on it, especially in the world of software development where the keyboard, text editor shortcuts, and the CLI (command-line interface) can be your Excalibur if only you’d take the time to pull it from its stone and learn how to wield it. Some of you may have lost your way, but redemption is just a few keyboard taps away.

A coder working with lightning coming out of their keyboard

Command Line Interfaces: Back to the Future

Before shiny GUIs were commonplace for software, developers had a deep love affair with CLIs. They were the bread and butter of programming, and there’s something about using a CLI that can encourage a more fundamental understanding of what you’re doing.

In a CLI, there’s no veneer of buttons and icons to abstract you from your goal. Copy and pasting can be done with a few keystrokes in a second or two. Creating a new Git branch is just as quick and forces you to better understand the command you’re using, what a branch is, and why you’re creating it (an important, often overlooked, learning step to properly use Git). It’s like having a direct line to the core of your software - no middleman, no fancy graphics, just you and your code.

And then there’s the sheer power and speed of the CLI. A decent typist can reach speeds of 30-60 words per minute; with the direct nature of commands and the ability to quickly chain multiple actions together, the speed gains of using the keyboard compared to clicking around in a GUI are significant tallied up after a day’s work.

Text Editors: The Eternal Conflict

Ah, the perennial Vim versus Emacs debate, a feud seemingly as old as time itself and perhaps one of the most heated topics in programmer folklore. Regarding text editors, the choice between Vim and Emacs - and their lasting legacy - often boils down to the efficiency and speed they offer through their powerful keyboard shortcuts. Vim’s modal editing and Emacs’ customizable keybindings both provide ways to keep your fingers firmly on the keyboard, flying through lines of code with minimal effort. Vim and Emacs both represent the epitome of what one can achieve with a mastery of keyboard controls. Their popularity among developers, old and new, is a testament to the potential for speed and efficiency inherent in keyboard-centric computing. It doesn’t matter whether you’re a Vim zealot or an Emacs evangelist - what matters is that you’re embracing the raw, unadulterated power of the keyboard. You can gain similar power with your text editor or IDE of choice.

Keyboard Shortcuts: The Unsung Heroes

Then we have the criminally underrated keyboard shortcuts in GUI applications. They are the ’triple espresso’ of your IDE experience. Once you’ve sipped this energetic brew, there’s no turning back.

Have you ever watched an expert user work in Vim, Visual Studio Code, or JetBrains Rider? It’s a bit like watching a grandmaster at chess: there’s a minimal amount of visible action, but a hell of a lot happening beneath the surface. Instead of slow mouse-clicking, their hands fly over the keyboard like an inspired pianist, making the IDE dance to their tunes.

Keyboard shortcuts are designed to enhance your coding efficiency by leaps and bounds. Why? Because it’s all about keeping your hands on the home row. With keyboard shortcuts, your hands rarely need to leave the keyboard, and the time saved from not having to switch between a mouse and keyboard accumulates quickly over the course of a day.

Mind Over Matter: Git Branching

This brings me to a particular point that I believe to be of crucial importance and possibly what led me to write this essay, even though plenty of others have tread this ground before me: using Git. Many visual tools allow you to see your Git branches as pretty trees or graphs, and while these might have their use for specific situations, they often detract from a proper understanding of what Git is all about.

Visualizing Git branching in your head allows you to build a mental model of your repository. You get a better grasp of how changes flow, and how commits are structured, which ultimately helps you reason better about your code. This might sound challenging, but the reward in terms of understanding and speed is well worth the initial discomfort. It’s something I challenge all of my teams to adopt.

Rise Up, Embrace the Keyboard

The keyboard is your weapon, your tool, your friend. Embrace it. Memorize your shortcuts. Learn to love the CLI. Do these things, and you’ll find that the speed and power of your workflow will increase exponentially. I urge you to embrace this “call to fingers”. It is time for us to step away from the oversimplified, dumbed-down interfaces of GUIs and return to the raw power and control of the keyboard. The truth is that most of the tools we need to excel at our jobs are already at our fingertips. We need only to use them.

Stop spending half your available coding time wrestling with a mouse. JUST USE THE DAMN KEYBOARD! You will become a better coder. You will become a more efficient worker. Your code, and your future self, will thank you.