9 comments

[ 3.1 ms ] story [ 18.9 ms ] thread
> Learn to touch-type. This is an intermediate skill because writing code is so hard that the speed at which you can type is irrelevant and can't put much of a dent in the time it takes to write code, no matter how good you are. However, by the time you are an intermediate programmer you will probably spend a lot of time writing natural language to your colleagues and others. This is a fun test of your commitment; it takes dedicated time that is not much fun to learn something like that. Legend has it that when Michael Tiemann[2] was at MCC people would stand outside his door to listen to the hum generated by his keystrokes which were so rapid as to be indistinguishable.

I know that this piece wasn't written that long ago (2003)...but thinking back on those days of programming, I believe that so much has changed in information availability and operating systems that while fast touch-typing is still just an intermediate benefit, being able to memorize shortcuts and execute them by touch is of enormous benefit.

What I mean is that while Google was good in 2003, now I can type in an error message and basically be assured that the relevant Stack Overflow question will come up. Or maybe not, so I pop up a couple of Google searches, tabbing between windows as I type in my query. As those load up, I Alt-tab to my terminal window to re-run the problematic command, or at least examine it for typos. By then, at least one of my Google queries will have finished, so I Alt-Tab to my browser, click one of the search results, then Alt-Tab to the other Google query, click on one of its results. By this point, the Google search results that I skimmed over, or perhaps from the OneBox/Direct Answer, has given me an idea to what my problem was. So while waiting for the actual pages linked from Google to load up, I alt-tab back into Terminal to see if any of those hints apply. If not, Alt-Tab to the browser, etc. etc.

Today I was teaching a student how to work with Twitter data from the command-line...and because Bash is not ideal for doing math or for parsing multi-line data...it took me a few tries of tabbing into a Bash reference manual, and many taps of the Up/History key, and Ctrl-A/Ctrl-E to navigate the prompt line, to come up with the command to calculate someone's rate of Tweets (after hitting the API with a command-line program)...to the student, it must have looked like a constant stream of actual coding to get to the answer, when in fact, it was just a flurry of stupid mistakes and fixes in a span of a few seconds.

In the past, when a book was still often the best reference, or a very long webpage explanation...being able to quickly navigate the operating system may have not been such a big deal, as you were better served by just stopping your coding work to just read. Now (just as with all aspects of life and society), there seems to be a greater need to quickly navigate and filter information. I guess it's a sort of multi-tasking...which may not always be ideal, but it is much less ideal if you're multi-tasking and using your mouse to get around.

I remember reading these during college.We had such a dearth of programming reading materials that I really appreciate the ones that I came to find.
Nice! This one is awesome, the one that made me want to be a programmer in the first place. The other one is Coders at Work, which I read at some random Starbucks in Houston.
Informative, concise, to the point.

Any programmer who's been working in the field for a while most likely knows a lot of the points mentioned in that text, but it's very nice to see this information organized and categorized.

Very good read.

Great and relevant advice
Why isn't this a book? This is great stuff.
Lots of very well summarized stuff. But web development has changed so much since 2002 !

While all of these subjects are still relevant : debug, log, memory, unit test, etc. I think nowaday a beginner will rapidly face broader problems in his career :

.Deployment / monitoring / Devops / Cloud

.Frontend VS Backend development

.Mobile development

All these subjects were a lot more isolated 13 years ago.

What he calls "heavy tools" like database, Full text search, they have all become a lot more common today. I wouldn't be surprised that a young developer will have to experience 2 or 3 different databases the first years he starts working (SQL / redis / mongo, etc)