We're a place where coders share, stay up-to-date and grow their careers.
Templates let you quickly answer FAQs or store snippets for re-use.
Following the WPM post from a little while ago, I learned that I fall firmly into the "painfully average" category of typist/programmers.
I'm no slouch, and certainly not a "hunt and peck" type of guy, but I'm definitely not a touch-typing wizard either.
My general thoughts on this are that it is pretty important to be able to use the tools of your trade effectively. A blacksmith who couldn't swing a hammer at all wouldn't be very useful. And it can definitely be frustrating to work with folks who are on the slower end of the WPM spectrum.
That said, I'd choose to work with a good problem solver over a fast typist every day of the week. I'd much rather write good code slowly, than shit code quickly.
I also never hesitate to suggest that the less proficient typists on my teams spend a small portion of their day improving that skill (myself included).
Typing on the slow side is definitely worthy of some pointed feedback, but I don't know that I'd be shunning, or treating anyone with disdain 😜
I don't care if somebody is fast, I just don't want them to be slow. I'm okay with painfully average.
I think it's a great idea to encourage typing practice. Faster typing provides faster turnaround on all sorts of tasks during the day, not just coding.
I disagree wholeheartedly.
1) We should be solving problems, not throwing SLOCs at problems.
2) This feels like unnecessary gatekeeping and self aggrandizing. Reminds me of a co-worker that had the Teh Most L33T Mechanical Keyboard that sounded like mortar shells dropping with each key press. Everyone was always so impressed with how fast he was typing. "Oh-Boy he must be such a 100x programmer!" When in fact he was trying to type so fast, most of his key presses were just slamming on the backspace repeatedly.
3) Along the lines of gatekeeping, this could also be pretty ableist. Not everyone who programs types with their fingers. Not everyone that codes can see. etc.
Perhaps I implied coding is the issue, but it's not the major problem. I'll copy from my answer to Isaac, typing is required for:
New code is at the bottom, where I think we all agree it should be. All that other stuff occupies a good part of the day.
But even with code, a lot of it is exploration. The faster you can move bits of code around, the better able you'll be to explore different options. Now I don't really care if this is typing ability, or you've become a master of your IDE tools and mouse. The point is that you have to manipulate the computer a lot, and the faster you can do that the better. This applies regardless of the interface you are using.
I'm also assuming that most of the detractors to my comment are decent typists. As I said in other answers, I'm not looking for people that are speed typers, I'm just concerned about people that clearly can't type. A guy doing 100WPM with 50% backspaces also can't type.
Whether you believe it will hinder your job or not, if you can't type reasonably you won't past any interview that involves coding (nor any that involves chatting online). This is a real gateway that programmers have to get through.
I think I fall in this camp too. Instead of sitting down and typing a gazillion lines I like the thought that we'd all step back from the problem and do one or more of the following: organize our thoughts, sketch and plan on a whiteboard or paper, discuss with others, etc. Usually these actions result in a better solution with less code, and lines of code are often a liability rather than an asset because of the bug density.
I disagree as well. Programming is not about typing fast. It's this kind of elitist sentiment that keeps people out of programming. As if STEM isn't exclusionary enough already.
I don't know anyone who spends most of their time on the job typing code as fast as they can. That's the Hollywood stereotype, but it's exactly the opposite of real programming. I spend most of my time on the job researching and thinking.
I type nearly 100 WPM, as tested my senior year of college. I do not consider this a necessary skill for programming.
In new product development, a coder may write 100 lines of original code in a day (he or she may contribute more lines, but much of it will be copied and pasted). In a more established codebase, ~10 lines a day is the norm (according to Fred Brooks's The Mythical Man-Month). You don't need to type 100 WPM or even 10 WPM to achieve that.
In fact, there is nothing I care about less in a programmer than whether they can type quickly. It might look impressive in a coding test, but not as impressive as a clear, brief and correct solution to the question.
The one thing that typing is really good for is writing about programming, which may not be super important for programming, but can do wonders for your career. A well-kept blog can be as valuable as a resume. I recommend learning to type for that reason alone.
I suspect it's because you type fast enough that you don't realize how important the skill is. Consider all these things that you use typing for:
If you're a slow typer you'll find your entire day slowed down. It's not about how fast you can write code, but about how fast you can type anything.
During coding I also find that slower typers are generally worse programmers as well. I don't know if this is causation, or merely correlation. I'd guess it's not just coincidental though. Your mind moves quickly. If your hands lag behind you'll have less ability to experiment, and you'll forget ideas that were forming.
These are good points that I hadn't considered. Thanks for sharing.
I strongly agree that programmers should learn touch typing at some early stage of their career. We do a lot of typing - code, documentation, bug reports, StackOverflow questions, community interactions, emails, dev.to comments... - and you are correct that time is too valuable to hunt-and-peck that all in the long run.
Personally, I learned touch typing in middle school (yay for "Mavis Beacon Teaches Typing"!), and I currently type at between 85-105 WPM, with 90+% accuracy. That skill has helped me tremendously in every aspect of my career.
While I'm at it, can I also say programmers MUST learn good spelling and grammar! It says a lot about a coder when "ebverythng they type looks like ths lol hey evrybdy see what i mean rotfl". The impression that poor/lazy spelling and grammar gives is that the coder does not care, is poorly educated, and/or is therefore probably incapable of following the even stricter syntactical rules of programming. Coders should take the time to use proper spelling, capitalization, punctuation, and the rest of grammar (minor exceptions granted for live chat.)
For me, the effort involved in proper writing is minimal, purely on merit of practice. Learn it alongside typing, and practice it diligently. Over time, it'll become second nature.
On that front, if the rules of grammar escape you, I strongly recommend the "Writer's Digest Grammar Desk Reference" by Gary Lutz et al.. Similarly, if you want to improve your writing style, "The Elements of Style" by William Strunk and E.B. White is an excellent reference.
Programming is ultimately about communication, so the better one can communicate the better a programmer they will be.
It's not a deal breaker, but knowing how to touch type, read, spell correctly, and express thoughts will help tremendously when programming. We're essentially writing out instructions, whether it be with code to give to a computer, or with documentation for other humans to read (regardless of language). The more clarity the better. Hunting and pecking at a keyboard will just frustrate the programmer. It's kind of like trying to write a novel, but not ever learning more than fourth grade vocabulary. It can be done, but would be easier if the writer had more words to express themselves to create a better novel!
Like others have already mentioned, I don’t believe the speed at which characters of code can be produced is a significant bottleneck in actually producing code. Even if we disregard that, in my experience, knowing a sufficient amount of the shortcuts of your IDE (or tool of your choice) has a far greater impact on the speed at which characters of code are produced. (I’d argue that IDE shortcuts have added, and greater, value because they avoid lots of potential typos, but that’s a different discussion)
What may be significantly impacted by slow typing, is that your pair programming buddy gets frustrated because things are going much slower than they’d like. Barring rare exceptions of truly slow typing, that’s however more of a problem of the frustratee than the trustrator.
Now to actually address the core observation of the post: I can type more than fast enough, as can most of my colleagues, but when somebody is looking over your shoulder (like in pair programming, but more so in interviews), that typing speed and proficiency tend to go waaaay down (at least for a while). So you’re not actually measuring their skills in general, but only within a very specific situation and with a very specific focus (which is a general and considerable weakness of interviews).
What prompted me to write this comic was a few instances of truly slow typing. It was my frustration in an interview that the person just wouldn't finish any significant part of the code due to this problem.
The pressure of having somebody look over your shoulder is significant, and you are right to consider this when in such a situation. The frustration somebody feels when watching somebody peck away at the keys is also significant. Both sides must be considered. I'd say it's much easier to improve your typing skills than change the patience of the people watching you -- regardless of how fair this seems.
If you have an IDE that serves your needs, then great, use it. If you need to refactor some code, and you have some IDE wizardry that does it quickly, then by all means, take that approach. I'd suspect that good keyboard skills aid a lot here as well -- shortcuts are not any faster if you spend your time hunting for the shortcut key.
I agree with most others here that typing itself is rarely the bottleneck for most processes.
That being said, this post did remind me that typing is a skill that I use every day. I invest a huge amount of time in developing my other skills, why not this one?
I've now set a goal to practice touch typing each work day, thanks for the inspiration!
We're a place where coders share, stay up-to-date and grow their careers.