Going Ergo

I’ve been programming professionally for 29 years. I’ve been typing as part of my job for 31.

As a result, I suffer from very bad Repetitive Strain Injury. I can directly measure how productive I’ve been during any given week by how badly my hands hurt on Friday evening. I’m left-handed, and my left hand suffers disproportionately. If I feel like my left hand was smashed by a hammer, I know I got a lot done.

I started learning to type long before I was given the opportunity to take a proper typing class. By the time a guidance counselor offered me a typing class in 12th grade, I could already type 120 words per minute.

But they were 120 words per minute typed the wrong way. I developed a lot of really bad habits. For one thing, I didn’t type with all my fingers. I only use three fingers on my right hand and two on my left for typing letters and numbers. I started typing on a keyboad where the function keys were on the left-hand side of the board. Because of that, and because most of the control keys I needed were also on the left-hand side, I developed the habit of contorting my left hand to type those keys. For example, to hit the keys for cut, copy, and paste, I hit the control key with my left thumb – tucking it under my hand – and hit the letter key with my left index finger. The area just below my left thumb is now almost constantly in pain, even when I’m not working.

Recently, I’ve been trying to develop better habits. But it is very difficult to work against 30+ years of muscle memory. When I’m programming “in the zone”, instinct takes over and I wind up doing all the wrong things again.

I’ve decided it’s time for a radical approach to this problem. If I’m going to work against 30 years of hard-forged neural pathways, I’m going to go all out.

Step 1: I’m going Dvorak. I have tried and failed to teach myself to type “properly” on a QWERTY keyboard. I constantly revert back to my weird self-taught style when I’m not paying attention. It’s super frustrating. So, I taught myself the Dvorak layout using all my fingers in the “proper” way. In fact, I’m typing this post in Dvorak mode. I can only type about 60 WPM this way – half my normal speed – but I feel like I’m getting better. Writing code in Visual Studio is another story: I’m constantly frustrated by needing to get things done and knowing I can go much faster.

Step 2: Ditching the mouse. I know I’ll never be able to get rid of it completely, but I need to find a way to reduce the number of times per day I reach for it. On days when I feel like my left hand has been smashed by a hammer, my right shoulder feels like it’s been stabbed by an angry monkey. This leads to…

Step 3: Learning to move around in Visual Studio with the keyboard. I like to code full screen, which means my Visual Studio window layout has most of the tool windows hidden. If I want to go to one of those, I’m always reaching for the mouse. I just learned that you can navigate between these windows by pressing Alt-F7 and Shift-Alt-F7. And I’ve learned that most of the windows I need all the time have a Ctrl-W combination that will take you there (e.g, Ctrl-W, O to go to the Output Window). Why did I never bother to learn this before? Oh, and if you’re focused in a tool window, pressing Ctrl-Tab or F7 will get you back to your code.

Step 4: I’m switching from my beloved Das Keyboard to an ErgoDox EZ keyboard. I picked this keyboard out of all of the choices available because:

  • It’s a split configuration, so I can hold my hands shoulder width apart. This reduces tension in the shoulders and keeps me from having to have my wrists bent at an angle while typing.
  • It has ortholinear keys, so my fingers don’t have to move in strange directions; they just need to go up and down.
  • Its firmware is open source. We like open source.
  • It’s completely programmable, so I can create weird keymaps that fit the way I work.
  • I can create single, easy-to-reach keys that map to the most common hand-contorting key combinations that I use. For example, I reflexively hit Shift-Ctrl-S all the time to “Save All” in Visual Studio. Given how often I hit it, I’m going to replace that with a single key press.
  • I can control the mouse with it.

Step 5: I’m going to try using Windows Speech Recognition where appropriate. I’m mostly using it in Outlook for typing e-mails. It doesn’t work so well for blog posts: I edit my blog in VSCode, and Speech Recognition isn’t quite as slick in there as it is in MS Office applications.

I still have 3 weeks to wait for the delivery of my ErgoDox EZ. I’m committed to doing most of my work using the Dvorak layout for those 3 weeks so that there’s less of a transition when it finally arrives.

I’m going to document all of the trials and tribulations of reprogramming my brain here. My goal is to be at my “normal” level of keyboarding speed within 6 months. I’ll let you know how that works out.