One of the things that I believe is that a programmer should type at a decent speed.
Not because typing speed is important -- the essential skill is thinking, and a programmer spends far more time thinking than typing. But typing is an interruption to thinking, and you want to minimise that interruption. If it takes too long to type then invariably I lose my train of thought and I have to start thinking over about what I was trying to do.
Now my own typing speed is only average -- about 55 words per minute (wpm) (As a reference, fast typists can break 100 wpm). I have never learnt typing formally, so I don't use the correct fingers to type and I use a lot of finger and arm movement. It's a bad technique, but over the years I have become reasonably proficient in. It also has a side effect of injuring the carpal tunnel once in a while (fortunately only mildly).
For these reasons, I took up a project to learn to type properly.
Having embarked on this project, I decided to research the best way to type (typical programmer thinking). That is when I came across keyboard layouts.
The QWERTY layout has its history in the mechanical typewriters of the 1870s. Those typewriters had a tendency to jam if nearby keys were pressed too quickly. QWERTY was invented to slow down the typists by placing common key combinations (like s & t) apart, and prevent the typewriter from jamming. Eventually typewriters were designed to not jam, but typists had gotten used to QWERTY and so the layout remained. We continue to use this on computers to this day.
Since then there have been attempts to make the keyboard layout more efficient. Keeping the most common letters in the center, common two letter combinations nearby and minimising the need to use the same finger for two consecutive letters. Such alternative layouts like Dvorak, Workman and Colemak.
After looking through some of these layouts, I decided to learn Colemak. Here is what it looks like
The vowels a, e, i, o are in the center (the "home row"). The most common consonants r, s, t and n are also on the home row. The s-t keys are together and the combinations e-n, i-n, y-k and i-o-n are also near each other. Also, c and v are in the usual place, meaning frequent shortcuts like Ctrl+C and Ctrl+V remain unchanged. Most frequent letters are accessible via the strong fingers (1st three fingers).
When I started my wpm was around 10. I have been practicing for about two months and it is up to 30 now.
Still nowhere near my regular 55.
It will take more time, but I'll get there. When I started, I would feel like smashing the keyboard when using colemak. Typing at 10 wpm is extremely frustrating when you are used to doing 55. I'm past that stage now. In fact I wrote this post in colemak and that is progress. Once you reach this point and start to use the new layout for day to day work then the progress is a lot faster.
- About Colemak
- EPKL: No need to go and buy a new keyboard. Use this tool to enable / disable colemak layout on windows. (Colemak layout is preinstalled in Mac and Linux)
- colemak.academy: Just want to practice colemak without changing your windows settings? You can do that here.
- 10fastfingers, Monkeytype: Practise typing
- speedtyper.dev: Programming uses a lot of special characters. This site allows you to practice on real code