> It’s difficult to type and think at the same time, so any time spent writing is a pause in thoughts, which can derail the flow.
I'm a competitive typist. I'm also a programmer. The main positive that I see is that typing no longer requires thought. I think of the code I want to write and it's transcripted onto the computer.
I would say that it's more advantageous to type _accurately_ than quickly. Typing competitions generally require 100% accuracy, which gives me a great amount of belief that what I'm typing is correct, without having to look at it / check it over and get side tracked from the code itself.
> The main positive that I see is that typing no longer requires thought.
I can't emphasise this enough.
Whenever I see even experienced programmers searching for the right keys or trying to correct their mistakes I just feel sad for all the lost productivity. It's also about not using the subconscious muscle memory which means a good chunk of conscious mental bandwidth is getting wasted on repeated task that could otherwise have been used for programming/creativity etc.,
By a sequence of happy coincidences I got trained as a touch typist before I could go anywhere near a computer. On a real mechanical typewriter. So by the time I was learning programming I was focused solely on learning it as opposed to fighting the keyboard. The benefit of touch-typing can't be emphasised enough, if it were up to me I'd make touch typing a mandatory skill training course.
I learned to touch type in 1986 on a manual typewriter in secondary school. I knew I was going to work with computers and figured touch typing would be a worthwhile skill. I was the only male in the class and copped shit from my peers for taking the subject as everyone else perceived it as a class for women looking to go into secretarial work. To this day I still think it is the best thing I learned at school and it absolutely amazes me that touch typing is no longer taught in school in this age of ubiquitous computing.
One of the best programmers I ever worked with was hunt and peck. I told him learning to type was a godsend. He did not care and continued to crank out tons of code. It was just painful to watch someone that experienced having to search around for keys. He was fine with it though...
I have the same mechanical background as you. It took me years to stop absolutely blasting the keys when typing though. It did speed up my word count doing that too.
For me having to stop and look for a key is a jarring thing. Usually because every manufacture wants their 'own touch' on the keyboard. Laptops being the biggest offender of this.
yep, it's why I've always been of the opinion those who say they don't need to do it because programming is more about thought than typing don't fully grok what it is about touch typing that makes it so beneficial to developers.
It's kind of a trite thing to say, but one of the most valuable classes I took in HS was typing. I won't say it was _the_ most valuable, there were plenty of other valuable classes, but typing was one of those classes that was considered a lazy elective but definitely should have been required (imo) and I consider myself lucky to have taken it.
I say programming is more about thought than typing and I stand by it.
The thing is, the level of typing you need to achieve to get to the point where typing is no longer the bottleneck in your flow is such a low bar. I have not worked with a single developer in my career where their ability to type has been a bottleneck for their work. I know anecdotes aren’t evidence.
Don’t get me wrong, I believe being a strong typist has a ton of benefits for a developer. It just seems like a baseline skill at a certain point for anyone in a software related field.
The funny thing is it's not at all hard to learn/develop. It's just about following typing lessons curriculum for 3-4 months ~40 mins/day. Even if you don't like it very much think of it as a one time investment in grunt work and get it out of the way and you are set for life time of repeating the benefits.
I don't. I spend a lot more time thinking, debugging, and designing software than I do typing it. I am a decently fast touch typist (about 90WPM), but I don't think it makes much difference in my day-to-day ability to output software.
Before I was able to get a job with computers, I had jobs as typists. I had one job typing (on paper with a typewriter) trust documents for banks. You had to produce the entire page without any errors, no whiteout or the ink-lifting correction stuff.
It was more discipline than other typing jobs, but paid off. I also never think about typing unless I'm having to recreate emacs or vi commands on a weird touch-screen keyboard or that time I learned Dvorak for a while.
As someone who has 100% accuracy, how do you avoid the kind of typos that result from incorrect finger synchronization, like 'teh'?
These synchronization errors have been the main source of my typos, unlike the kind of typo caused by individual finger imprecision, like accidentally hitting 'p' when meaning to type 'o'.
It occurs to me that because we use both hands, the way we type is inherently 'asynchronous'. For example, when trying to type('the'), the individual 'function calls', typechar('t'), typechar('h'), typechar('e') may be initiated (i.e. fingers begin moving towards their target keys) in that order, but there's no guarantee they are terminated (i.e. fingers hitting their target keys) in that order, because typechar('h') is performed with the right hand whereas typechar('e') is performed with left, so typechar('h') cannot "block" on typechar('e').
But if we were to make each typechar action wait for the previous one, it would be unacceptably slow as well. So it seems the only solution is to invest time in developing just the right muscle memory where everything is timed perfectly.
I‘ve been playing the guitar for very long, and it occurred to me that physical health correlates with my ability to synchronize both hands. Having a steady hand helps tremendously with that IME. I noticed e.g. when I quit drinking (even occasionally) that I got way better at this. While typing, I also started stumbling way less over complicated words at that time.
Practice did help too, but tbh, I practiced a _lot_ and it was frustrating seeing other players be so much more accurate than me while I had likely practiced just as much. Being healthy is just a competitive advantage.
It is sort of like learning a piano. You learn cords. You break words into chunks and work out from there. Now after this whole thread I am conscious of it (grr). Also there are two little nubs on most keyboards on the f and j keys to get you into position quickly. Feel for the nubs and type away. Miss them and it is jumble city.
Yes! The app that I used for learning touch-typing even had a metronome built in, and it encouraged you in the instructions to enable it when practicing.
This is something that's bitten me as I've gotten older. I used to be extremely accurate, but keep making this mistake... most often with space actually. So I end up writing 'th ebird' instead of 'the bird', for example. Also interested to hear OPs secret here.
Maybe not putting pressure on this muscle memory to perform accurately, so a lack of intentional practice. We're not really punished for typos with spellcheck and IDEs picking up a lot of the heavy lifting, so there isn't a lot of mental pressure to perform well here. Or it's simply aging related decline. It may even be a waste of time to worry much about it.
Speaking only for myself, it helps to think of those keys as a unit: as 'the', not 't' (then) 'h' (then) 'e'. If they're a single sequence of movements that I can turn over to my unconscious brain to execute, then my accuracy goes way up. Typing speed then is about coding more and more words into that "reflex space".
I don't know, exactly, but I think I've got most of the common words and key-combinations up to about five characters into that state, and a few longer sequences as well. (I have one long and challenging password I type frequently which I cannot accurately type letter-by-letter, but do just fine when I stop thinking about letters at all.)
If I wanted to type faster (I do ~80wpm on online typing tests) I'd practice more sequences, but I can't seem to think any faster than that when I'm doing moderately complex work. Typing latency doesn't hold me back; brain latency does.
Anyway, that's how I've developed that muscle-memory that you mention.
It works well enough for German as well, the letter frequencies aren't that different. (You just have to make some arrangements for the Umlaute etc, but they are in awkward spots on the German QWERTZ layout as well.)
I think the NEO and NEO2 layouts were designed with a variety of languages in mind.
Yeah, if the system I'm using has excessive latency (more of a 90s problem than today) precision means even when I do mistype, I'm "feeling" it and backspacing, not seeing them (since they haven't echoed yet.)
It's definitely about getting to the point where you're not thinking about typing, you're thinking about words/sentences/lines of code (or higher.)
I particularly noticed this when going from perl to python - in perl you were typing fewer characters, in python you could use more mainline english typing and not care that you were using more keystrokes...
> if the system I'm using has excessive latency (more of a 90s problem than today) precision means even when I do mistype, I'm "feeling" it and backspacing, not seeing them (since they haven't echoed yet.)
Perhaps I'm just overly sensitive but if the input latency from keypress to echoing is consciously perceptible then I consider that already unusably slow. I can't imagine using a setup like that regularly. Special case being something like a slow SSH connection, where I do have to just "feel" it and proactively correct mistakes, but I fortunately don't regularly have to connect to servers more than about 200 mi away.
yeah, I mean, when you get a certain adeptness at typing, you don't need to look at the keyboard OR the screen. I've answered verbal questions looking at the person, while finishing typing a sentence about something else (and used to do so pretty regularly when I worked in the office). The maximum tier is being able to backspace the correct number of characters back to the mistake.... hahah (not something I've really managed, that I can recall)
Lucky you. In my previous job I had to work many hours a day over SSH or even RDP on servers an ocean away (servers in the SF region, I worked remotely from europe).
>if the system I'm using has excessive latency (more of a 90s problem than today)
Hmm? If anything a lot of modern software is worse even from 80s latency, from extra processing going on in the editor, all the way to inefficient polling and scan rate in keyboards, USB latency, monitor refresh latency (next frame, 60fps = ~16ms wait if you're unlucky and press towards the start of a previous refresh) and so on. And that's not even accounting for extra layers like Electron.
Sure, https://danluu.com/input-lag/ has probably done the most thorough review of this. But in the 90s, remote work for me meant a lot of interactive sessions from Boston to the Bay Area, and this decade, it means "pull all of the code locally and build it locally" because terabyte SSDs are free and I still use emacs :-)
Until now I thought I was a good typist. As I tried writing a rebuttal I realized that while I don't "think" the motions, I do have to think about each letter, what case to use, the actual spelling of the word. VS just thinking the thoughts.
I did know a guy once who was one of our rockstar devs. While he was incredibly smart, I think his real superpower was how fast he typed. The words just appeared on the page. And if you were over his shoulder, his accuracy didn't decrease that much. When someone is watching me, I lose 50% accuracy.
For me typing is muscle memory. My fingers just do the thing necessary to produce words. I slow down to a crawl typing random strings of characters or new words/names because I don't actually know how to touch type I think. I just know what finger movements produce a word. It's kind of like how you don't think about how to ride a bike. It's just something you do in the same way that you don't manually breath although you could.
Typing correctly when someone is watching us more about not not letting someone's possible judgment distract you. When you are manually typing, it's just not as fast.
Heh, have you ever had someone ask you what keybinding did something, and you had to actually move your hand to recall it? (That may be more specifically a skilled-at-emacs thing, then entirely generic typing...)
At work I was given a generated password (not my login password for context) of random words with numbers replacing/inserted at random points which I quickly memorized and used several times a day.
After touch typing it through muscle memory for 6 or so months one day I misentered it a few times in a row, and I realized I had no idea what I actually had been typing the whole time (I knew the dictionary words, but the combination of numbers and where they appeared was the issue). Spent a while trying to zone out and let the muscle memory take over again but didn't work and finally gave up and asked for it to be reset.
Relatedly, I type both sides of matching pairs (parens, quotes, braces, etc.) and then left-arrow back into them to fill them with content. This is convenient to keep them balanced and because they are awkward to produce so I might as well do both in one motion.
When people see it they sometimes ask me what keyboard shortcut that was, but no, I just typed them and backed into them.
I feel this for my passwords. I can type my password without thinking about individual characters but if I need to recall it I'll have to move my hands.
Oh yeah I can agree with the muscle memory of it. I often cannot remember little nuances of syntax when instructing others what to type, but it just comes out if I’m typing it. I often have to go start typing it in a scratch pad to double check myself hah!
I also realize how much of what I use all the time is actually “ctrl-r <first few characters of commonly used one liner>” and have to go double check that when working with others. A blend of muscle memory and a search index of commands.
I tried to type your entire comment in my address bar as I was reading it to assess my own speed/process, and it's interesting that even though I didn't notice your typo
> "us" more about not...
I did type the same. So I did not really type what was in my head (my "inner voice" read "is").
Mildly chuffed to see there is someone else out there like this; I'm the exact same way. I don't touch type properly, don't use home row, but type at a pretty decent clip when it's familiar - even code. Slow down quite a bit in new territory.
What sometimes gets me though - I think one word, but type another. It's almost always the same starting letter or letters though. It's like the muscle memory kicks in, but takes the wrong fork in the road or something. Very odd.
This happens to me all the time! “Thought” instead of “though” comes up often, but I know I’ll just type in completely different words than I meant to as well. I am always reading back anything I send a minute later, just to catch the silly mistakes and correct them. It is probably annoying for the people reading the newly-sent message, when it shifts around while they are reading it. Sorry!
This! It's almost like my fingers have a mind of their own. Occasionally this actually gets in the way, for instance I want to type 'own' but my fingers decide to type 'one'. Do you have this as well?
In high school, I took two semesters of typing on typewriters. For our tests, Mrs. Beck would take the correction ribbons out. There was no point in trying to fix anything, keep going as fast as possible.
We went to a tri-county competition that used computers instead. I was the only one from my school that realized we could correct our mistakes during the competition. I sacrificed a bit of speed to get 100% accuracy and won the whole shebang. Mistakes were heavily penalized in the scoring.
> The main positive that I see is that typing no longer requires thought. I think of the code I want to write and it's transcripted onto the computer.
This. This is everything. Translating your thoughts to the computer efficiently is better than doing it quickly. It's not just for creating tons of code, it's for operating on your existing code without having to make space in your head for typing. Once typing happens automatically, your focus improves.
This is why I love vim style editors so much as well, because they more directly translate the act you want to perform with what you tell the editor to do. While someone who hasn't learned to use vim is scrolling around with arrow keys and holding down shift to select, or trying to point a cursor at the right place to double click I've entered the three characters ciw into my editor and its already deleted the current word, place my cursor at the beginning, and put me into insert mode to start typing the replacement.
I wouldn't even say I'm a super proficient vim user, there are people who are way more immersed in it than I am and who can leap around files at phenomenal speeds, but even just the basics I know are a huge help in keeping in the flow of thinking about what I want to do rather than how I'm going to do it.
Isn't the goal of touch typing that you no longer have to look at the keyboard? So you can still be paying attention to the screen while typing, i.e. you're not going to type 30 commands before noticing that something is off.
Touch typing you usually end up basically 'sending the commands' to your fingers before you put much though into it. So if you are off by 1 char or forget which mode you are in you can really destroy yourself. Most touch typing is also taught without you even looking at the paper/screen. The idea is your imagine what you want expressed and your fingers just 'do it'. I have done both of those things hundreds of times. I will do them again. As typing is just something I do not put much thought into until something is very wrong. At 90WPM you can get a lot of chars in before you figure out you have reallllly messed up.
When I start getting rusty, I fire up gtypist. It does key movement exercises (e.g. dedede dwdwdw dsdsds dadada) for many combinations of keys. It really helps. You do need to make sure you're following good typing practices however.
Its one of my top software role models. Minimal UI thats easy on the eyes and loads instantly, adaptive behavior thats ubobstrusive, really useful reports.
Undervalued skill! I think having access to quality typing skills enables a smoother interface to computers in general, which makes using them substantially more pleasant.
I don't quite type as fast as I think, but as I type this, I'm considering my phrasing more than I'm considering how to put the phrasing into the text box, so I feel like I'm experiencing a slower version of what you're talking about.
> access to quality typing skills enables a smoother interface to computers
100% agree! I actually studied the use of typing exercises in CS college students. Incidentally, the lowest performing students benefitted the most having those available.
It strikes me that touch typing prose is actually very different to coding due to all the symbols. Also unlike prose, a lot of time is spent editing or refactoring the code. How much would you say your typing competitions actually have an impact on your coding speed?
Don't forget there's a lot of prose in software development, too.
You can always tell which people are comfortable writing their ideas down, versus those that don't, by how they express themselves in emails, issues, documentation, or comments in the code.
Note that good IDEs help with punctuation, and you can touch-type those, too.
> The main positive that I see is that typing no longer requires thought.
What I find the most interesting in how I type (never really trained, it just "happened" over years), is that often when I make a typo I'm already correcting it before I register it with conscious thought. It's like the hand already noticed that something went wrong, so the backspace keypress has been dispatched autonomously without having to think about it or even observe the result.
> The main positive that I see is that typing no longer requires thought.
This is why I've been using keyboards with nothing written on the keys since 2004.
At the time, I was in high school and had no money to buy a professional keyboard, so I spray painted my cheap keyboard with black paint (fun fact: I'm still using that very keyboard to type this).
I've never looked at my keyboards ever since. I can type all letters and all symbols without thinking about it. As an IT person, I couldn't imagine how much brain energy I would waste if I were to look down and search for anything.
Yeah! Whilst usually a side show to real events there's a bunch of virtual and in person events.
Two years there was an event in the UK dedicated to typing. Last year the US. Virtual tournaments happen frequently throughout the year. The most famous one is likely the yearly event hosted by Keymash[0].
Octahedron is also a famous player in the scene. He hosts a Discord server for proficient typists and regularly puts on events.
How good is proficient? I just use a QWERTY keyword and my max is 143wpm, usually stable around 115wpm and after 10+ minutes of typing slows down to 100WPM. Is that proficient enough? Because I know of people who type at 200-300 WPM with their custom keyboards
Do people use steno keyboards for this (and why not)? The scores I'm seeing there are certainly impressive for ordinary keyboards but nothing close to the ridiculous records stenographers get.
Do they "require" total accuracy in the sense that the penalty for a mistake (or the time spent fixing it) makes it impossible to do well, or is a mistake actually disqualifying?
I love typing - it just makes a little ping in my little lizard brain. But if one of my jr teammates are typing out every single character of their code I will slap their ass and teach them about autocomplete and github copilot. So much faster to have jr type their code (as in define the types) and leave the typing (as in the writing) to the editor.
That still doesn't stop us from having typing (as in writing) races at the office which is a fun thing.
If rephrase that as “use moments of inefficiency to teach juniors how to use their tools better”
Showing someone how to use column edit, or macros, or automated method refactor, will change their productivity dramatically. It’s the role of leaders to teach and empower.
The article makes a good point about how little of software development consists of typing. This matches with my experience also, over several decades. There are so many things to optimize before "code input speed".
20 years ago, one of our guys hurt his arm and had his arm in a sling. The customer asked for a 50% discount on his rate - it was clear they saw software development as "fancy typing" rather than a process of turning business requirements into functional software.
The accuracy argument gives me flashbacks to the days of talk/ntalk/whatever conversations as a teenager, over 2400bps modems, cross country. I distinctly remember realizing I made a typo 3 words ago, while the cursor was several lines up, and being able to quickly backspace, fix it, and continue typing. It was so satisfying to finish my thought, and then watch as the cursor spewed out the words, the typo, go back, correct the typo, and continue on perfectly. This happened all the time.
My accuracy has only gotten worse as internet speeds have improved :)
I'm a competitive typist. I'm also a programmer. The main positive that I see is that typing no longer requires thought. I think of the code I want to write and it's transcripted onto the computer.
I would say that it's more advantageous to type _accurately_ than quickly. Typing competitions generally require 100% accuracy, which gives me a great amount of belief that what I'm typing is correct, without having to look at it / check it over and get side tracked from the code itself.