Colemak: Ergonomic, Unpopular, Less Weird

Hunting and Pecking

For years, I did not know how to touch type. The style of typing that I ended up with (having taught myself how to use a keyboard since I was a kid) can be described as follows... Hunt and peck using index and middle fingers, glancing back and forth between the keyboard and the screen to make sure I typed what I wanted to type. Occasionally I would get fancy and use a ring finger to hit a key off to the side like shift or enter.

Keyboard Battle

A few years ago, I decided to get serious about improving my skills at software development. One of the things that hindered my potential was that I could not touch type. So I committed to finally learning how.

I knew at the time that the Qwerty keyboard layout was not the most ergonomic, having been designed for the limitations of mechanical typewriters. So I figured it was a good opportunity to learn a different layout. I went looking for a way to figure out how to decide between layouts and found a ruby gem called KeyboadBattle.

This gem compares the Qwerty, Dvorak, and Colemak keyboard layouts across two metrics and gives a combined score. The metrics are reach effort (how often you have to reach away from the home row) and alternation effort (how often you have to type consecutive characters with the same hand).

Each layout has its own advantages. Qwerty is by far the most common and Dvorak is likely the most ergonomic (at least for prose). Colemak was designed to be similar to Dvorak in ergonomics but with modern computer usage taken into account.

I ran KeyboardBattle against some files of popular open source projects in programming languages that I cared about. I don't have the results, but they would have looked similar to this:

qwerty: alternation_effort: 13908 reach_effort: 25696 raw_score: 39604 dvorak: alternation_effort: 9960 reach_effort: 18801 raw_score: 28761 colemak: alternation_effort: 12998 reach_effort: 16498 raw_score: 29496

Those results are from running against a relatively long test file in a Swift project I'm working on. You can see that the raw score for dvorak and colemak are pretty similar and qwerty is noticeably worse. I decided to go with Colemak since it's less weird due to common shortcuts being the same.

Learning Colemak

To start learning Colemak, I practiced for about 10 min per day on Keybr. It lets you practice for one line at a time on nonsensical yet realistic words. It also gives you an on-screen keyboard to look at in case you forget where the keys are.

I also used a site called typing.io. This site has example code in various languages that you can practice typing.

After a few months of practicing, my words per minute touch typing rivaled my words per minute hunting and pecking, so I was ready to switch. I printed out a cheat sheet and stuck it to my monitor and switched my layout for good.

Pair Programming

As I mentioned in my post about pair programming, the differing keyboard layout got in the way.

Initially I thought I would be able to just set up a shortcut key to switch between layouts when I wanted to start typing or relinquish typing. This sort of worked, but I would often forget to hit the shortcut key and my pair would start typing gibberish.

To solve this, I went shopping for a keyboard that could handle me typing in Colemak, but output Qwerty to the computer. I bought a TypeMatrix keyboard, which worked but I was unsatisfied. I did not like the square layout or the Enter and Backspace buttons in the middle. Also, their Colemak support required hitting fn-F5 any time the keyboard lost power (e.g. computer restarts).

My next keyboard was a WASD Mechanical Keyboard. This is the keyboard that I currently use. My only real complaint is that it's a bit loud. On the plus side, the layout is controlled by a DIP switch so I don't have to worry about it getting reset on a restart.

My Recommendation

Due to the amount of effort it took to get to the speed I was before learning to touch type, I wouldn't recommend learning Colemak for people who already touch type qwerty.

However, if you can't touch type - I would definitely recommend putting in the effort to learn Colemak. I now find myself enjoying typing rather than seeing it as a necessary evil to getting my thoughts into the computer.