Typing fast is an underrated skill for developers. A lot of the value added by various intelligent tab completion and LLMs is easily replicated by typing variable and function names at 100+ wpm.
Not a fan, however, of the desire to disparage the "right" way of doing things that's done in this blog. I type the "proper" way, home row and all, and can reach 150+wpm with high accuracy. So, based on this evidence, you're wrong and would be better off having learned the proper technique...
is an argument which I could make, and the evidence would be true, but it doesn't sound extremely convincing, does it?
I used to type >140 WPM at high accuracy when I was younger without home row. These days I think I likely sit closer to 90 WPM or so, since I really just don't really need to type super fast very often and am pretty out of practice. I reckon home row is probably not terrible or anything, but like a lot of weird old ergonomics advice, I just don't trust the idea that you must or possibly even should use home row. For example, the best advice regarding ergonomics I've ever had is not to have proper posture at all times, but rather to get up more frequently and not sit in the same position for too long. Likewise, it feels a lot more natural to let my hands move around a bit, and as it would turn out my mouse arm is the one that wound up having more discomfort from long term computer usage. So clearly, YMMV. But a lot of us who didn't do home row are confused; some people will go as far as to say it's literally wrong not to, and I say, burden of proof is on you all.
Staying at home row is not really about ergonomics. The best thing you can do (without breaking the bank, i.e., no bespoke split keyboard setups) for your hand ergonomics at the computer is to get a vertical mouse and tilt your keyboard downwards and away from you (the opposite of what most keyboard feet do, which is tilt your keyboard up and towards you). Both of these keep your wrist neutral/in slight flexion, whereas the typical setup keep your wrists in constant extension which contributes to carpal tunnel.
When my old mouse died, I bought a vertical mouse and sold it after a week. I was just too cumbersome to use. When I use a mouse, I keep the forearm and the wrist static and move it mainly with the tips of my thumb and pinkie. This was impossible with a vertical mouse, which expects you to grab it with the whole hand.
I found a regular mouse instead, but a decidedly asymmetrical one. This way my hand can stay in a less pronated position while still controlling the mouse the way I am used to.
Interestingly, vertical mice I've tried (yes plural) feel intensely uncomfortable and make my wrist hurt. I actually quite like to use a trackball, but I'm not sure that did much for me either. Best I've ever done is just use the mouse less I guess. Maybe I'll learn to use a pen tablet as my primary pointing device instead.
I'm a big fan of using the mouse less. When I was having issues, I learned to use the mouse with my left hand. I got used to it enough to be nearly as fast, but I never liked it so it encouraged me to just use keyboard shortcuts.
I thought I invented it, but I've since seen occupational health and safety websites recommend alternating.
I've seen it in NZ too. I think they suggested swapping the mouse buttons but I prefer to just leave them and do my left clicking with both fingers when using my left hand.
Interesting! My personal experience is that using a vertical mouse very quickly cured wrist and forearm pain that I had, and that the reason is because the "handshake" position is the most neutral hand/forearm posture from an anatomical perspective. But everyone is different, of course
I also agree that it doesn't feel like it makes any sense, hence trying it a few times. I never actually tried going to a medical professional to figure out why though, and thankfully it has not gotten worse (mostly better, with being more careful.)
I use a trackball mouse and anything else feels very cumbersome. It's so much movement moving my entire hand. With the trackball I just flick it directionally with one finger and then catch it with the other finger.
It's more natural for your palms to be basically facing each other. That's how they are when you're just standing up. Also think of steering wheel, joystick on e.g. a crane, or control yokes on aircraft where people have to hold it for hours at a time and possibly apply force. Neutral grip is also a thing in resistance training, for instance neutral grip pull-ups are easier on the joints. It stands to reason the sideways mouse, and some kind of keyboard that allows the hands to lie in a more natural position, would be less stressful on the various small parts. You don't want to be constantly moving things far away from their natural position!
I have been using a vertical mouse for a long time now, and it is very comfortable for me. But it does take some getting used to, when I watch others trying to use my computer they always struggle with it. Interestingly as well as being more comfortable to use, I find that it improves my pointing accuracy, feels like fewer unnecessary movements.
I wasn't getting RSI per se, more like my arms were fatigued after a day of development.
I did the pricey split keyboard thing. One advantage there is that my vertical mouse sits between the keyboard halves which means I don't have to "reach around" to grip it which has saved a whole bunch of muscle movement.
I got a split keyboard and for the first time in my life, my wrists are quite strained when I type. It might be a learning curve thing, but I wouldn’t go for a split keyboard for health reasons, just because they’re cool.
Instead of the endless search for the perfect static posture, just keep moving the various joints now and then. Adjust your elbow or wrist or the desk or the chair every now and then. This can make you look "unprofessionally" seated if you take it far enough so hopefully your workplace doesn't mind that.
Even if you are moving between multiple so-called "bad" postures, you'll be much better off compared to just being static in a "good" posture for 4 hours.
I don't even come close to groking how one types without home row hand placement. How does that even work? Where are your hands if not starting at home row?
I’m not sure if this how other people do it but my hands sort of float around as I type rather than being fixed in one place. They gravitate towards home row but I was never trained “classically”. I type (peak) 140wpm.
my understanding of the homerow style is that you have a sort of assigned finger for each key. while I type, there is plenty of overlap between fingers and it's constantly adapting based on where my hands are currently vs resetting to one position
I'd never say I'm a classic home-rower, but I do use it as a starting point. My left hand mostly conforms, but I really only use my thumb and first two fingers on my right hand, so i get what you're saying about your hand moving all around.
And, yeah, 120-150wpm. I wonder if "kids these days" don't type as fast because they didn't grow up with IRC and AIM and so on. Of course, they're way faster with their thumbs than I am. My phone typing started bad and gets worse every year (somehow).
The best answer to this is literally "I don't know." I can actually observe what my hand does and give you an answer, but the truth is that I don't conciously make a choice. I do rely on the bumps on f and j to align my fingers initially, and I know I make use of keys with different shapes as landmarks. Otherwise though it just kind of floats around. I would guess it looks a bit like playing a musical instrument (but I don't play any, so hell if I know.)
My hands float around and don't really have any rules except left hand for left side and right hand for right side, where the sides are loosely defined. Some keys I may hit with one finger just to hit it with a different finger on the other hand the next word. I don't really know how I do it, I guess it's all about using whatever finger is closest and my hands float around so that the closest finger isn't always the same. I don't need the ridges on the keys, if I can find the space bar I can find every key. I also rarely use my right pinky finger except to hit Enter, it's usually too slow for anything else. I learned to type playing PK MUD games and I was up to 130-140 WPM. Nowadays I don't play MUD games very much and I'm usually around 110 WPM when I check. Also, I need a specific layout or else I'll miss a lot. Laptops don't generally have the layout I need and I'm very bad on them.
My left hand is on WASD which I suppose you could call home row and my right hand sits at <space>KL;<rshift>
So it's not too far from home row but definitely something more influenced by my gamer days than any formal typing lessons. Just tried a web based wpm test and got 90WPM at 95% accuracy. Used to be around 120WPM in my college days where I typed more essays, but these days typing speed isn't close to the bottleneck so not much need for faster typing and I guess it's atrophied some.
Home row is a reference, and once you get used to where your hands are relative to that reference point, it's pretty easy to hit the other keys. This can of course be a reference other than home row, like GP - although I think home row is simply the most logical place for it to be.
I lowkey judge any developer who is noticable slow at typing as I can't imagine they're using a computer effectively at such a pace given how much keyboard hitting needs to occur during regular use alone.
Not that it's a high bar but I'm surprised more companies don't test wpm when hiring over rote crap like LC.
So the saying goes, but this article, and many people's honest experience, suggests otherwise.
Yes, developing complex systems is about thinking, not typing. But human head only fits so much, and once you pick up a tool to externalize your thinking, be it pen and paper, or text editor, or a whiteboard, you're limited by I/O. Reading is by far the fastest part, but if you're typing (or sketching) slower than you think, your entire thought process is now I/O bound.
There are many ways to improve this - with editors, you can use shortcuts, compose complex commands, use autocomplete, etc. - but the nice thing is, most of these improvements are purely additive. So it really doesn't hurt to learn to type faster than you think, and it'll definitely help some.
Instead of just disagreeing, I find I actually agree! At least with the premise of the I/O bound system.
At some point I realized that linear writing (typing or writing on lined paper) does not have the flexibility to express the thought processes that I want to commit to writing.
Now I write on blank paper (or an iPad if the thinking needs to be active for a long period of time).
I might be I/O bound but at least this way I don't need Serializable thoughts.
Maybe, but I often think fellow developers would get more mileage out of Mavis Beacon than the latest flavor of training from Pluralsight/AWS/etc
When effective comments, appropriate variable names, and the like can flow effortlessly from your fingertips, you're more likely to use them. Plus you're not expending your precious mental energy on the mechanics of typing out your ideas.
you're right. but the ability, given a good idea, to spit out a substantial amount of code that compiles and basically runs in a single session removes alot of the consternation and back and forth in those discussions
despite industry motion to the contrary, the truth is that we really can build anything we want. if we just weren't such cowards about it
Do you find that typos are the biggest barrier to quickly writing code that compiles and runs in a single session? I'm an absolutely _atrocious_ typer (in terms of both speed and accuracy), and yet I still genuinely don't think that actual typing takes within an order of magnitude of the time it takes me to get out a quick prototype compared to debugging.
Small note, when programming, there's other keys involved which allow for hierarchical navigation (ctrl, alt tab, up/down/left/right keys), which adds both some technical challenges by broadening the keyset and cognitive challenges (but of course code itself is highly cognitive.
I try to avoid the mouse, but I usually queue (mentally) a lot of keypresses at max speed, while the only bottleneck is the loading speed of the computer.
For example: alt tab (change window to browser), fn+F5 (refresh website , Ctrl Shift (change brower tab), fn+f5, ctrl shift tab (back to original tab), alt tab (back to editor or command line), etc...
Also, if I leave WASD for home row I quickly feel pain. Seriously, place the middle finger on W (alao used for S), ring on A, and indicator on D. It's so much more ergonomic it's insane.
When I was in the 8th grade (back in the 1900s), I took a typing elective class, because I figured if I was going to be in front of a keyboard typing for a living as a programmer, I should learn to do it right.
That was a rare very good decision for kid me back then, and it's paid off ever since.
What? You guys are talking about this as if touch typing is some rare skill. I'm pretty sure everyone around the office touch-types, all my friends definitely do.
A shocking number of my colleagues never learned. It’s no longer routinely taught in school. Many people have to look at their fingers when they type. This includes people who write code for a living.
Yeah - definitely there's always a few engineers with custom keyboards who type like 200wpm but on average its folks who seem to look down occasionally and type fairly slow (noticable when they're screensharing)
Opposite experience: I hated the school class and I remember some frustrating tools which, if you made an error, counted any reflexive backspace and corrected letter as two additional errors...
What really turned me into a touch-typist was all the arguing I did over dial-up internet the next summer.
same on both. On dial-up; I learned to touch type so I could insult my opponent after killing them, but before they re-spawned and could attack me again in a video game.
Starseige:Tribes - Typing in spare time on a ballistic trajectory... Though a good deal of that was also tapping out 3-4 keystrokes for the "V" communication tree, something that I think a lot of games could benefit from even in this era where there's enough bandwidth for voice chat.
With the amazing amount of client-side scripting the game supported, people made their own variations on the communications system, even carefully playing audio clips over one-another to get new speech.
Likewise in high school in the 1900s I took typing, which did markedly improve my typing though I am sure I didn't keep up with the technique I learned. We also learned all the standard letter formats and so on which I promptly forgot.
I measured myself the other day and I can do about 110-115 WPM, which I think is pretty impressive for a 50 year old who last took typing classes at 15.
Was mandatory at my high school; the only way to avoid it was a once-a-year typing test that was not advertised - you had to ask or hear about it. If you could do 35 wpm without errors, you didn’t have to take the class.
I probably had enough cachet with the teachers that I could have weaseled my way into taking it until I passed, but I did pass it, so problem solved.
9th grade for me. The teacher actually just graded us on speed and accuracy, that was my only C in high school. It served me well, however, I got up to 40 WPM and have kept to around 30 during my career (always fast enough it seems). Also, model M PC Jr. keyboards, so I can’t really complain too much.
I didn’t take typing lessons, but I’ve been typing since the 1980s, probably since 1987. At some point, I discovered that people typed without looking, decided that using 10 fingers and typing without looking at the keyboard was better, so I started optimizing for it, and it worked.
I spent basically all my life not typing correctly at all, since I learned from online gaming without a teacher.
I ended up with a technique that had my whole hand shifted to be over WASD like when gaming with pinky only used for modifiers. It was even worse for my right hand as only recently I actually monitored how I typed, and I highly underuse my ring and pinky fingers on that hand. Worst part is I never use my thumbs for spacebar, I found out I literally shift my entire right hand to use my index finger every time I hit spacebar.
Despite all of this I regularly typed ~120wpm. I think when it comes to speed almost everybody adopts at least some peculiar techniques.
I only say typed past tense because I recently got into split ergonomic keyboards with keywells and columnar layouts and my old typing technique literally just does not work. I had to learn how to "correctly" type from scratch, but relatively quickly got to the similar speeds. Now I can easily swap between the two techniques depending on whether I'm using my laptop keyboard or not and type almost the same speed, I'm still a tad bit slower using "correct" technique. But I will say it is a hell of a lot less movement and tension in my hands typing correctly.
> A lot of the value added by various intelligent tab completion and LLMs
Saving typing was never a value add for intelligent tab completion, it is mostly used for discovery and recall (what members does the type of this expression have?), not to accelerate your WPM. After around 20-30 wpm, typing speed is not a bottleneck in programming, but size of the API and how much you can fit into your head most definitely is.
While I was learning a new keyboard layout (Colemak) I went from > 100 WPM to starting from ~20 WPM. I think I got pretty productive when I reached 60/70 WPM and was surprised how much tab completion and computing assistance I relied on anyway. After that experience I think fast typing speed is overrated. (Now I’ve a somewhat useless skill of being able to type > 100 WPM on two different keyboard layouts.)
Edit: note if you are a typist and transcribe a lot of text for long periods of time without break, typing speed is important. But that’s mostly not any of us. But hey maybe I don’t write enough documentation and comments..
If you're working with a language you're not-so experienced in, then the completion for `// read data from file f into x` is going to be significantly quicker than looking up the documentation for this.
Depends on the language. Recently I got stuck on some issues with line-based processing of stream input with Haskell conduits and resorted to ChatGPT out of desperation. It wasn't of much use to me either, and then I ran out of free tier usage.
I suppose for emitting boilerplate or other ceremonial code LLMs serve as an augmented "copy/paste from stackoverflow" and increase your KLOC/time, but this is not really an interesting metric and production of source code was never the rate-limiting step in creating software.
Also- in my experience so far, LLMs do a far better job of accounting for things like this than I do.
For example I had claude 4 write something to recursive search the whole filesystem on a windows 11 machine and included a few checks for windows 11 file system specific things I wasnt aware of
Learning to touch-type effortlessly is IMHO one of the most useful thing to learn, for anyone typing regularly, but especially for programmers. It doesn't have to be fast, but just fast (and automated) enough not to cause a bottleneck.
Unpopular opinion nowadays: This bottleneck is what makes needlessly verbose programming languages annoying. Having to wait for your fingers (or eyes) to catch up with your toughts tends to kill the flow.
I also never learned the proper way of typing with home rows and all. And like the article author I also type at 100wpm. It's sufficient for me. I now need to try the author's suggestion of just typing as a therapeutic session. I suspect ~100wpm is enough for this therapeutic purpose whereas 60wpm isn't.
I sorta disagree, however fast you can type, the computer can manipulate text faster. Our brains are huge slow things. We should employ them at what they are good at, coming up with better abstractions and better frameworks.
The desire to type faster is a strong signal indicating that you need better macros.
People typing faster can make a huge difference at work: I get asked for help a lot, and when I ask someone to do something on their computer and they do it painfully slowly, that can represent a lot more time that I spend helping them rather than thinking about my own tasks. I thought this perspective was missing from the discussion, so now I've added it.
You could save five minutes by typing faster _and_ also spend five minutes thinking.
You are not considering all of the indirect effects. I.E.
Someone who types twice as fast is more likely to be comfortable to throw in that extra line of docs/comments that explains that whacky line of code.
Someone who has taken the time to improve the speed of the thing they are supposed to do for most of the working day, is a little more likely to be someone who cares about their job.
My goal has always been to type as fast as I can think, and if I need to move a lot of text around in a dumb way to use tools to help. Vim commands, text macros, refactor tools, formatters, etc. I type at about 90wpm, but when actively developing rarely go above 65.
Even just knowing how to move the cursor quickly (ctrl+arrow keys, using shift as necessary) is a good reflex to have. I always see people pressing arrows / backspace etc repeatedly rather than moving a word/block at a time.
Typing is not an underrated skill at all though. It's probably one of the most gatekeepy "you can't call yourself a programmer if you're bad at it" thing I've ever seen.
I use "dynamic finger allocation", close to the standard fingering but not exactly. It's hard to describe as anything other than "closest finger that isn't currently in use". My burst speed is over 200 (peaked roughly 240) but I usually stay around 160-170 in 1-minute tests.
Try typing words like "number", "bus", "zany", "excretion", etc. and you'll soon learn why sticking with the "proper" fingering is absolutely idiotic if you want speed and comfort. You can waste time and effort moving the "right" finger all the way from the bottom to the top of the keyboard, or just hit the key with the perfectly usable one sitting there idle.
To elaborate, when typing "number" I use the index and middle finger to chord "nu", then "mb" is the next chord with the left index and right middle, which naturally pulls down my left hand enough that "er" is easily done as a final chord with the left ring and middle fingers.
Not a home row typer but I believe that's generally the idea; it's supposed to minimize the amount of travel. I learned to type home row for a brief period though and it just felt very uncomfortable, I never got used to it. It feels a lot more natural to me to let my hands linger around the keyboard, even when using a split ergo keyboard.
atrophy? if you're not using your pinkies, how are you hitting shift/enter or other keys like [,],=,/,\? (that's an actual question, not trying to escape the punctuation)
Not OP but I pivot my wrists and use my ring fingers. I always found it difficult to reach and press keys with my pinkie. Small hands, I guess? Does anyone else do this?
Also small hands here. My own style involves using my shoulders and elbows for coarse movements, and when I need to type the symbol keys on the right I move my hand over to roughly index finger on ";", middle finger on "[", and ring finger on "enter". Moving further up or down for "+" or "/" usually also involves further hand movements instead of twisting or reaching.
I used to find it difficult to a lot of things, until I practiced enough to be able to do them, which is usually what that predicate implies. It's like people that say they have to use one foot for the brake pedal and the other for the accelerator because they find it difficult to use one for both.
>A lot of the value added by various intelligent tab completion and LLMs is easily replicated by typing variable and function names at 100+ wpm.
The contrapositive of this is that, if you don't type at 100+ wpm, intelligent tab completion and LLMs add a lot of value you wouldn't otherwise get. Most of us don't, so this ends up being a vote in favor of the AI.
The only time typing speed has helped me is when people try to gish gallop me when I’m messaging them and I’m able to gish right back faster than they can respond. That’s…not exactly healthy though.
i asked because the term was used in american news last week - not sure exactly when, and unfortunately, i can't find the clip from last week to link here.
Not a fan, however, of the desire to disparage the "right" way of doing things that's done in this blog. I type the "proper" way, home row and all, and can reach 150+wpm with high accuracy. So, based on this evidence, you're wrong and would be better off having learned the proper technique...
is an argument which I could make, and the evidence would be true, but it doesn't sound extremely convincing, does it?