A long time ago I’ve heard about the Dvorak keyboard layout and how superior it is compared with standard QWERTY layout. After few minutes of Wikipedia research I’ve learned that QWERTY is one of the worst possible layouts and was introduced with explicit purpose of slowing down typists. You see a long time ago, in era of mechanical typewriters, if you happen to push two keys at the same time the machine would jam. This would require you to manually unjam it, which takes only about 2-3 seconds, however it would happen so often, that loss of speed was noticeable. Enter QWERTY layout – the one that would maximize the distance each finger need to travel between letters in english alphabet and therefore making jamming less likely and (paradoxically) increasing overall typing speed.
And a hundred years later, we’re still stuck with it…
So in my mind I’ve come up with perfect solution! I will master Dvorak layout and became even more awesome programmer. I would be mystical, less prone to make mistakes and I would type even faster. What could possibly go wrong!
I’ve purchased keyboard stickers, that would allow me to rearrange keys on my Microsoft Sculpt ergonomic keyboard (I wouldn’t dare to snap them out and rearrange. They wouldn’t fit anyway), found online learning course and started typing. Beginnings were quite hard as my fingers would subconsciously snap back to old memorised key positions. I did tons of mistakes at the beginning, but after about 2-3 weeks (of daily training) I gradually started to type faster and with fewer errors.
At this time I started to notice some issues with Dvorak keyboard layout. True – every english sentence was quite easy to type, but learned over the years keyboard shortcuts were real pain. Just imagine doing Ctrl+C, Ctrl+V. Yes.. both are quite far away from Ctrl button. I’ve learned that one of the most common combinations that I would try to use is Ctrl+S, which I simply could not use with just one hand and just imagine me trying to undo some mistake with Ctrl+Z. There were also few Resharper shortcuts that became a hassle like Refactor -> Rename (Ctrl + R, R).
Programmers != Typists
Another important thing that I’ve learned is that programmers aren’t actually typing all that much. I spent most of my time reading and making small adjustments in the code. DRY (Don’t Repeat Yourself) principle tried hard for me not to write too much code overall, so the advantages of Dvorak layout became less and less obvious.
Your team will hate you
But worst part of actually having uncommon keyboard layout is that nobody else is able to use it. The usual scenario would look more or less like this. I would ask one of my teammates to help me understand some obscure class, they would come over look at the class, start a polite developer conversation, something like: “Oh yea. I remember this shit, a guy that used to work here 2 years ago wrote this, and nobody touched it since“, then they would try (to the best of their abilities) to remember as much as they could about a topic. They would pick a mouse and try to navigate to some connected classes, they would use one of the keyboard shortcuts to navigate properly just to learn that (at best) it wouldn’t do anything or do something bad. Afterwards they would look at the keyboard, then give me my mouse and keyboard back and just point at the screen and say “get to definition of that, I can’t use this shit“.
Similarly if somebody junior will ask you to help him, because this simple snipped of code just doesn’t compile. You come over and you know just one shortcut that will make it all work. But you can’t use it.. You look at the “normal” keyboard and wonder … where is “R”.
Standards are there for a reason
So I’ve abandoned Dvorak. It took me even less time to relearn QWERTY using Ratatype online course and I haven’t looked back since. Dvorak might be a nice solution for some people, that work alone and type awfully lot in english like writers or journalists.
Programmers however are more about cooperation and readability of code than typing speed and should stick to standards. Same principle holds true, when customizing shortcuts, fonts and system commands. It might seem alluring to type “CheckPullOpn” to check-out branch, pull all changes and open in your favourite IDE in one command, but soon you will understand that you have mastered only your machine. And everywhere else you have to keep using those boring and standard command that you haven’t used in quite some time.