As a developer, the code I commit during a typical workday varies greatly, but about 8000 characters of code might be an okay estimate.
Before I learned how to touch-type, my typing speed was about 30 WPM.
That means I could type all of that in about 50 minutes. My current typing-speed is about 70 WPM, so I would only save 30 minutes per day.
As a developer, I'm not limited by the typing speed and thinking about code, reading code, looking for the right place to change that single line of code to fix a bug matter way more than my raw output of code.
All in all, it seems like touch-typing is only a minor optimization, so why was touch-typing the single most important skill I picked up as a developer?
Why Touch-Typing Matters
Many of the things that matter most to me might also be personal and subjective. But I still believe the following things are true not only for myself.
Syncing Code and Thoughts
The flow of thoughts is not consistent. Often we think in bursts. Further, our mind does not emit ideas in a linear self-consistent manner. Often we only can associate and combine ideas that did not directly succeed each other.
Touch-typing, to me, means less buff between thinking about code and writing code. I'm able to quickly type ideas I had to keep in my head before. Not being able to follow my thought process in the editor forced me to do more steps in my head.
Typing made the way I code more iterative. It's no problem at all writing code that will not be in the final commit. I often worried about writing clean code, which limited me and slowed me down. Now I'm able to write code without worrying about how it looks because immediately refactoring a line of code after typing it is so easy.
It's also about navigating and editing code
Before knowing how to type, I failed to get into using VIM (or its keybindings) countless times. I tried but never managed to build up muscle memory navigating and editing code the vim-way. Nobody told me that typing skills are almost a hard requirement for benefitting from VIM.
After I was able to touch-type (even though I was still very slow), it only took me a week to pick up enough VIM to feel productive.
Only a fraction of "writing code" is actually about writing code. It's easy to overlook how much working with code is about editing and navigating it.
It's not only code we type
Often we are focussed about writing actual code, that there are many more things that depend on being typed so that we can contribute them to a product/team/discussion:
- code reviews
- slack messages
- documentation
- user stories
- stack overflow postings
- ...
Being Able To Type Without Looking is not the same as Touch Typing.
Here I can only speak for myself:
I could type without having to look at the keyboard. It's hard to explain but always using the same finger for the same keys when touch-typing still feels very different from before. The actual typing requires not nearly as much attention as before, and I can focus almost entirely on the code instead.
Why Nobody Talks About Touch-Typing
Among developers, there are two main groups.
Many developers learned how to touch-type at an early age at school. Therefore they take touch-typing as given and are not aware of how much it impacts their work.
The group of developers that did not pick up touch-typing during childhood would need to invest a lot of time and energy, learning how to type before actually experiencing the benefits.
Learning how to type takes time. After typing without a system for years, most people are still able to type quite fast. As developers, we depend on our efficiency. Learning how to type means becoming much slower at first, and this can be quite scary.
Therefore there are not too many people that learn how to type as adults.
For myself picking up touch-typing was more than worth it. Because I benefit so much from this decision every day, I want to share my experience, maybe even encouraging somebody picking it up, it's never too late.
My Touch-Typing Journey
Because I built up some muscle-memory by typing without a system for all my life, I struggled to relearn my finger movements.
For that reason, I chose the most radical way possible:
COLEMAK for the win
I took all the vacation days I had accumulated and switched my keyboard layout from one day to the other from QWERTY to COLEMAK.
To be honest, this was hell. Suddenly I couldn't type at all. Looking at the keyboard was not helpful anymore at all, because the letters on the keycaps did not match their actual letters.
I struggled to type even short URLs into the address bar of the browser.
To slowly relearn everything, I used the site https://www.keybr.com/ by starting with the smallest keyset possible.
To keep me from looking at my hands, I printed out a COLEMAK schema and put it on the wall behind my monitor.
As I finally progressed to the full keyset on keybr, I switched to https://www.keyhero.com/ for my daily training.
After two weeks, I was still slower than before but at least fast enough to start working again without being afraid of not being able to keep up.
From there on, I went from 6 hours typing practice a day to only 2 hours after work. After another month, I stopped practicing everyday and only practiced occasionally.
It took me about four months until typing felt like something natural to me. Today I'm still not too fast (about 70 WPM), but I think speed is only a minor factor for the positive impact that touch-typing had on my work.
Let me Hear Your Thoughts
What are your thoughts on this? Do you agree or disagree? Why?
I'm interested in all kinds of thoughts, opinions, and experiences. But I'd love to hear from people that picked up touch-typing at a later stage of their life and whether you had similar experiences.
Top comments (39)
Touch typing? Absolutely.
Vim? Sure. It's available in all macOS & Linux systems and easy to install on Windows or most major IDEs. I can still use a non-Vim editor just fine.
Non-QWERTY? I can't justify this. The issue for me is portability: as soon as I want to use a public computer or a coworker's computer, I'm fumbling trying to remember the old muscle memory. It also prevents anyone else from using my machines (which, admittedly, could be a positive). Also, I can't easily rearrange the keycaps on a laptop, which is mildly infuriating even if I never look at the keys.
Speed can be compensated with practice. Ergonomics can be compensated with keyboard designs.
I would not recommend switching from QWERTY to COLEMAK to anyone that already can type on QWERTY.
In my case, I struggled to get rid of some bad habits because I was already used to type on QWERTY but without a system.
Therefore changing to COLEMAK helped be to "reset" my muscle memory.
That said:
It's not that bad. On newer macOS versions as well as on most Linux Distros you can change your Layout to COLEMAK with a couple of clicks in under 10 seconds. If someone needs to use my computer I can switch it back in the same time.
If I have to type on QWERTY I'm still fast enough to type a couple of lines on a public computer. It actually helps if I deliberately look at the keyboard while typing.
I never bothered changing the keycaps. The only scenario where this causes some minor inconvenience is if I need to hit a single key out of the blue without being able to position my hands on home row before.
Great point with the Non-QWERTY keyboards.
Even when it comes to Vim, I have co-workers who have customised their Vim config just enough to have it wreak havoc when they jump onto other keyboards (even something as small as re-mapping the leader key).
I've been using COLEMAK for several weeks and wishing I'd done it years ago; it's incredible how much easier it is on your hands. Everything just makes sense (although there are a few mildly awkward patterns here and there). I highly recommend to try it out to everyone who can afford the adjustment period and primarily works on their own machine.
In college I took a semester (10 weeks) of typing. We met 3 days a week in a one hour class led by a professional typing instructor. Total class time was 30 hours.
Total homework practice was about 90 hours.
This amounts to 120 hours of work total.
The payoff has been 30 years of excellent work as an IT Software Developer . One of the best investments in my life.
I honestly had to look up what touch-typing was. I assumed some crazy 10x developer typing technique.... then realized it was the regular home-row thing I was were taught in high school.
Is typing not taught in school? It was literally the only computer class I had (they had computers, but clearly didn't know what to do with them). I am suddenly wishing I was working near my colleagues, just to see how they are typing. I am stupefied find out that touch-typing isn't necessarily how they are working, this would be much harder, but I guess not unusual.
Don't know how things were in your school system, but for me, typing classes were an elective. Also, in my typing classes, I was one of the few men (actually... boys) in the class. It was treated as something that was taken by those who were expecting to become secretaries. But oh mannnn, am I glad that I took those typing classes. They are the single-most utilitarian classes that I've ever taken - in any subject.
Exactly, that's what I'm wondering, if it is not always taught now, with the assumption that kids just figure it out. Looking back, it probably was treated a bit like an office trade-skill, but I agree, it was probably the most practical thing I learned in school, especially given that I can take it for granted.
Great post, I can definetely relate!
I'm now only a year away from my bachelor and yet, started learning touch-typing only two months ago.
I never learned it at school and for some reason never had the motivation to do something about it myself. It was kind of like eating Asian cuisine with sticks - the way I did it was not the official and most efficient way, but it seemed to work for me.
Until at some point I came to the conclusion that, as a person that is planning to get more into software development, I simply have to acquire that skill at some point. Might as well be now.
So I started taking some online-classes and boy: my writing became frustratingly slow at that time. Re-learning something is truly a lot more difficult than learning something from scratch.
Eventually I became faster with time. I am still in the learning process. Yet my writing speed has hugely improved even now. Also, I'm more convenient with hitting the right keys.
What I found out as well is that the right or wrong keyboard can make a huge difference!
Keep it up. It's hard but you will benefit from it every day for the rest of your life (:
Typing is definitely an important software development skill, but hardly the most important one. I do plenty of typing, but I do far more thinking, analyzing and discussing (most often resulting in less typing). If I typed at half the speed, that would be much less of a problem them if my logical and critical thinking skills were only half as efficient.
As I see it, typing is a job description for software developers in the same way that writing emails and sitting in meeting rooms is a job description for managers: it might cover a fair part of their spent time, but it's not their main skill, nor the key to their added value.
That's not the point of the article though; It's not about effectively saving time over the day, but not losing your line of thought in those rare moments when you actually do have to type a bunch of code.
The point is that typing needs to be friction-less, so it doesn't get in the way.
Fair point. I've seen far too many people obsess over perfectly minimizing the amount of characters that they type (rather than optimizing their high-level flow), that that's what I read into this article too.
I started learning typing at a young age, but didn't get serious about it until I knew I was going to end up in tech around my early teens.
At that point learning to type was more about being able to type something in chat before I was about to re-spawn in Halo than learning any valuable skill!
Even then I was able to type decently fast, with bad habits, and looking at the keyboard. This worked for a good while as I knew what I wanted to type, and just needed some visual feedback. I slowly was able to look less and less at the keyboard over time, but I never found it to be that big of a deal.
I only really had to commit to touch typing once I got an ergonomic split keyboard, where "reaching" for other keys became impossible as the distance went from an inch or so to almost a foot between where my hands were placed. Such a setup bashed out the rest of my bad habits. Even today if I have to type a
&&
or*
I'll probably look down on my keyboard to double check the placement of those keys. Does it hurt productivity? Maybe, but so does spelling variable names wrong, and not thinking of a good name in the first place!Now I'm not sure if touch typing is the most important skill developers don't talk about, I think communication is probably the #1, as you can type slowly, but be more effective when you type. You also can be writing code that is highly complex, where typing it is actually the "easy" part.
As for QWERTY vs COLEMAK, as some of your other commenters have already noted, I would not recommend this if you're already very proficient in QWERTY. I would also be hesitant to even attempt this because I can't count the number of times that I've had to walk over to someone else's keyboard and sit down to crank out a few lines of code. (Often, when we're in the middle of a troubleshooting session, I say something like, "Here... do you mind if I 'drive'?") And obviously, if I was trained in COLEMAK, that would be incredibly awkward.
However, I must ask: Do you know how we came to have a (default) QWERTY layout???
QWERTY was created with the express intent of being inefficient! It's true. You can google it. You see, back when all typewriters were manual, and all data-entry was done on typewriters, if you hit the keys too fast, you could jam the lever arms together as you were typing. So one way to minimize this problem was to put the keys in a configuration that was sub-optimal. Of course, with enough practice, any configuration can be utilized in an extremely fast manner. But QWERTY kept most "casual users" from jamming the machine.
QWERTY has been proven to be less efficient than other configurations. So... since none of us are typing on manual typewriters anymore, why haven't we moved away from QWERTY?? The answer is that it's a textbook example of "entrenched standards". The (societal) cost of trying to switch simply isn't worth it. So even though QWERTY is demonstrably inferior, it will probably never go "out of style".
This is completely untrue.
And most of it comes from debunked dvorak propaganda. :)
smithsonianmag.com/arts-culture/fa...
I learn something new every day!
Code quality is infinitely more valuable than code quality. Indonr see how touch typing is relevant at all but I might be missing something. Most the time coding should be thinking and designing not typing. Typing is kind of a small part of it.
I'll admit that when I'm coding, no-look typing is probably more of a "nice to have" than a necessity. I say this because most coders spend the vast majority of their day reading code (and, obviously, understanding it) rather than typing code.
But I definitely would not say that "touch typing" is irrelevant. Most coders still spend a good portion of their time (too much time) doing "other" things on a keyboard - writing emails, specs, chat conversations, etc. Touch typing allows me to crank out a high volume of detailed info in an incredibly short period of time.
Even when I'm doing "pure" coding, sometimes it's incredibly valuable to never have to look at the keyboard. You know those periods - when you know exactly what you need to crank out and you're "in the zone". During those times, I find it incredibly useful to be able to get all those digital characters on the screen without ever having to look back at my keyboard.
once you get used to not looking down at all whiel typing, you almost forget the keyboard is even there and focus on what's on the screen and on your own thougts, which to me seems very helpful in staying focused on the important parts of programming: the logic. Sometimes I even close my eyes for a few seconds while typing to structure my thoughts into something I can actually turn into code (or words, when I'm writing prose)
I have been working on my touch typing on keybr. It's great so far. I already am seeing great benefits, but struggle to touch type outside of practice.
I was mostly a two finger typer for years, made an effort a few years to get better and benetited greatly from it. Making another run at it now.
One thing keybr has highlighted that most of my issue is in my left hand. It's so uncoordinated.
Idk if I understand the reasoning behind COLEMAK... Did a little reading it just puts most commonly used letters on the home row. The history of QWERTY is important though as it originated as a way for keystrokes to be from different sides of the typewriter so that you could type more efficiently without the risk of the strokes crossing each other. I can imagine that QWERTY is and should be the logical choice, mainly because it's the defacto standard. Then again I learned close to 30 years ago to "touch type".
As this article points out though. You can type as fast as you want ramblings, but thought needed typing is slower anyways. So stick w QWERTY