I would like to make the point that Dr. Norvig nowhere in this article says, "It takes 10 years or 10,000 hours to be a programmer." Dr. Norvig himself refutes that notion explicitly here:<p><a href="http://news.ycombinator.com/item?id=3278080" rel="nofollow">http://news.ycombinator.com/item?id=3278080</a><p>In a brief email exchange I Had with him, he even suggested he may rewrite this essay to address the fact that it is often used (inappropriately, obviously) to bludgeon new programmers into thinking that they're not actually programmers.<p>I think often on HN this essay is used to create some kind of caste system based on longevity in the biz or number of hours coded, which is horse shit.
I think this kind of thinking can be demoralising to newbies like me. I do not care that I did not start programming at 14. I was playing with kites and chasing girls. To me they were really fun. Now that I have a lot of time to focus on coding and have discovered how much fun it is I am absolutely loving it. I just got off a five-hour flight and did nothing but write crappy Java. I <i>loved it</i>.<p>All I can say is that my gut tells me I will feel the same way in 10 years' time. Here's to years.
It was around ten years ago that I first read this article, and I've since followed just about every piece of advice given. I have since come along ways, but am still learning and improving every day.<p>I think this article gives excellent advice, and it has certainly worked for me. I always recommend it to people just starting out.
<i>Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).</i><p>I'd be interested in current opinions on this. e.g. is there something one should look at before Icon if they want to lean about coroutines?
"Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp)..."<p>Why learning Java or C++ if you are going to learn Lisp anyway? All Lisps I know of have their object system. If you prefer following the mature route, then Common Lisp is your best choice.<p>I think Assembly is missing from Norvig's list.
I think Dr. Norvig defends the idea of learning by making a effort and devoting a lot of time against the infra-culture of "learning XYZ in 21 hours" and so on :-)
The "power search" feature of amazon.com used in the introduction no longer exists. It appears they now have an "advanced search" (<a href="http://www.amazon.com/b?node=241582011" rel="nofollow">http://www.amazon.com/b?node=241582011</a>), but nothing that will do a "X AND (Y OR Z)" boolean query. Anyone know how to run the same search today?
Slightly off-topic, but an interesting example testing out the idea of it taking 10,000 hours to become an expert is <a href="http://thedanplan.com/" rel="nofollow">http://thedanplan.com/</a>. Dan is trying to become a professional golfer and as of this month he's about 2,300 hours in.
The comments seem to back up that the article is from 2001 (so does the copyright at the bottom), but it links to Gladwell's Outliers, which came out in 2008.<p>What I suspect happened is that the piece has been modified since it was originally published.