Touch typing

I have been programming for about 6 years but I have never learned to touch type properly. I can type pretty well but I have to glance at the keyboard quite often and I don't position my fingers correctly like proper touch typing.

Is it worth learning to touch type properly? Would it be a lot better in the long run? And would it be really difficult after typing incorrectly for 6 years?

Does anyone have experience learning it after already programming for a long time?

Thanks!
TL;DR Yes, learn to touch type, but don't learn Qwerty. Learn Colemak. (There are others, but I find Colemak to be the best option for many reasons.)

How many words per minute can you type now? Touch typists can generally ramp up to 80wpm to 130wpm, so increased productivity is one of the major reasons to touch type.

But the reason I chose to answer this is to try to convince you to change your keyboard layout before you learn to touch type. Since you are learning to touch type, switch to Colemak keyboard layout. You will save yourself a lot of wrist strain in the long run.

Colemak is designed around a few ideas.

  • First it keeps common key combos the same as Qwerty, so ctrl-C and ctrl-V that you have learned from muscle memory continue to work.
  • It takes the most commonly used letters in English and places them under your fingers on the home row.
  • Fingers should travel the least distance possible
  • Most of the typing should be done on the strongest and fastest fingers
  • Typing should alternate between the hands for greater speed and comfort
  • Should be easy to learn and switch from QWERTY

  • Here is a blog post from someone that was in the same situation as you, they didn't touch type, and started with Colemak. They typed at 75wpm in two months and 90wpm after 4 months.

    One of the benefits over Qwerty are you can type 35x more words using only the home row on Colemak. To be clear, on Qwerty you can type 195 words without stretching your fingers from the home keys. On Colemak, that number is 2546 words. Here is a listing of those words, as well as comparing the lists of Dvorak and Workman layouts, both of which offer more words than Colemak on the home row with some trade offs.

    Colemak is designed to allow you to alternate hands as much as possible to reduce stress on your fingers, as well as to improve speed.

    Edited by Bill Strong on Reason: Format list.
    I can only do about 50wpm at the moment. Colemak sounds interesting, I'll look into that.

    Thanks for the reply!
    Personally I've found touch typing to be extremely useful as a programmer, but I can't directly answer your question because I learnt as a child and so I've never been in your exact situation. Bill's advice about seeing it as an opportunity to learn a better optimised keyboard layout sounds very sensible though. I learnt on QUERTY, and with well over a decade on it, I've never quite mustered the will to try and learn a different configuration.

    The only thing I'll add is that I've found that learning to touch type as a programmer is somewhat different to "normal" touch typing. I learnt to type to help me with note taking, writing essays, and chatting online, and I had a pretty decent typing speed doing that. However to this day, although I've improved a lot, I'm still a good 30wpm slower typing code than prose, because of the heavy use of special characters and numbers. Therefore if you decide to learn, I'd recommend finding good resources aimed specifically at programmers. I've found typing.io to be pretty good for this, but I'm sure there are others too.

    Anyhow good luck if you decide to give it a go!
    I have not learned proper touch typing, but I can type *code* without looking at keyboard and on average much faster than my co-workers. In fact for last 3 years I am using Das Keyboard Ultimate S: http://www.daskeyboard.com/model-s-ultimate/ So there is actually nothing to look at :) It always confuses people who come with a question to me and need to type something ;)

    I don't think proper touch typing matters much for code because of bunch of extra symbols/operators we need to enter. What matters more imho is learning good editor and learning to use keyboard shortcuts a lot (navigating, selecting / modifying text, etc) without touching mouse.

    Edited by Mārtiņš Možeiko on
    I have actually been thinking about that exact problem. One suggestion I saw recently was to reverse the number keys. You would set the number keys to be the punctuation without the shift key, and need to press the shift key for numbers. This sounds plausible, but as programmers, we use numbers quite a bit as well, so I don't see much of a benefit.

    But the idea of remapping keys brought the idea of creating a punctuation home row set. The idea is you set up a custom modifier with the home row keys, and get your punctuation. I haven't done this yet, but I think it might be feasible. I know with Colemak a large number of users replace the Caps Lock key with something else, so I thought about using it.
    I can touch type, but I'm skeptical of the idea that learning to touch type will increase productivity. I'm skeptical of alternative kb layouts and (to a lesser extent) streamlined text editors for the same reason. I think the limiting factor for how fast you code is how fast the code comes out of your brain, and for me that's not 50 wpm.
    Learning to touch type might make you more productive. It might make you happier while working. But I wouldn't call it a "must" until some empirical evidence comes up in favor of it. (Wikipedia cited this study showing that it does not make you a faster typist http://phys.org/news/2016-02-ten-fingers-fast.html )
    If you are going to create a keyboard layout for coders then you need to pay attention to symbols. On my azerty layout many common symbols (including the {} and []) are gated by the alt gr key (right alt). Doing away with that would help my coding speed a bit but I'm used to it now and my ide is (somewhat) helpful with inserting the matching one.

    Though my general technique is not really touch typing as my hands shifted over to the right more to be able to hit the alt gr along with symbols and the enter key and they hover while typing instead of resting on a home position. I find my speed good enough for what I do. As long as you can type fast enough that you have to pause to reason about your problem you are trying to solve you will be fine.

    As for layout? Just go with what is common in your area. If you ever need to do something on another computer it's very likely that it will have that layout and you can then type with all the speed you are used to instead of making tons of mistakes.
    I would encourage you to learn touch typing as well. For normal text, this will definitely improve your typing speed. For code, it might not make you faster, but not having to look at the keyboard will help you focus on your problem! Also properly positioning will help avoid health issues.

    Considering alternative keyboard layouts, this answer on StackOverflow is excellent. He basically argues against the claims that other keyboard layouts are faster/more accurate/healthier and recommends staying with QUERTY if you already know it. This still does not provide a good answer to what layout you should choose when you want to learn touch typing, so I want to emphasize one of the advantages of QUERTY: It is the standard layout.

    This is important, for example if you want to touch type on any other computer than the ones you normally use, then you will have to switch the keyboard layout if you don't use QUERTY. This might even involve downloading and installing a proper layout file depending on the machine. If you are sharing a computer with somebody else, the other person will need to learn the other layout as well, or you will have to constantly switch between layouts which is a big hassle.

    Personally I use the German layout (QUERTZ) for everything for exactly this reason despite it having usual code characters like { and } as the third function of the keys. I can type on any computer without having to set up the keyboard layout and I don't have to switch keyboard layouts all the time.

    Edited by GreenLightning on
    I'm with you GreenLighting... Learning a new layout after 10 years of daily usage of QWERTY or switching between two very different layouts all the time is a big challenge... and QWERTY isn't thaaaat bad.

    My main issue is that I have to switch between US (better for coding since " is a single press) and US-International when I need to type portuguese accented characters. I wish I could do those accents some other way.
    hugo
    I'm with you GreenLighting... Learning a new layout after 10 years of daily usage of QWERTY or switching between two very different layouts all the time is a big challenge... and QWERTY isn't thaaaat bad.

    My main issue is that I have to switch between US (better for coding since " is a single press) and US-International when I need to type portuguese accented characters. I wish I could do those accents some other way.


    You could try and memorize the alt+numpad combinations for those. There's a bunch starting at alt+129

    Edited by ratchetfreak on
    Good idea but I forgot to mention: I use keyboards ("tenkeyless") that don't have those for 5 years, and I kinda love the layout :)
    I could probably do something with Autohotkey...

    Edited by hugo on Reason:
    The accented characters are available under alt-gr for Colemak. I know you don't want to switch, but one advantage of these newer layouts, they take these things into account. So for OP, this would be an advantage if he needed them.

    You might use the text expander program based on AutoHotKey. I forget what its called. But you could set it up to work only when you want it to, so you could type the whole file, then have the text expander change the words that need the accents.
    I grew up on qwerty and was taught to touch type it in elementary school, but switched to dvorak when I was in high school and touch type it these days with no problem. My advice if you want to switch to another keyboard layout is to try to chat with it on IRC (or wherever else you actively chat with people). People will be understanding of your slow typing speed and if you are engaged in the community you will be motivated to get up to speed with it. That is how I made the switch (I've been running an irc channel on efnet for many years). If I recall correctly, it did not take long to get past the initial frustratingly slow hunting and pecking, and maybe only a week to get comfortable with the layout. I'm not sure how long it took for me to fully touch type it as I didn't really keep track or push for it, it just came naturally over time.

    If anyone is interested in the dvorak layout, these are my experiences with it: As a vim user, I find that I don't use the home-row as my resting position as one traditionally does for typing. When my hands are resting, I have my left hand on qjkspace with my thumb off the keyboard. This resting position is natural because it puts your ring and middle fingers on j and k, which are vi movement keys. For the same reason, my right hand rests on hrl- with the thumb off the keyboard. This puts left and right movement on the right index and ring fingers. If you are a vim user your initial reaction to switching a keyboard layout would probably be to want to remap all the keys so that the qwerty positions are used such as home-row movement, however, I think it is much more practical to just use the new locations of the keys. Once you get used to it, dvorak is not a bad layout at all for vim. One thing I do like about dvorak as opposed to qwerty and colemak is that a lot of symbols like ',.;/=- are in relatively ergonomically friendly positions which is nice as a programmer. There is also a programmer dvorak layout, but I don't use that as most systems do not support it out of the box.

    One issue you will encounter when switching keyboard layouts is that it will hurt your ability to type in any layouts you already know (such as qwerty). Your qwerty typing speed will notably decrease when you switch, and it takes a lot of time and effort to get your typing speed of the new layout up to where it was for the old layout. If you want to maintain your qwerty typing ability, you will need to use and practice both layouts regularly. Personally, I type exclusively dvorak and have for many years now. I find that when I try to type qwerty I initially have to hunt and peck, but if I leave the layout on for a while my muscle memory for it does start to return - your brain doesn't completely forget the old layout easily, it is still buried in those neurons somewhere.
    Thanks very much for the advice everyone! That's really helpful.