6 ms·
Teach Yourself Programming in Ten Years by Peter Norvig (2001)
- deleted 15y ago[deleted]
- gamechangr 15y agoThis gets posted about once a week here. It good though...
- philbarr 15y agoYes - hardly counts as "news". Why does this get posted so often, and how on earth does it get to the front page of Hacker News?
- andrewcooke 15y agoone reason, i think, is that you can't downvote articles.
- deleted 15y ago[deleted]
- mechanical_fish 15y agoArticles can be resubmitted after a given time. Google shows me several submissions of this article from years ago but none recently, though citations of it do show up often in comments. Why does it get to the front page? Because it's relevant and good, of course, unlike almost everything that is merely new. I'm pleased to see more classics turning up on HN; Periodic reviews of the classics are the only way to get new visitors onto the same page as older ones.
- lifthrasiir 15y agoOne of problems with the resubmission is that it (intentionally or accidentally) ignores prior discussions until someone manually points out. The resubmission itself is not a problem, as you mentioned, however. I guess a small link to the prior discussions or the HNSearch link to given URL will do a job. I personally prefer the latter, but it seems that HNSearch only indexes the domain name of the URL.
- philwelch 15y agoIt's certainly more enlightening than arguing about cryonics or libertarianism or feminism or education for the billionth time. Any forum has reposts, it's just that some of them are literally resubmitting the same article and others are rehashing the same stupid arguments that the Internet has hosted since time immemorial.
- samaraga 15y agoI am a newbie here who is following HN for the past 12 months or so. Since I hadn't seen this article in those months and after having read this article I was compelled strongly to submit to HN. I thought someone who is a newcomer here should also know this and that is the only reason for me to post this.
- GHFigs 15y agoLearn 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'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?
- Dn_Ab 15y agoLua is probably the most useful one to know that has that. See also: Actors, async and reactive programming
- groovy2shoes 15y agoLua has built-in support for coroutines. Python and Ruby have (limited?) support for coroutines via generators/iterators (via the yield statement). But why not Icon? It has plenty of neat features on its own, such as goal-directed execution (which I've never seen in another language). Plus it has several pretty solid (and free) introductory e-books: http://www.cs.arizona.edu/icon/books.htm http://www.cs.arizona.edu/icon/books.htm
- rmgraham 15y agoI think some people might see Lua has giving more bang for your buck because of its popularity in things like game scripting among other things.
- mfonda 15y agoIt 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. I think this article gives excellent advice, and it has certainly worked for me. I always recommend it to people just starting out.
- mattdeboard 15y agoI 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: http://news.ycombinator.com/item?id=3278080 http://news.ycombinator.com/item?id=3278080 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. 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.
- felipemnoa 15y agoI read your link and nowhere does he refute that. In the context of his essay I believe he means it takes 10 years or 10,000 hours (more or less) to be a really good, experienced programmer. You can start playing the piano in a couple of weeks but it will take several years before you get really good. That is the spirit of his essay.
- mattdeboard 15y agoThe context of his response was that there is this belief on HN that "programmer" is a title reserved for certain people, and that belief is often predicated on an erroneous/incomplete understanding of his writing.
- frou_dh 15y agoI think this kind of quibbling has more merit around the title Engineer. A lot of people casually call themselves Engineers, including programmers and the guy who replaces your smoke alarm. It is actually a protected title in some regions.
- dagw 15y agoSomewhere between 2 weeks and 10 years you hit a point where you're good enough to entertain people/write useful code and perhaps even make some money doing so. The point being argued against I think is that you shouldn't tell people who are writing useful code that solves real problems that they shouldn't call themselves programmers because they haven't hit the 10 year/10000 hour mark.
- rizumu 15y agoI really like that the classics are in a constant rotation. It makes hacker news more like a good radio station.
- flojito 15y agoI 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 :-)
- richardburton 15y agoI 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 loved it. All I can say is that my gut tells me I will feel the same way in 10 years' time. Here's to years.
- jschuur 15y agoThe 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. What I suspect happened is that the piece has been modified since it was originally published.
- samaraga 15y agoAs I couldn't find the date it was published, I deduced it must be written in 2001 from copyright at the bottom, as you pointed out. Also observing the rule everyone does here at HN while referring to old articles, I added the year. Even I have the same feeling about the modification of the article.
- decklin 15y agoThe "power search" feature of amazon.com used in the introduction no longer exists. It appears they now have an "advanced search" (http://www.amazon.com/b?node=241582011 http://www.amazon.com/b?node=241582011), but nothing that will do a "X AND (Y OR Z)" boolean query. Anyone know how to run the same search today?
- forwardslash 15y agoSlightly off-topic, but an interesting example testing out the idea of it taking 10,000 hours to become an expert is http://thedanplan.com/ http://thedanplan.com/. Dan is trying to become a professional golfer and as of this month he's about 2,300 hours in.
- lelele 15y ago"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)..." 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. I think Assembly is missing from Norvig's list.
- lelele 15y agoAnd Eiffel (Design by Contract and strongly-typed OO).