7 ms·
Typing speed? Not sure how much code people here write per hour, but I doubt typing speed is a real issue (the ratio of my staring at the screen thinking versus
by jwilliams 18y ago
Typing speed? Not sure how much code people here write per hour, but I doubt typing speed is a real issue (the ratio of my staring at the screen thinking versus coding is probably 10:1).
- 10ren 18y agoI agree, but in practice I feel annoyed by my typos, and not being able to type directly what I think. It's a nice feeling of skill, to dance across the keyboard, with a seamless brain-computer connection. Like playing a video game. I've tried to learn touch-typing a few times, but it makes my hands sore in a worrying way. Another resolution is typing more slowly, and not caring so much about typos, since it doesn't really matter.
- hairsupply 18y agoAgreed. Typing speed is very important when writing new features, but reading and comprehension speed is much more important for when you are fixing bugs in a multimillion line codebase.
- danielharan 18y agoIt's not a "real" issue, so much as a proxy. I've never seen a good hacker look at their keyboard, whereas there are plenty of people that get out of flow looking for a symbol. If a person can't type, I simply assume they're a noob and don't want them on my team. I don't expect them to have a very different ration of thinking vs. coding though :)
- jwilliams 18y agoI can see that - it's like musicians that don't rate musicians who can't play piano. But - I guess I've seen a few counter-examples in coding - e.g. I used to know a mainframe guy who had arthritic pain. He coded very slowly indeed, but it flowed out of him flawlessly.... So I tend not to have that bias. If I met someone who wanted to get into programming, I certainly wouldn't say "practice your typing" - I'd say, "read these books".
- jamesgolick 18y agoI probably wouldn't tell somebody to go practice typing either, but that's not because it isn't important. I would just take it for granted that they could already type.
- comatose_kid 18y agoActually, I'd say 'read these books' and 'learn to type'. Half of development is communication - writing emails, comments, docs, whatever. Why wouldn't one benefit from entering text more quickly? Anyways, there are probably a subset of slow typists that are good programmers. But I'd be surprised if they weren't the exception.
- bigmac 18y agoI used to feel this way, but then I discovered that the resident uber programmer at work is a two finger typist. He is brilliant; used to work at Xerox Parc and all that.
- tom_rath 18y agoI believe that corresponds with comfortable familiarity with and proper use of one's tools. I view a non-touch-typing hacker/coder much like a carpenter who drives nails using a hammer's handle. (The inevitable reaction from both camps: Hey, what's your problem? I'm using my tools to get the job done!)
- IsaacSchlueter 18y agoTyping ability is an effect rather than a cause of hacking ability. It's not so that you can type code quickly. The bottleneck in coding is always the thinking time, or you're using an overly verbose language. Typing is important because hackers communicate with one another using a keyboard. I've worked with programmers who couldn't type quickly enough to have a comfortable conversation over IM. It's torture. If you can't type, it's probably because you're not communicating enough. Hacking is not a solitary activity, and it's mostly not coding.
- jwilliams 18y agoNot sure I'm comfortable in that analogy. If the carpenter who used the hammer handle only had to drive one nail instead of the regular fifty, then that might be totally worthwhile (Naturally, this would never be the case for carpentry, but it certainly is for coding).
- tom_rath 18y agoBoth cases describe a person who has not learned how to properly use the most basic tool for their profession. How could that be excused?
- possiblemat 18y agoWhat other things do you do regularly? Write emails, specs, contracts, documentation? Of course you probably also do other stuff than typing on a keyboard. It's just that the keyboard often is the most efficient interface between you and your main tool, your computer. I think typing speed is a good competency to improve to be more efficient in the next few decades.
- strlen 18y agoThere are at least two people who I'd dub "great hackers" who type essentially, two fingered. One of them suffers from horrible RSI (but, at one point, had the company hire someone to be their hands). The other didn't grow up around computers/type writers (growing up in the 1940s/1950s in Soviet Union), didn't really heavily program until after graduate school and for the first decade mostly programmed by writing code on paper and having it punched onto cards.
- gcheong 18y agoThere was a guy I worked with who was one of the most productive people on the team and a great coder. He could type fast, but not by touch - hunt and peck all the way. When he had his ergonomic evaluation, after seeing the way he typed, the evaluator recommended he try voice recognition software. He didn't.
- ibsulon 18y agoGah - when I was out of school, they could have paid me minimum wage and I'd be thrilled to take a job to be a great hacker's "hands." I can't imagine many better ways to see a master work.
- plinkplonk 18y ago"when I was out of school, they could have paid me minimum wage and I'd be thrilled to take a job to be a great hacker's "hands." I would be thrilled to do it now, 15 years after graduating.
- zmimon 18y agoI knew a guy who was wheelchair bound with no use of one hand and the other only semifunctional, able to peck out keys one at a time. I can't claim he was a great hacker, but he managed to hold his own on the team and even outperformed some. If he can be competent with that level of impairment, I think it's got to be incorrect to claim all great hackers are great typists.
- joe_the_user 18y agoWish I could give the parent more mods... I personally touch-type maybe 50 wpm but that's for documentation, not code. If you are attempting to create code at the speed that you type, you are insane ... or you will be soon, when you try to debug it. If someone was lucky enough to think faster than they could type, they'd be able to think twice before they added more code to a program - a good thing! Just think. Is wpm a measure of a great writer? How could it be a measure of a great programmer. I'm not sure what a "great hacker" is. Are they something like sysadmin or maybe someone who does security?
- jrockway 18y agoSee my comment above. I spend a lot of time typing, even though I reuse a lot of code. (I write a lot of code: http://github.com/jrockway http://github.com/jrockway) It's nice to think that code types itself, but it doesn't. If you have no ideas, then it doesn't matter how fast you can express them as code. If you have a lot of ideas, though, you don't want to wait for your fingers to slowly tell them to the computer. You want the computer to know quickly, so you can move on to the next task. That's why typing is important. There is no brain/computer interface yet, so you have to do it with your hands and the keyboard. Suboptimal, but them's the breaks.
- jrockway 18y agoTyping speed is important for the reason the article mentions -- micro-interruptions. Most of the time, you just have to type a few words, and the editor will complete the rest for you. Fine. But a lot of the time, you are typing a symbol for the first time, and autocompletion doesn't really help. It breaks your flow if you can't type this symbol quickly and correctly the first time. (It is also worth pointing out that I can type most words faster than it would take to cycle through potential expansion candidates, so I only use it for moderately-long identifiers. Abbreviation expansion becomes less of a time saver when you learn to type more quickly.) Anyway, a few months ago, I decided I would learn to properly touch-type (and increase my typing speed). It was very difficult at first -- I couldn't type at all, and even simple programming made me really mad. A few months later, I can type significantly faster, and I make many fewer errors. (As an aside, I don't think touch-typing was really designed for programmers. All the important symbols end up under your pinkys, which is not very comfortable. So I compromise and type some symbols like ()- with my ring-finger. This probably reduces speed, but it doesn't hurt my hand.) The common response to typing is "programming is not about typing, it's about thinking". Sure, that's mostly true. Nobody expects you to sustain 120 wpm typing for eight hours a day. But, it's very helpful to type quickly in bursts, to get your ideas in to code form as quickly as possible. Sketching out that idea in 2 minutes instead of 3 means that your brain has more time to think about the problem, and has to waste less of its time babysitting your fingers. I know I get mad when my typing speed is delaying me from trying an idea as quickly as possible. That's why I decided to do something about it. I'm glad I spent the time to practice typing. It has made programming and writing more enjoyable, and didn't take much time or effort at all. The dismissive attitude of "programming doesn't require typing skills" is extremely naive.
- aaronblohowiak 18y agoLearning vim (edit: or emacs) is another step in the same direction (less transition to the mouse.) I agree that raw typing speed isn't that important. What I like is being able to see what is in my mind show up on he computer without too much hassle, so I can focus on a) perfecting my mental model of how the system behaves and b) creating a new model for the system.
- sofal 18y ago
- potatolicious 18y agoThere's more to code than just code. Most of us write a lot of emails every day, and hopefully most of us write a fair bit of documentation also :) How efficiently you can communicate with the machine is critical in programming because of the above, not because you're somehow faster at typing code - your brain cannot generate code at 60wpm anyway. Typing quickly, though, certainly takes away barriers to trying new things and prototyping really quickly.
- sofal 18y agoI can understand the "that's not the bottleneck" argument. But the problem with going too far down that road is this: Imagine if you had to wait one second for your keyboard to respond to any key you type (and one second between keystrokes). You could still produce awesome code and be a great hacker, but can you look me in the proverbial eye and tell me that this would not handicap you in some way? Think about the commands you type really quickly on the command line without a second thought. Think of the messages you send off to friends really quickly. Generalize this to the experience of using the Internet. Since great entrepreneurs are relentlessly resourceful, they can make great things come to pass using a 56k dialup connection, but I'm sure you wouldn't want a connection as slow as that. Why? If you want to think of it in terms of the argument you made above, then it's obvious that the bandwidth is unimportant because your connection is idle for the bulk of the time you spend using the Web. The important thing is not thinking of this as a comparison between how much time you spend typing versus thinking. It's more about maximizing the responsiveness between you and your computer. The less friction there is during these small bursts of interaction, the better.
- jockc 18y agoThis.
- gommm 18y ago"Imagine if you had to wait one second for your keyboard to respond to any key you type (and one second between keystrokes)" I've had this experience, while traveling I had a really slow internet connection and had to do some work via ssh to fix a server, it was hell... You go through that experience one time and you learn that being able to automate as much as possible with tools like capistrano and sprinkle for server setup is crucial (it also started me on the path to keep my /etc configuration files on git...)
- lutorm 18y agoNot to mention typing fast continuously is asking for RSI. I can type pretty fast if I try, but apart from the thinking vs typing ratio, I also avoid typing fast or continuously because I know that's asking for a relapse of my RSI. And whatever I gained by typing faster will be lost by orders of magnitude if that happens. The argument for touch typing to avoid distractions I agree with, but not raw typing speed.
- bitdiddle 18y agoWell I guess typing speed is important when programming Java. It's so verbose just some simple ideas take hundreds of lines of code. In higher level languages I'd say it's much less as issue.
- nostrademons 18y agoThat's what a good IDE is for. Eclipse or IntelliJ will write most of that Java for you. ;-)
- quellhorst 18y agoI have never seen a good hacker who was a slow typist.
- nostrademons 18y agoCould be confusing cause and effect. Good programmers write a lot of code, and if you write a lot of code, you will get better at typing it in.
- statictype 18y agoThe way I think of it - typing fast is an indication of familiarity with the environment. You can't be a good hacker without having logged countless hours in front of the screen, banging out code, emails, etc... I guess I wouldn't arbitrarily set the cut off at some fixed value like 60wpm, but if you are slow at typing and need to look at the keyboard, you probably don't have enough experience.
- gommm 18y agoI think it's not so much a question of typing quickly as a question of wether you are able to type without thinking and looking at the keyboard... When you get to that point, typing is just like walking you don't think about it and think about your code instead.
- Hexstream 18y agoRequired reading for every programmer who upvoted the parent (and who presumably don't touchtype): http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html http://steve-yegge.blogspot.com/2008/09/programmings-dirties...
- yason 18y agoThere's much truth into this. I think that if you don't have to think about typing at all you don't have to schedule time-slices for thinking and editing. It's just a side-effect that your fingers work really fast for almost anything when they're autonomous: this is the thing referred to in the article. For example, I often observe that I have two parallel processes going on: thinking and editing. I keep editing the file, correcting formatting, keeping lines beautifully cut and moving stuff around _autonomously_ while I'm still thinking about the _actual_ problem. It's like biting your nails when thinking over something: it just happens, you don't _do_ it. Doing stuff that you don't need to think about at all actually helps me in the thinking part. To be able to do that you have to master the keyboard, both for writing text, writing code and moving around (and you need emacs to move around quickly enough, imho hehe:)). I wouldn't want to imagine synchronising my trains of thought over a mental mutex in order to switch between editing and thinking. This means that there's minimal latency over your thinking and what gets into the program. If it's low enough, programming becomes fluid as you couple thinking and changing the source code in nearly real-time. I could guess that many poor souls who have spent way too much time over the keyboard have realised this.
- bumbledraven 18y agoAgreed. The best programmer I ever knew had severe carpal tunnel syndrome and had to use Dragon Dictate. Yet he could do things that teams of other programmers couldn't. Before I arrived he had made a network monitoring system more than 100x faster when the team responsible for it was on vacation. (The CEO reported that the events now flew by, whereas before you could easily observe the event stream crawling.) He later single-handedly implemented and maintained the router configuration system for an ISP that spanned the US and there was never a single (non-cosmetic) bug reported against it in the 10 years I was there, even in the face of changing requirements, new hardware, and the company constantly coming out with new connectivity services. He had learned to program in the days of punched cards, and he would do all his thinking on paper before he started coding. He would then dictate the code, top to bottom, without any bugs. I'm willing to concede that he's an outlier.