> 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.
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.
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.
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)
9 comments
[ 3.1 ms ] story [ 18.9 ms ] threadI 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.
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.
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)