4 ms·
While cool and useful if you have to write a lot quickly, I don't think it is very helpful for programming - typing speed is just not the limiting factor except
by danbruc 12y ago
While cool and useful if you have to write a lot quickly, I don't think it is very helpful for programming - typing speed is just not the limiting factor except in some rare cases.
- pgt 12y agoMy feeling is that the "tax" of typing slows down the flow of new ideas in the same way round-trip latency places an upper limit on bandwidth. By this reasoning I switched to Colemak on a Kinesis keyboard about a year ago and have been happy with my choice despite the initial learning costs. Ergonomics and a stable home row position are worthwhile benefits. I would like to try Steno if it means I can spend less time typing or thinking about typing so I can spend more time building stuff.
- danbruc 12y agoWhat does it typically look like? One hour thinking, five minutes typing? Yes, sometimes you have a sudden idea or insight and can't type it out as quickly as you want, but that is not the common case.
- UnoriginalGuy 12y agoYeah, people's strange fetish with programming really fast (e.g. "I use Vi because I can type faster in it, a mouse slows me down!") is completely out of touch with how I program professionally day to day. For most code that I write there is a modicum of research (e.g. online docs, requirements, etc), some time spent thinking about how it should be laid out, and a whole lot of frameworking (e.g. putting the code into the agreed upon structures or interacting with the structures, which is often an internal research stage also). The only thing I can imagine trying to write really really fast, is someone reproducing from memory various Computer Science 101 algorithms for funzies (you'd always use standard libraries in prod' anyway). Aside from that programming speed seems the opposite of how programming works. Yet it is constantly talked out (e.g. "I purchased a $150 mechanical keyboard to type code better," "I use Vi/emacs because a mouse/IDE slows me down," "I code on the terminal because it has less distractions," etc).
- DennisP 12y agoI thought the same thing until I learned Vim. It's not about typing faster, it's about being able to make changes almost as fast as you think them up, and staying in flow instead of getting bored and frustrated.
- UnoriginalGuy 12y agoYou just ignored almost everything I said. Writing raw code makes up a TINY proportion of what I do professionally day to day. Writing long code in a single stretch (e.g. without researching, checking other parts of the codebase) almost never ever happens (because code isn't created in a vacuum). Also I am well versed on Vi's functionality. I choose to use an IDE.
- DennisP 12y agoOur experiences are different then. I spend a fair amount of my time actually editing code.
- melling 12y agoI thought people bought mechanical keyboards because they were easier on the fingers? The keys often require less activation and you can prevent the bottoming out you get with the cheap keyboards.
- monochr 12y ago>"I use Vi because I can type faster in it, a mouse slows me down!" I use vim (or emacs) because the regex search/replace and macros mean that when I need to edit the same thing 5,000 times in a data file I don't need to fire someone in India for a week to hunt them down. Typing speed has very little to do with it, but avoiding the mind numbing tedium of going from underscore variable names to CamelCase or vise versa is a godsend. >I code on the terminal because it has less distractions, I code on the terminal because when I use tmux I can have the equivalent of 30 IDE windows open each looking at a snippet of code I need. Until I have have a monitor wall I can carry around with me that can display a few dozen different windows there really is no comparison. It's not about speed, it's about keeping in your head what you're doing. For example, there is a function call in a source file to fn_ive_never_seen(), in an IDE the best you can hope for is for it to dig up where it was defined, and maybe the header file if it's some C type language. I can open a new window on the terminal, grep the whole source base for this function, see where it is used, where it is defined and with sed edit all those definition to take an extra variable I need by just stringing together a few commands in yet another window. Again, it's not about speed, it's about getting a computer, which is very good at being pedantic, to make sure that every last mention of something is changed the way you want it to be changed.
- a3_nm 12y agoOn the other hand you can say that coding is a complex task, so having any kind of barrier between you and your code is important. It's like, say, editing in a window which is, say, 8 lines high. Sure, most of the time you are only looking at 8 lines at a time, and the time spent switching back and forth when you need more is not the limiting factor. Still, I think this would make you a lot less efficient. The point of competent typing, and good text editors, is that they reduce the gap between your mind and the code. It's not just about speed. The latency analogy of pgt is a pretty good one.
- akavel 12y ago@danbruc, to supplement and extend pgt's response: I'm a touch-typist, and when on some rare occasions I have to hunt-and-peck while programming (e.g. a fingercut or something), I'm absolutely and totally frustrated on how horribly slooooooow it is; kinda like being handicapped; imagine e.g. being able to use only your one hand to type; or, even better - having to type with your nose! (yes, nose, really!). Now, knowing that, I imagine that being able to type with this amazing steno speed, one feels a similar level of improvement vs. touch-typing. So, that wasn't a straight answer to your concern, but given that I do feel like described above, I believe it shows that it somehow proves important to me as a programmer. Ah, also, now I remembered, there's the "classical" article on this by Jeff Atwood, which is worth a read: http://blog.codinghorror.com/we-are-typists-first-programmers-second/ http://blog.codinghorror.com/we-are-typists-first-programmer... edit: Also, now that I thought of it somewhat more, there are two additional benefits: One is, that typing faster leaves me with more time to do the actual thinking. Second one is, that makes my code more "lightweight" for me, in that it's somewhat easier to delete/iterate/refactor stuff, knowing subconsciously that I can quite easily type something similar ("other variant") fairly quickly.
- deckiedan 12y agoyes, this is something I have been thinking about recently, coping with RSI. It's one thing I like about vim, is the semantic text entry concepts. "Change Word, Delete Inside 's. ", "Select inside this function", etc. I was wondering about making a custom keyboard for vim actions, and programming it even more with extra macros a la surround.vim Buttons / actions could also include switching windows, switching to the browser and refreshing, etc.
- UnoriginalGuy 12y agoThat's an arse backwards way of trying to counter RSI. It is a series of physical problems that you should address in the physical world (i.e. adjust your damn environment). Rebinding your keyboard is like moving the deck chairs on the Titanic. Also, go see a doctor!
- melling 12y agoWhat kind of doctor? I think if you read what people have written on the Internet, it's not as simple as just going to a doctor. My understanding is that it could be a problem with your shoulders or back, for example. Here some of the stuff I've been reading: http://web.eecs.umich.edu/~cscott/rsi.html http://web.eecs.umich.edu/~cscott/rsi.html http://www.jwz.org/gruntle/wrists.html http://www.jwz.org/gruntle/wrists.html http://www.cs.princeton.edu/~arora/RSI.html http://www.cs.princeton.edu/~arora/RSI.html http://rsi.unl.edu http://rsi.unl.edu
- UnoriginalGuy 12y agoA friend of mine has significant wrist issues as a result and had to have surgery. They ignored the issues for a long time before it got to that point. As for doctors, I would go see a specialist like a physiatrist. They can give you a treatment plan and help you adjust your environment and habits to combat the problems. RSI isn't manifested as one specific problem, it can cause a whole host of issues. So the specific type of doctor you'll need somewhat depends on what it has manifested itself as. > it's not as simple as just going to a doctor What exactly is your point? That people should ignore it because it isn't "simple" or that rebinding your keyboard is better than going to a freaking specialist? Honestly why did you make that post? What are you goals here, to discourage people from seeking treatment? I am really trying to figure it out. edit: Above post was edited after I posted to add: > My understanding is that it could be a problem with your shoulders or back, for example. Here some of the stuff I've been reading: <links>
- maga 12y agoMy thought exactly, but then again there are Java programmers still out there.
- andrewaylett 12y agoIn my experience, there's much more to 'programming' than typing out new code. Where typing speed becomes an issue is in communicating with people, not machines: trying to have an IM conversation with a non-touch-typist is painful, and when you have emails or documentation to write, it's much more reasonable for typing speed to be the limiting factor. I don't want such things to be a big chunk of my day, and being able to type quickly helps keep the amount of time I spend doing that to a minimum and lets me get back to coding :).
- BrandonM 12y ago> ...when you have emails or documentation to write... I totally agree. Every editor or typing speed article is accompanied by posters claiming that it's not important for programming, and I just have to think that they haven't spent a lot of time working in a team. Typing and thinking about code is never more than 2/3 of my job. Writing emails, commenting code, creating procedures (e.g., for releasing), documenting our infrastructure... These activities require a bit less thought and are always limited by my typing speed, even with vim and 100+ WPM. Getting through them slower would mean spending less than half of my time programming, or worse: a pile of undocumented code and systems, and increasing irrelevance in team discussions.