Do programmers need touch typing?
blog.hakanserce.com
blog.hakanserce.com
I learned touch-typing by force during school/college as I worked part-time at a local newspaper.
I encourage my kids to use better typing methods. It will be a long journey, but reminding them occasionally and using a few typing apps will help them. The first success is laying their hands in the correct positions.
The best fun was when I set up a mechanical keyboard when they visited their grandparents. “What the hell is she training for?”
A programmer usually needs to type a lot of non-code as well. Doing all that at 1 cps is a major impediment.
What WPM's do touch typists typically attain?
This is a touch typist at 190 WPM, which I think is rare.
But wpm kind of misses the point. Typing isn’t a programmer’s job, it is a means to doing their job. If typing requires conscious effort it will take away from everything else.
I got that fast because I spent my teens in chatrooms, but it's not homerow style, it's any finger anywhere at any time hover touch typing.
This was a real issue when I transitioned to a split keyboard, because my hands were used to crossing sides. My typing speed took a hit, but again, zero impact to programming.
Probably helps when writing comments in tickets though.
For very many years I had been typing with two fingers. It did not really hurt my productivity, as the major part of programming is thinking about what to write, not the actual typing.
I had tried several times to switch to touch typing, but I had given up every time. The reason was that in the initial phase of the transition I was typing much slower than before and I had not enough patience, so whenever I was in a hurry I would switch back to two-finger typing.
The method by which I have eventually succeeded to switch to touch typing has been by simultaneously switching to a Dvorak keyboard layout.
This had three advantages, the Dvorak layout is more comfortable, whenever I was losing patience due to the slowness of the typing there was no easy way to switch back to the two-finger typing to which I was accustomed, and looking at the keyboard was pointless due to the lack of matching labels on keys, so pure touch typing was mandatory.
The transition was very annoying during the first few days, but after a few weeks I have recovered the previous typing speed, then I have exceeded it significantly.
Nevertheless, the increased typing speed has been only a very minor advantage. The real advantage has been the much less effort required for typing long texts all day by touch typing instead of hunt-and-peck, especially when also using the Dvorak layout instead of Qwerty.
Every truly great programmer I ever met was a really fast typist. Every one.
The converse doesn't apply, of course.
He was a physics PhD who learned to code in FORTRAN in the 1970's, so he was definitely of another time.
I was never trained in typing, but after years of "hunt and peck" typing, I just intuitively learned where keys are and started instinctively learning patterns for how to type words after lots and lots of IRC as a teen. I orient my hands around the keyboard and put my fingers into position to type words in the most efficient method subconsciously. This works for me because I can type over 120WPM with no wrist pain.
Something about IRC encourages people to type quickly and I'm not sure I'd have gone from looking at the keyboard to not looking if most of my typing were in a relaxed setting.
I've observed this, myself. All the people I know with RSI issues are touch-typists. I suspect it has to do with pinky extension being a highly unnatural movement. Three fingers and thumb are all I need to type very fast, and I have never experienced anything remotely approaching hand/wrist/finger pain in over two decades of professional software development.
My typing speed was about 50wpm, and had probably been at this level for ~20 years.
I spent about 50 hours learning the proper method on keybr.com, spread over several months.
That was enough for me to exceed 50wpm, which meant there was no longer any need to use my old method.
After that, my speed naturally increased to around 65wpm.
A mechanical keyboard added another 5wpm. Some practice on Monkeytype added another 5wpm.
Typing wasn't a barrier before, but I feel more comfortable now that I use the recommended fingering (except for the z key). And I'm sure the 50% increase in speed helps when I'm doing solo brainstorming in a text file.
http://steve-yegge.blogspot.com/2008/09/programmings-dirties...
Faster text input is a must for anyone involved in software development, there's no question about it.
We, software engineers constantly share our ideas, our thoughts and hypotheses and the medium for that exchange 99% of the time is text - be that plain English, programming or any other natural language.
Anyone who is incredibly slow with the process would be a detriment - a slow typist is unlikely to write good, useful git commit messages; they are less likely to spend time to write coherent, descriptive Pull-Request descriptions or share convincing architectural-change proposals.
Just think about it - the average programmer over their professional lifetime writes the equivalent of 15-20 "War and Peace" books. "War and Peace" is approximately half a million words or 3.2 million characters. Assuming an average of 50 characters per line, a programmer writing 1 million lines would produce about 50 million characters. It took Leo Tolstoy around six years to finish his novel. Programmers often have to create projects twice as big in the matter of months.
On the other hand - some may argue that over-prolific, fast typists sometimes write watered-down, lengthy texts that are painfully difficult to read and they add little value beyond just increasing the entropy. Writing well is a skill, and a faster typist is most likely to achieve this mastery quicker than a slow typist.
Whenever I need to make hiring decisions I try to find the candidate's footprint - code, comments, blog posts, etc. You can tell a lot by simply skimming through what they wrote - whether it's code or plain text. Good programmers rarely are slow typists.
But the big multiplier is the CLI. You can DO things lightning-fast.
For example, with command recall (linux control-r) your fingers are doing the control-r and your eyes are looking at the recalled command to see if it is the right one.
I was lucky my father prompted me to self-learnt it in high school. I have started with learning basic hand positions and technique from a book. Once I could barely type without looking, I started transcribing handwritten drafts of my school essays to the computer. Painfully slow for first few days but gradually I got to decent speed (and tidy looking essays).
Oddly, when writing documents, I still prefer pen and paper for taking notes and writing first draft. Afterwards nothing beats the power of editing on computer where touch typing is the ultimate power up.
Without getting caught up on specific tools, using editors and a window manager that are all keyboard focused, and learning all the keyboard shortcuts I can for my tools,I feel I can stay in flow much better and work more concisely.
Using some of these tools makes me feel like I am using telepathy almost, as stuff happens on the screen where and when I want precisely.
In my experience, speed is just one of the many advantages. If you just watch the screen, never look at the keyboard and just type, you see mistakes and correct them on the go. Being able to talk to a co-worker while continuing to finish typing whatever I was working on. For me this is like flushing the write buffer of my mind.
I find that I update comments and documentation more consistently than my non-touch typing peers.
I can't touch-type, but I also don't need to spend any effort on typing. It happens automatically.
I don't know about other devs, but I don't really see any advantage to touch-typing in my own work. My WPM isn't up the standards of professional typists, however it's certainly high enough that it isn't a detriment.
On an English typing test (not my first language) I sit around 100 wps, which is not high, but sufficient that I don't get annoyed waiting for the words to appear on the screen while I type, it's about the same speed as I can construct somewhat coherent sentences.
The hardest part about typing tests for me is reading the text, understanding it and (paradoxically) spelling the words correctly as I both look at them and type them. It's quite a lot easier and faster for me to type free-text like I do now.
For programmers? Yes, for any computer user, one should be proficient at using the keyboard, otherwise, you will be very limited in your communication, especially with other people, this is a problem. Documentation, comments, log messages, emails and chats become limited, and it gets quite annoying to stand behind you while you hunt and peck your way through a simple sentence.. Also, learn how to use the nav cluster, I get ticks waiting when people use key-repetition or the mouse to jump around the line. Learn to use home/end and pageup/down along with whatever jumping your editor can do.
(As a bonus, he had me learn it on his old Olympic typewriter--"old" as in older than I was at the time--whose keys were so stiff it seemed like it took about ten pounds of pressure to type one letter. When I finally got a computer, typing on its keyboard was like being able to run without ankle weights for the first time.)
The rest "emerged" -I am sure I don't use the recognised fingers, but I achieve a reasonably good rate and rarely look down for the standard letters, numbers and symbols, although from time to time find I've lost touch (hah) with some of them: If you stop doing C or Perl the ; becomes less important to you.
Especially when using a fantastic mechanical (Hall effect) keyboard like (still) my favorite Apex Pro from SteelSeries.
Nothing matches or probably ever will match the old MIT AI Lab Tom Knight Hall effect keyboards (Microswitch), but these are mighty close. Something about the heft and the smoothness of those keys has never been replicated. I can still remember that feel quite distinctly 45 years later...
I love that I can type what's in my head without thinking about it at all. I even got a job partially because of it once, although I guess that would be rare!
Anyway, I'd strongly recommend learning touch typing to anyone who works at a computer. It's so much easier and faster too.
If you can't touch type, then either:
1. You aren't smart.
2. You are one of the very few people who are smart, but for some reason just can't easily learn touch typing.
3. For some reason you rarely have to type in your life.
The population of good programmers that falls into either 2 or 3 is very small (and 1 excludes the "good" condition).
Generalisations aren't inherently bad, thinking that generalisations are absolute truths is probably what you think is bad.
>1. You aren't smart.
Very likely for most people, depending on where you draw the line(s). But you could very well still be brilliant.
>2. . . . can't easily learn touch typing.
OTOH could already have learned touch typing, and recognized the advantages for stream-of-consciousness storytelling, but moved forward without it when it comes to typing in code.
>3. For some reason you rarely have to type in your life.
But when you do, you want to stop and make sure it is exactly as expected every time before you hit "enter".
But I highly recommend to anyone reading this to actually go and learn touch typing. It's free and there are lots of websites out there.
In terms of input effort to output, touch typing is one of the best things you can learn. You will literally use it every day of your working life.
I don't know what it is; i've never been able to push past it without ruining accuracy.
It also makes everything faster from the command line, once your body is wired to deliver instructions via keyboard. Humans can talk at a high wpm rate but typing can compress complex contextual meaning into a few twitches of the fingers. Typing can be significantly more compressed than speaking.
I still think typing is a low-key high-leverage skill that anyone can learn in a relatively short period of time. The lower barrier to entry, the ease of acquiring the skill, and the value in diverse contexts recommends it.