5 ms·
My 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
by pgt 12y ago
My 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.