The Joy of Typing
medium.com
medium.com
I saw this coming somewhere around the first paragraph. Those students who are trying to transcribe lectures and not actually learning anything? My guess is it's because they're burning cycles mentally saying "'the', I need to find 't' and an 'h', aaaaaand 'e'. 'quick', where the hell is 'q'?"
As a parallel, take Jimmy Page (Led Zeppelin) as a guitar player. Sure, his playing was sloppy as hell when playing live. But the man knew the fret board. He knew all of the places any note could be played, he knew which boxes will allow the riff he wants to play (in fact, I doubt he thought "which box?" but rather "here's where I need to be"), the man was comfortable with his tool and the guitar has the appearance of being an extension of his hand when he plays. He never looks like he's mentally saying "okay, I need an A# next, which is...". This allows him to move on from rote mechanics to making incredible music.
Typing is the same IMO. If you struggle with typing, the first thing you're likely to do is reach for the mouse for anything other than text entry. Which means you reeaach over to the mouse, then mooooove the mouse, click, and...what was it you were doing again? Then when text entry time comes it comes out as "M...y...C...l...a...s...s... ...*...f...o...o". The tool is taking up mental cycles when it should be more of an extension of your thoughts.
It's been argued on HN and elsewhere that typing speed has little bearing on productivity for programming since one spends more time thinking than typing. My counter to that is that the two probably intersect more often than you think they do, and when they do you don't want to be burning cycles figuring out which finger to use to reach the "w" key.
One of the reasons I like more terse, concise languages is because it allows me to get the idea represented quicker, so I spend more time thinking about the problem and solution and less time transcribing the solution.
There is,of course, a downside in legibility, but I believe that's mostly mitigated for people familiar enough with the language.
...and more time correcting the text that the IDE autocompleted wrongly.
I've had both before and after application errors, on different IDEs and different codebases (some sets of names change the probability distribution). But Visual Studio seems to be the worst ofender, stealing not only the up and down arrows for navigation, but also open parentesis, space, enter, period, and colon, for application... and I'm sure I forgot some keys.
#teamReadability
If you care about having a codebase that is accessible to all levels of talent, then you should optimize for readable code. The least skilled team member is still a team member. The fresh grad, the intern, the customer support rep with an interest in code, the new hire. Why are you so willing to discount any of these members as not valuable? Just because they don't have an innate skill and interest in code golf?
Reading symbols is a near instantaneous exercise. You can tell the difference between "i" and "index" with no extra work. Stopping to think to decipher the meaning of cryptic code is slow.
It doesn't hurt to use a full word instead of a single letter variable name, or an explicit function call instead of an alias to some cryptic character. We don't use languages anymore that benefit from have a small file size. Reading will always be more important than writing, until you get down to hardware drivers and kernels.
"All levels of talent" is such a can of worms. No, not even in a team environment you should have all code accessible to all levels of talent. That's just a recipe failure.
Anyway, that isn't really relevant to the argument of how many characters you should use in a variable name.
Usually the person arguing this position is not junior, and does not know the feature or language now. Which leads me to believe it has nothing to do with junior members at all, and everything to do with them.
Edit: I also think that writing down to the least skilled member is disrespectful to them and you. It's pandering to treat them as too ignorant or stupid to learn powerful concepts, no matter who they are. I also think most people who make this argument disregard the sheer cliff wall of difficulty that is modern software development. The difference in difficulty between an entire C# stack with inheritance, interfaces, threads, polymorphism, and mutable class state and all that plus lambdas is really minor.
Typing speed is the bottleneck when you are racing to discharge a thought. It's what the article calls: “transcription fluency”: How quickly and fluidly you can get down — “transcribe” — the stuff that’s in your head. ...you don’t want a bottleneck between the ideas they’re forming and the writing.
What you suggested doesn't address how you get to the final outcome. You suggested: Code gets read 100x more often than it gets written. Well, good code is, bad code isn't. How do you produce good code?
Plus, writing code isn't only about writing but also about deleting; IDEs don't have autodeletion. And typing isn't only about typing. It's also about moving to the place where you want to type.
One thing I want more from IDEs is auto-movement within the same file. Emacs has this to some extent. Pressing Ctrl+<up arrow> jumps up an entire function, because Emacs (in Linux) is cognizant of the barriers of a function [1]. Emacs on Mac OS X doesn't, and it's the #1 productivity killer for me when coding. It takes too long to move. I might stop using Mac OS X precisely because of this [2].
[1] - Or at least whitespace between lines of code or basic blocks.
[2] - I haven't stopped using it, because you can't get a Debian with working wifi on a MacBook Air. So, ironically, typing speed is a bottleneck for me when the OS doesn't have good hardware drivers, and that wasn't an issue with paper and pencil. Things get complicated fast; I hadn't seen that coming.
That doesn't sound right. I would urge you to come and talk about in #emacs@freenode if you haven't already!
I wouldn't be so sure. I can write and type just fine, but I always learned better in class by listening to the teacher instead of trying to produce a pile of notes. All of the kids I remember that wasted their time writing down everything the teacher said without really listening to them, did just the same with computers or old-fashioned pen and paper.
I was the same way throughout school, but I think the causal relationship might be reversed. The students who take notes almost robotically might just do so because they have poor verbal memory.
The simple takeaway is that different people learn differently. Don't assume what works for you will work for others and vice versa.
Also, consider that people seldom type "M...y...C...l...a...s...s", they type My<TAB>
And soon we'll be typing "var foo = 2"
There's so much code completion in a modern IDE:
if<TAB> for<TAB> r<TAB>
The same thoughtless action that comes from using a familiar tool for expression can carry over to any tool, including the mouse. I don't think about the keys or where my fingers are in relation to the keyboard when I'm typing this--the thoughts just go from my head straight to the text box where my eyes corroborate what my brain is thinking. But the same can be said for when I'm browsing the web and I move my hand to the mouse and scroll down... I don't think about it, it just happens. My brain thinks, "I wonder what's further down the page" and my body responds accordingly.
That said, there's much to be said for the efficiency of a keyboard. A few months ago I installed the Vimium Chrome extension and I've been trying to get myself to use the keyboard for scrolling down and clicking links. It's hard. My brain instinctively (still, after months) tells my hand to move to the mouse. I often need to take my hand off the mouse and go back to the keyboard to force myself to use the keyboard shortcuts.
The same is true with reading code: if your brain has no association with curly braces, you're not going to be able to scan a chunk of code and intuitively separate code within curly braces from code outside the curly braces.
So there's more to it all than just the difficulty or familiarity with the tools. It's also about skill and habits.
The niggley little things that cause syntax errors are likely to cause an order of magnitude more mental effort than trying to find a key. Or a crap algorithm because you dived straight into the code.
As a side note, many terminals have tab completion and most IDE's have something similar. I can't touch type, but I don't think I need to in this day and age. And I go pretty fast. So much of your argument is irrelevant for developers.
That blows my mind. That's less than a tenth the speed I type at. How do they get anything done??
OTOH, do typing classes even exist anymore, are are we to assume that kids will just learn it by osmosis? When I was in high school I took typing class. On a real typewriter. And it was a manual typewriter...that we could only use in a blinding snow storm while walking uphill. Anyway, I type around 100 wpm now which I attribute to that typing class. Had I just been left to my own devices to hunt-and-peck my way around, I doubt I'd be anywhere near that speed.
I learned on a manual as well. But by using a book. It took about 3 weeks. I actually stopped at the part where you practice numbers (and regret it to this day).
"that we could only use in a blinding snow storm while walking uphill"
I was lucky to be able to convince a college instructor to allow me to bring in the manual typewriter so I could type the answer to an essay instead of using one of the blue books. Same blinding snow storm that day!
We learned that in typing class, but I never did "get" the number row. Bane of my existence to this day. I mean, mostly hit what I want but it's not thoughtless tapping like the rest of the keyboard. Don't know if it's my dainty little fingers or what the deal is.
> Same blinding snow storm that day!
Nah, probably not the same storm. Blinding snow storms were so common back then, it just seemed like it we shared the same weather pattern. Not like the constantly pleasant weather these kids today grow up with.
Edit for vanity: 60-70wpm tested. I'm pretty sure I can type faster than that sometimes.
You mean, "all that time in front of a keyboard - and mouse." GUIs and mouses (and now, touch screens) have made computer interaction largely keyboardless - most people would rather push the rodent around or touch the screen than make use of keyboard shortcuts, and interfaces are designed in that direction so it's not so surprising that people aren't learning how to type faster despite increased computer use.
Unfortunately, in my experience, yes. I spent years using a computer doing virtually everything with it including programming before I finally got fed up with not being able to touch type. I forced myself to not look at the keys and type. It worked. (How could it not?) Later on, I had a typing class as well, but by that time I was already an excellent typist. For the kids that are less motivated however, I think they'd be stuck where I was before I decided to force myself to learn it. Since typing classes are so rare, this means that they won't even be forced to learn it (a good thing).
I don't think anyone is truly computer literate unless they can touch type. It's an essential skill, really, and while one can get by without it, the experience is hardly equivalent. So I wonder, with all the focus on CS classes in high schools, where is the focus on typing? After all, call me prejudiced, but I would never work with a programmer or writer who couldn't touch type. To me, that shows disdain or lack of interest for the profession.
Really? I don't find it that shocking at all that most people might type at a tenth of the speed a programmer can type. I'm sure a chef could express the same awe at my inefficiency when making Kraft Dinner.
I suppose it's testament that for all the fun of being an autodidact, there are some skills that really do benefit from tutoring (I'd argue most skills do, but the challenge is to find a good tutor...).
But 12 wpm is basically a real handicap -- it is below reasonable speed. Consider that a short essay is maybe 10 pages, and needs a minimum of three drafts... that's 25 pages or so. 8-12 hours of just typing for 10 pages?
I'd say 30 wpm is a reasonable low-bar average.
Same here. I drastically improved my typing speed thanks to internet chat rooms. My parents first got home internet when I was in high school in the late 90s, and my typing speed went from ~28wpm (thanks to a 6-week 9th grade typing class) to 60+ wpm in a week, after spending only an hour or so online each day. I had to type at least that fast to keep up with the conversation, so my brain was forced to acclimate.
I do it myself all of the time. It seems to be the result of the way our minds make associations, and an inability to properly 'empathize' with others, that is, to view the action from their perspective of being relatively unpracticed at it. This is where, in fact, I think a large part of 'imposter syndrome' stems from.
I personally have difficulty viewing the ability to launch/maintain web applications, provision a server for deployment, write SQL queries, etc, etc, etc... as anything particularly 'novel' or requiring ability; and indeed, in the context of this web-site, it isn't.
In the real world though, there's a dearth of 'incompetence', but unless you actively interact with a menagerie/distributed-sampling of society, it is very easy to convince yourself that the average person is as competent/intelligent as the people you surround yourself with on a daily basis. The fact that the internet allows everyone in your field to collaborate only serves to exacerbate the situation.
On the flip side, I can see that for kids these days it must be much harder to learn to type. So much of their time is spent using computers, and so even spending an hour a day on touch-typing lessons is going to pale in comparison to the amount of time spent not touch typing because you don't know enough yet to touch type all the time. And that has to make the barrier much harder to overcome.
That's just asinine. When I was in high school 30 years ago, if a school had insisted that all reports be typewritten and yet did not offer typing classes, I'm pretty sure some job losses would have occurred. What other tools shall we insist that children use without instruction? Hand them pencils in 1st grade and demand that they produce legible communication that they're left to just figure out on their own? Here's a band saw for shop class, have a bookshelf done by end of day?
Granted I'd imagine this could be a problem with funding for computers in certain areas, but I'd at least expect them to have typing classes early on if they are also expecting you to work with computers in other classes. This is one of those skills that is very beneficial to start on early.
My father types nearly every day and can barely do 20 wpm.
most people never actually learn to type correctly, they just keep doing the wrong thing forever. of course, once you actually learn to do it right, you're practicing all the time and after several years you can easily get up to and past 120wpm if you sit in front of a computer all day.
They weren't typing predetermined sentences. They were instructed to come up with a story based on some pictures and write it down. They weren't bottlenecked by typing speed, but rather by pauses for thought between words.
That said, I wholly agree with the OP that speed in production unlocks its own benefits. Working with novice coders, I've become acutely sensitive to how much lack of keyboard-shortcutting can hamper a novice's ability to understand code, especially across a project. The 5 to 10 seconds it takes for them to hunt-and-click for a file among Sublime Text tabs is enough for them to forget what bug they were trying to fix in the first place.
If I had to run a learn-to-code bootcamp...I think the first thing I would do is to remove the lab computers' default mouse input and replace them with the 80s-era steel-ball mice until students realized that using a mouse should be the edge case.
I'd fire you immediately if you did that. The mouse is not an edge case.
While writing essays or quick replies, typing can be better both because of its transcription fluency and flexibility in editing (iterative style of writing).
But in note taking, one needs another kind of flexibility. Like ability to change the handwriting or write in any direction anywhere. How many times we write illegible words, just to getaway with it and focus on the knowledge while in classroom. Also while pondering on an idea, we need this flexibility. We don't get this in typing. Only if we could scribble while typing (something to solve) ....
Writing is certainly loosing its territory to typing. Emails replaced letters, editing softwares, etc. But IMO once touch screen computers and tablet takes over. We might see people preferring stylus pens and resort back to writing. But Graphite is still going to loose.. :)
I'm not sold on typing per se, but mastering an appropriate output method for your domain seems key. For programming, that is typing. For math, it could be either manuscript or TeX. For the humanities it could be either manuscript or typing. Typing always removes a transcription step, but that is unlikely to be the limiting factor for any deep knowledge work.
As a homeschool dad, I think it is important to get kids to a relative level of proficiency as quickly as possible. Difficulty writing or typing or whatever certainly limits output. Different kids will prefer different options and thats fine.
PS. Even if typing is faster, writing allows more free form expression(maps/diagrams/etc) and that may mitigate the speed issue.
This is also why folks that take really good notes by hand often have some sort of shorthand system.
My question, then, is it worthwhile to investigate some of the more advanced typing techniques out there? I'm curious, but highly skeptical.
Well, undoubtedly... Although I don't think you can apply a 'word per minute' count to thought in any accurate manner.
After all, words are just a medium; an abstraction that we're using to convey an underlying meaning, even if we internally represent those ideas with a series of other words/abstractions/ideas I don't think you could necessarily measure 'thought speed' by attempting to enumerate those 'words'.
Maybe it's a lack of discipline or practice and I'd be able to form thoughts more quickly if I were required to, or maybe I can form thoughts quickly but my typing doesn't keep up and I lose track. That said, I do the stop-to-gather-thoughts thing when I speak as well so maybe I'm hopeless.
That is, if I can keep an even pace where I'm typing at roughly the speed I'm saying what I want to type, then I don't do this stutter that often. However, if I am constantly getting adrift in how fast I'm typing versus how far ahead I've thought of what to say, then I stutter like crazy.
I'm assuming it has a lot to do with how you "speak" in your head. Some people (myself) do so verbally. Some do so visually.
It was good immersion practice.
[1] http://en.wikipedia.org/wiki/Court_reporter#Skills_and_train...
edit: Forgot to add. Just because I thought you could get to 600 doesn't mean I was right. :) Looks like 300 is still quite high.
Regardless, I know I could get faster than I am. I hover just over 80 to 90. To get a lot faster, I was always under the impression that I would need something like that. I have also always thought that I have no need for that. So it works out. :)
I think perhaps 2x as fast as I type, which gives me time to consider what or how I want to say something, without constraining me to the choking snail's pace that is, for example, T-9.
FWIW the article's test pegs me at 95wpm; extended tests with sneaky words usually clock me around 75wpm.
(When I meet a word I can't spell instantly, I have to transcribe the letters rather than the word, which is slower)
In general, I think there has to be advantages to be a bit more in step with how you are thinking and how you are typing. That is, if I am constantly interrupting my typing thoughts with my actual thoughts, and vice versa, I will go slower.
Probably matters a lot as to how you personally think. I am not a visual person, so I rarely "see" what it is I am thinking. The words are essential to my understanding some things. So, having two thought processes going both involving words is very difficult if one is constantly thrashing the other.
Make sense?
Decent text editors can delete and move sentences and paragraphs almost instantly. How is speech recognition different?
I have a notion that the permanence and chunkiness of writing keeps thoughts 'whole' whereas the ease of backspacing allows the same words to become abstracted. I'll have to try typing with backspace mapped to newline or something to see how the idea plays out.
"You look at the keyboard when you type?"
Talking with my son's teachers and pediatricians, one big reason that early classes emphasize writing is not just about literacy, but rather about developing hand muscles.
I could figure out how to post this w/o it showing up as a dupe but I just don't care enough.
[1] http://www.onehandkeyboard.org/standard-qwerty-finger-placem...