As an aging coder, I have to inject a PSA: be very careful here. Learn to type properly and use a good ergonomic keyboard like a Kinesis. Many of the most productive programmers I know have had to work through RSI issues from typing too much and/or improperly. Certain programs with hand-stretching key bindings like Emacs are especially dangerous without a keyboard like a Kinesis that eliminates the use of single-handed Ctrl-<Key> combinations. (The Kinesis puts Ctrl/Alt/Meta on the thumbs so you never stretch your hand to type <Modifier>-<Key> combinations.)
One reason I migrated away from C++ and towards Python over the last 5 years was the verbosity of C++ -- it was killing my hands (#). It really does add up. The absolute worst was when I was writing the rendering pipeline for Crash Bandicoot in MIPS R3000 assembly: the sheer verbosity difference between assembly and C was enough to destroy my hands, to the point where, in the home stretch towards shipping Crash 2, I was typing with my fists clenched, holding two pens and pecking a key at a time. I didn't really "get over" the RSI for another five years. Even now, I have to stop typing when I notice I'm getting fatigued, or I will get right back into serious problems. And this is far from unique; as I said, lots of coders my age have these issues.
Do not ignore hand/wrist pain. Do learn to type properly. Do invest in an ergo keyboard. If you are a coder, your ability to type is utterly critical to your livelihood and well-being. Don't mess around with it.
You worked on Crash?! That is truly awesome. It's not very often that I get to read a story from someone that works for a company I respect very much, on a series that has many happy moments in my childhood.
> The result is a compact, muscle-memorizable repertoire of just over 50 unique motions in total.
Typing for me isn't much about speed(that's an added advantage). The muscle memory and ability to type without looking at the keyboard alone is worth learning it even if you experience a slowdown in the beginning compared to your one tap, two tap or what have you.
I am a bit surprised typing isn't emphasized enough. Techie or not, if you use computers a lot, learning to touch type is worth it, specially considering that if you aren't a techie(i.e you don't need all the special characters), it doesn't take much time to learn. For anyone trying to learn touch typing, I would suggest stick with the rule 1 - concentrate on accuracy, speed will come with time. And if you are a programmer, don't worry too much about speed. You generally don't type code at full speed anyway.
I agree totally. I used to be a monkey typist (maybe 3 fingers on each hands and never had to look at the keyboard) and my WPM was about 70 wpm, so I didn't really see the point of learning touch typing. However, when I tried to start using Vim, it was quasi-impossible to become productive in it with my typing style. I therefore started to learn touch typing. I was very slow in the beginning (maybe 30-40 wpm for the first few weeks) but I forced myself to touch type all the time although it was much slower. It has now been a few months and I'm almost back at 70 wpm and my accuracy is much better. Vim is also now my favorite and most productive editor. Tip: don't try to learn both touch typing and Vim at the same time. Learn touch typing first and when you're comfortable enough, learn Vim.
THIS. I got a Das Keyboard with no markings just to finish learning touch-typing (I had done half a course at one point, so I sort of knew what to do..)
Speed is secondary to not breaking your focus/train of thought mid-sentence.
I got a Das Keyboard with no markings just to finish learning touch-typing
Me too.
I recently also noticed that if I close my eyes while typing, my accuracy is very very close to 100% (ie in every typing test I've taken to try it, I got 100%, but in real-life typing, I do make the occasional mistake) while with my eyes open, its anywhere between 80% and 99%, depending on how tired I am.
I can only imagine how much hairier these diagrams become if generated from code instead of English/html. Even for the best case scenario of "The Robot" combined with an "ergonomic" layout like dvorak or colemak, the right pinky area would be a tangle of deep purple. If the diagrams were updated to include backspace key usage, the mess only gets worse.
I couldn't find a typing tutor that addressed the difficulty of typing the symbols in code, so I created a webapp called http://typing.io. It allows programmers to practice typing open source code instead of English or drills.
I taught himself how to type and was lucky enough to use a split keyboard for a while - really awesome for improving technique. My technique is probably somewhere between touch typing and "The Robot".
But the 110wpm rate is worth it. And people look funny when I blast away at the keyboard without a screen in sight (I often type on a bluetooth keyboard attached to either ipad or iphone)
edit: The funniest result of being a quick typist is that I use copy+paste less than I did a few years ago. Often the context switch between typing and selecting is too much work and it's quicker to just type things twice.
I used to do less copy-paste but since I got decent with vim it flows right into my typing. If you're not using it you should give it a try, with that kind of typing skill you could be insanely fast at editing too. (Has a learning hump at the beginning though.)
> edit: The funniest result of being a quick typist is that I use copy+paste less than I did a few years ago. Often the context switch between typing and selecting is too much work and it's quicker to just type things twice.
Same for me, ish; I often find myself just using backspace and retyping the last few words if I find a typo a few words back, as opposed to reaching for the mouse and redoing just that word, or using the keys to go back. Going four words back is usually a matter of alt + left-left-left, alt-backspace, re-type, but still I find myself just deleting the last couple words and retyping it.
You touch type without moving your fingers back to home row every time.
I especially do this with my index fingers who will often jump from, say, Y to U directly without hitting J in between. It looks very funny because they often hover above the keyboard because of this.
But I do tend to move my wrists too much when typing.
> I especially do this with my index fingers who will often jump from, say, Y to U directly without hitting J in between.
Oh. I don't know how common it is, but I just tried typing "yuuuuvawere" and noticed my fingers don't come back to home row unless I am done typing. They do sort of hover over it but there is no j between y and u. May be I am wrong, but touch typing doesn't teach to bring back the fingers to the home row after every letter. I learnt touch typing with some typing software which taught single letters, commonly occurring n-grams for n in (1, 3), commonly occurring words etc. So it might be my muscle memory that tells me that there is no need to go back to j if you are typing "you".
I learned to touch type with the home row thing, but I never find my fingers really going back to the home row, they just go to the next letter that needs to be typed. I guess with experience comes automatism, which in my case doesn't always involve going back to the home row after typing a letter. Or something.
I think it's quite common. I have seen friends type. And everyone who is commenting on this thread and touch types goes to home row only to take a break. There is no home row between two consecutive letters unless they involve letters on the home row.
Personally, I think I just have the keyboard layout more or less memorized in my head. I type about 80-100 wpm. I'll often hit the keys on the outside of the keyboard with different fingers on the fly and I dont pay attention to it. I'll put my hands on the home row, sort of, when I'm done typing something out, but my pinks usually go to shift and enter rather than 'a' and ';'
I never formally learned how to type. I had no clue what "home row" meant or where you're supposed to keep your fingers at any point in time.
However, I do touch type -- I never look at the keyboard while typing, even for symbols used when programming and I use almost all my fingers, except perhaps my left thumb, it stays on the space bar but I always use my right one for that. And I just tried an online typing test. When I strive for 100% accuracy, ie, I go back to fix mistakes when I notice I made a typo I got 75WPM. Also, I usually type faster than I do when taking these tests because the slowdown for me is in reading not typing because many of them have nonsensical texts(not as bad as "Green ideas sleep furiously" but nonetheless, probably something I wouldn't write naturally).
I also don't even remember going through a "hunt and peck" phase when typing. I thought this was natural and all people who use the keyboard a lot evolve into something like this naturally.
Edit: I just looked at the definitions for some of these things and which keys you're supposed to hit with which fingers and I noticed that I usually keep the keyboard slightly to the left side so that my right hand is at an angle, not straight. So instead of splitting things vertically between my fingers on the right side it's a bit different. For example I hit the "Y" key with my middle finger and I move my entire hand down to hit the "," with my index. So it's definitely suboptimal but it's good enough for me.
I'd like to see equivalent diagrams on a Dvorak (or colemak) layout. The "touch typing" diagram would be much closer to the "robot" one, demonstrating you don't have to be a robot to type efficiently.
I'd like to see these diagrams extended to coding languages. My touch typing is okay when writing, but I have to glance down to find any symbols and quickly lose my flow.
Dvorak is cool, but you don't need typematrix to feel its benefits. I use normal keyboards to type dvorak, all you have to do is to change the keyboard layout.
Thanks for the link. When I first discovered TypeMatrix, there weren't many reviews of it. By the sound of it, maybe I should save my money for something else.
From the second paragraph of my own blog post I linked above:
> I use a Typematrix EZR2030 for over a year
So I did kinda checked it out. :-) It's Much better than your average keyboard, though I agree with hailang about not needing it to enjoy a sane layout. In my experience, a sane layout is the second best thing you can do to improve comfort. The first best thing was touch typing itself (most importantly being able to not look at the keyboard at all), and the third was the actual keyboard. I didn't try advanced keyboards such as the Kinesis Contoured though, so they may be more important than I feel.
I've been using TypeMatrix (dvorak layout) for about two months now. It really is awesome. I had severe hand pain but now I've managed to bring it down to tolerable levels and I believe that the TypeMatrix played a huge role in this improvement.
Can't touch type yet (I still look at the keyboard constantly) though :/ I'll have to invest some time into re-learning how to type I guess.
> As for Yours Truly, teenage peer pressure kept me from riding the touch typing train. Per the sexist suppositions of way-back-when, before computers went mainstream, keyboards were for secretaries, and secretaries were female. Dudes just didn’t do that kind of thing.
I took the hard way out. I took "Secretarial Office Procedures" in high school just to learn typing.
When I was a kid, about 9 or 10, my mother taught me to type. As a teenager, she had gone to secretarial college and had become a legal secretary typing up documents for lawyers before getting married.
I learned on a manual typewriter. I was the weird kid who typed up school reports on a manual typewriter before computers were widespread.
Along with basic sewing, it's one of the most useful things my mother taught me. We should teach every schoolchild to touch type.
I taught myself on a life size printed version of the Sinclair Spectrum that was part of the promotional materials, I was gutted when I found out that coding on the real thing required a bizarre set of keyboard combinations unrelated to QWERTY... the skills have come in handy in the following decades though ;)
I'm a bit scared of changing my typing style now...
I started programming at 8 years old, doing the two-finger method, which eventually evolved into a modified 3-finger left, 2-finger right, with pinkies for modifier keys. I took a typing course in high school and did well, but I went right back to my old style afterwards. I've now been doing this for 30 years. My typing isn't super fast (maybe 70wpm), but I've also never had any wrist pain, regardless of the keyboard or sitting style I've used. My primitive typing style never allows for contortion moves, and I'm worried that if I do move to a more proper style, I'll end up with the wrist pain that everyone talks about...
Put your hands on home row and keep your eyes on the screen and just go, with discipline... it's how I learned, sorta. A friend and I competed to learn how to type without looking.
I won't recommend it. You sure can just go to a shallow swimming pool, flail around and learn swimming, but re-discovering first principles is distracting and might de-moralize you.
I don't remember which one I used when I learnt(it was about 6 years ago and I was using windows at that time), but I would say use one which teaches basic letters, n-grams, symbols and integration. Muscle memory is built over time and it's hard to override. Unless you believe using wrong fingers give you some sort of advantage, why would you want to learn the wrong fingers when you can very well learn the right ones with the same level of effort(your comment about y and b)?
I'm just giving anecdotal evidence for what worked for me; and TypeRacer puts me at 90-110 wpm, which is far more than I'll ever need for my programming work.
Then again, if he's actually asking for a program to help him because he actually wants a program's help (as opposed to thinks it's the only way he can learn), it'd be better to go with a program. What I was encouraging was that you didn't have to have a program to help you learn how to type. Also, just using all 10 fingers on the keyboard all the time, and having them rest on or near home row, even when you have to look down occassionally to see which finger should go after which key, and where that key is, is a good step toward improving as touch-typist.
I'm also between PointersThumb and "VonStyle".
And I learned touch typing but I don't like it.
I reached 110wpm touchtyping instead of 100, but it requires a far more rigid and precise posture (hands in front and parallel).
It's not comfortable when I'm standing at the side, bending over the keyboard, or when I'm slouching lazily in my chair.
I guess it's better for serious typing work, but for everyday use I prefer my style.
Someone here on HN (thanks for that whoever you are!) recommended GTypist (http://www.gnu.org/software/gtypist/). I have been going to the lessons and my typing has much improved. Furthermore, it's free, easy to use and later lessons contain all special characters.
If you can afford one, a Das Keyboard is the way to go. Alternatively, melt the lettering off your existing one. Once you start forcing yourself to recall the key locations, your brain will realise it already knows them.
From then on it's just a case of keeping your fingers on the home row :)
And here I am, still desperately waiting for the perfect speech to text converter that just removes need of having to type text entirely. I can see a future where programs are narrated.
#include <stdio.h>
int main(void)
{
printf("Hello, World!\n");
return 0;
}
Why would I want to dictate that? "Hash include less than sign(do I mean "less than sign" or "<") stdio.h greater than sign newline(do I mean actual newline or to print newline?) int main open parenthesis(actual or sign)...."
And you are assuming if there is a perfect speech to text converter, it's automatically better than typing. I don't see myself using one for most of the tasks. Speaking is too distracting.
o rly? I, and probably the other 'fast' typists here, type a lot faster than they can talk - plus, almost nobody can 'speak' perfectly, so corrections - even if assuming the speech-to-text converter has a 100% accuracy rate - will be very frustrating.
A better system would be a thought-to-sane-text conversion. But I doubt that'll ever be possible, :p.
If you're going to touch type, you should use a layout designed for it, not a layout designed to prevent typewriter from breaking.
Dvorak, Bépo, etc. Much easier on the fingers. Then you can do the "robot" diagram because it's sort of built in your layout. Even for programming it's much better.
One reason I migrated away from C++ and towards Python over the last 5 years was the verbosity of C++ -- it was killing my hands (#). It really does add up. The absolute worst was when I was writing the rendering pipeline for Crash Bandicoot in MIPS R3000 assembly: the sheer verbosity difference between assembly and C was enough to destroy my hands, to the point where, in the home stretch towards shipping Crash 2, I was typing with my fists clenched, holding two pens and pecking a key at a time. I didn't really "get over" the RSI for another five years. Even now, I have to stop typing when I notice I'm getting fatigued, or I will get right back into serious problems. And this is far from unique; as I said, lots of coders my age have these issues.
Do not ignore hand/wrist pain. Do learn to type properly. Do invest in an ergo keyboard. If you are a coder, your ability to type is utterly critical to your livelihood and well-being. Don't mess around with it.
(#) C++11 makes this a lot better.