How the Colemak layout distribution and a proper keyboard doubled my coding performance
Tags: keyboard, productivity, programming
Published: 2021-07-24 07:27:28

## Table of contents:

* [Introduction](#introduction)
* [The Colemak layout](#layout)
  - [Install instructions](#install)
* [Tools of the trade](#tools)
  - [Touchtyping](#touchtyping)
  - [Your keyboard](#keyboard)
* [Conclusions and final tips](#conclusions)
* [References](#references)

## Introduction<a name="introduction" />

As a developer, I stay long hours in front of a monitor and a keyboard. It's only natural that I want to optimize my workspace and the tools I use. One of those tools is the keyboard. And after experiencing some shoulder and back pain over time, and after seeing how optimizing my usage of the keyboard reduced dramatically this pain trust me: you REALLY want to optimize your usage of the keyboard. And not only that: **my typing speed and performance as a developer more than doubled** from how I worked before.

The classical [QWERTY](https://en.wikipedia.org/wiki/QWERTY) keyboard layout, as well as the staggered, row distribution of the keys date from the XIX century. It was designed to make people type faster with the old typewriters, which had physical limitations. These limitations do not apply anymore with modern computers, yet the layout is still the most mainstream layout that we can find. And not because it's good, but because it's just been with us for so long.

In this article I want to present you the Colemak layout and several recommendations about your keyboard and your typing style. Everything I comment in this article lead me to the coder typer I am today. It doesn't mean that the same will work for you, but there is a good chance it will as well.

## The Colemak layout<a name="layout" />

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpluclpnl5oexegp14sp.png) 

I'm not gonna go deep into the details of the layout (there are better pages suited for it, like [DreymaR's Big Bag of Kbd tricks](https://dreymar.colemak.org)), but basically this layout offers several serious advantages over QWERTY:

* Backspace on the Bloq Mayus key for easy reach of such a common key
* The most frequent letters of English A, R, S, T, and N, E, I, O are placed in the home row, easy to reach. Other most commonly used keys are also placed in a location which is easy to reach by the fingers, while less used keys stay the same.

When the letters you press the most are at a closer reach distance your fingers move less, and let you stay in a calm, comfortable position more often, which, even if you don't realize it over time, helps tremendously against most common illnesses derived from long ours in front of a keyboard: carpal tunnel syndrome, back and shoulder pain, wrist pain, fatigue, repetitive strain injury (RSI)...

Some claim that [Colemak is not the most efficient layout if you switch language](http://xahlee.info/kbd/dvorak_vs_colemak.html). But as a developer the language you will encounter most of the time regardless of your mother languange is English, so that's not a real issue.

### Install instructions<a name="install" />

The default Colemak that is shipped with the system is good, but the mod DH variation is way, way better in terms of speed (and they only change a couple of keys). Follow the install instructions available on this link, and reach the "DOWNLOAD AND INSTALL" section: https://forum.colemak.com/topic/1438-dreymars-big-bag-of-keyboard-tricks-linuxxkb-files-included/

## Tools of the trade<a name="tools" />

While switching to Colemak will definitely improve your typing performance, this improvement is crippled and slowed down without the right tools for the job. So besides changing the layout, you need as well to:

* Master [touchtyping](#touchtyping)
* Have an appropriate [keyboard](#keyboard)

### Touchtyping<a name="touchtyping" />
An ELI5 definition I'd give:

> Touchtyping is a technique you learn in which you leverage all the fingers of your two hands to type while, at the same time, you do not look at the keyboard with your eyes to search for a certain key.

(If you wish a more formal, and more comprehensive explanation, go check [the Wikipedia page](https://en.wikipedia.org/wiki/Touch_typing))

And it's a relatively easy skill that you can acquire in one week of intense practice. I gotta say that it's a skill that is a lot easier to acquire and consistently keep if you use an efficient keyboard layout (ahem... colemak) and a good keyboard as I mentioned previously.

On my learning journey I stumbled across a couple of sites that I can't recommend enough. I have tried many sites, and none of them compare to these two:

* [Keybr.com](https://www.keybr.com/): https://www.keybr.com/
* [Typing.io](https://typing.io/): https://typing.io/ (suited for developers)

Start with KeyBr and, when you feel good and have acquired some decent speed, go to typing.io.

### Your keyboard<a name="keyboard" />
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j9xii74qmwsvlhmn5043.png)
 
Get yourself a columnar mechanical keyboard. Mainstream staggered keyboard which are found everywhere date from the age when the typewriter was the only piece of technology to write with a keyboard. Due to the physical limitations presented by the typebars clashing among each other that those old machines had. Again, these limitations do not apply to modern computers.

I use an Iris split keyboard like the one shown in the next image. It's extremely comfortable and improves my back posture due to being able to separate the shoulders (note that the key caps are blank, no need to have printed letters on the keys when you touchtype and the memory muscle triggers always).

My keyboard:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmv1fqkdpfyhidjmf6rs.jpg)

The next keyboard I have on my purchase list is the Preonic, which has the same key distribution, but it's more compact and ideal for travel and moving around the house.
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t7yxoj8ctrbgsk0xrpj2.png)

In all seriousness, if you are a coder your keyboard is your main tool and you want to make sure you have the best tool available to offer the best code you can. Having a mechanical keyboard really improves not only your speed, but lowers the amount of mistakes you make when typing. In fact typing these blog posts is a pleasure with these keyboards.

## Conclusions and final tips<a name="conclusions" />

Changing keyboard layouts as well as keyboard type is a massive change on your workflow; you will start slow, and making a lot of mistakes while your muscle memory builds up. But once you pick up speed, the results are impressive to say the least; It's such a quality of life improvement that I just can't describe with words precisely. I can tell that my programming speed has doubled and, if I spend less time thinking on how to type, I can spend much more time thinking to actually solve the problem at hand.

And as a bonus, writing in the right way becomes a pleasant, almost relaxing experience.

My final tips for someone wanting to get his feet wet would be to do, in order:

* Install the Colemak keyboard distributions on your computer. If you are using a regular, staggered keyboard, use the Curl/Ergo mod variant, since it will put your fingers in a more natural position.
* Start practicing and be patient. It takes about almost week of intense training with [Keybr.com](https://www.keybr.com/).
* Once you are convinced that Colemak is for you, get a columnar or orthogonal mechanical keyboard, but don't pay more than 200$ for it if possible. You can get a second-hand one from reddit at the [MechMarket](https://www.reddit.com/r/mechmarket) subreddit. Make your own research though, but I recommend a Preonic, an Iris or a Lily58.

## References<a name="references" />

* [DreymaR's Big Bag of Kbd tricks](https://dreymar.colemak.org)
* [Colemak official site](https://colemak.com/FAQ)
* [Dvorak vs Colemak](http://xahlee.info/kbd/dvorak_vs_colemak.html)(Always good to read people that challenge the Colemak layout and compares it with another popular alternative distribution, Dvorak)