Teach Yourself Programming in Ten Years (1998)
norvig.com
norvig.com
- because one needs to pay one's bills,
- because using technology is cool; and waiting 10 years is not cool.
It is easy to say in retrospect that it was worth spending 10 years of learning something. But it is hard to make such commitment in advance (especially as most of such commitments are misses, by opportunity cost).
And actually I think that the biggest mistake in traditional teaching of school subjects is that they teach many years, but don't make you use it. (Compare to playing with a ball, when you do it before learning about classical mechanics.)
BTW: See "A Mathematician’s Lament"by Paul Lockhart http://www.maa.org/sites/default/files/pdf/devlin/LockhartsL...
I don't think Peter implies to stay jobless, till you clock 10,000 hours on programming. Many people who don't program, see it as lucrative opportunity to start making six-figures a month, and pick one of those books mentioned in the article.
After completing few examples, they acquire a false notion, how easy it is. "Tell me any technology and I'll learn it in a week." said one guy I was interviewing but when they get to work on something tangible, they get a cold feet. The article simply speaks about foolishness of expecting to learn something within few weeks and get on a job, quickly. By no means, they should just learn and get a job only when they are ready, but realizing that nothing would ever be enough and constantly trying to level up, is essential to become really good at programming.
So are these books worthless? Absolutely not. They offer the user a basic foundation to start learning and work up from there. The user can from there find communities and more advanced books to continue to learn.
For me personally, these books gave me a foundation to continue to learn. But honestly, the best way I learned was actually coming up with small projects that I personally wanted to do.
Being convinced that something is easy and using it is a wonderful thing (they are way too many people who are scared to program and miss the opportunity). Plus, one of the best strategies for learning programming is to go to a point where someone can pay (even if for a very junior position) and continue learning.
It pretty much taught me the value of persistence. The first time I tried to learn Lisp, I felt like my IQ had dropped to about room temperature. It took me years to get it, trying again every couple of months. Eventually, I did get it. I am not an enlightned, brilliant Lisp hacker, but refusing to give up has allowed me to understand things I initially considered myself too stupid for. Which, in turn, encouraged me to tackle other problems. If that first one eventually turned out not to have been all that hard, maybe this other one isn't, either?
It's not a major influence, but I could say this essay has, in a way, changed my life.
On the other hand I don't think your salary has been multiplied by two in the meantime - unless you were not working two years ago.
Next stop is Haskell. :)
If it makes you feel better, the people who seem to be really smart have the same roadblocks, false starts, and struggles... if not more of them, just as world-class marathoners (while they run the distance faster than most of us could) are still exhausted at the end of a race, because they run so hard.
It wasn't until my late 20s that I "got" that this sense of exhaustion is often a good thing. At least the exhaustion that comes from solving hard problems is a good thing; the kind that comes from political flare-ups and open-plan offices is pretty useless as far as I can tell.
If I wanted to go in that general direction, I guess, I would look at OCaml, which seems to offer many of Haskell's benefits without being quite that weird.
Mastering any skill in life takes dedication, training and time. Whenever someone promises a shortcut in life, there is usually an ulterior motive.
A decent amount of NFL players didn't play the sport until their late teens, some even waited until their early twenties! This is unheard of for any other competitive sport. This occurs often where pure speed (receiver) and size (offensive lineman) are at a premium.
There are trained mathematicians and scientists that can outhink most programmers: your b might be greater, but their m is steeper (y=mx+b).
But they actually work.
One thing he didn't address that I'd like to see more explored: how much of learning programming is learning the "mechanics"? By that, I mean everything from knowing how to Google effectively, to learning an IDE, to your OS keyboard shortcuts....I'd have to imagine that learning how to program 30 years ago can be fundamentally different than it is now, based on the _conveniences_ we have available to us.
When teaching beginners, I've been trying to stress the importance of good mechanics/practice...I've seen students spend literally 4-5 hours on some typo-caused bug (such as `rm`ing something accidentally) because they didn't take the few minutes to get use to tab-autocomplete. Or use a proper text editor with syntax highlighting. Learning anything is a race against time and energy...the all-night debugging sessions add up, and people who are intellectually capable end up dropping out simply because they've run out of time (or believe they have, which is a sensation that grows as you get older).
2 years ago: https://news.ycombinator.com/item?id=5519158
3 years ago: https://news.ycombinator.com/item?id=3439772
6 years ago: https://news.ycombinator.com/item?id=1060176
7 years ago: https://news.ycombinator.com/item?id=191235
8 years ago: https://news.ycombinator.com/item?id=43243
Keep in mind these are the ones with decent number of comments. There are two pages of submissions with the exact same title.
Serious question - Why not?
Now, it's automatic. 95% of the things I run into daily at work, I've done them a million times already, so I just regurgitate what I already know. The other 5% of the time a quick google search will find my solution.
I don't feel challenged anymore. I don't think my line of work can possibly get anymore challenging either. But job availability is so plenty in my current field of programming, arghhhhh.
What is your salary like??? (if you don't mind me asking)
Been interested in ML lately. I'm a good half way through Andrew Ng's CS 229 (the actual course, not the watered down coursera course). I find it much more intellectual stimulating than writing apps, lol, sigh.
Some examples that I'm willing to bet money on to stay relevant: Regular expressions. OS fundamentals. Compiler construction. Unix basics. Etc.
It's similar to the classic "What do you mean $XX an hour? My nephew said he can make a site for $20"
Fortunately, we don't need to care too much about the expectations of underinformed potential employers. There are companies around that pay enough, and drive the market price for talent.
I don't think Mattan & the guys at one month rails are gona like this.
I think he's wrong about the telegraph taking 10 years to master.
http://web.archive.org/web/19980206223800/http://www.norvig....
It is most definitely humbling to learn new ways to compute that force you to reconsider what you hold true. I liken it to learning a human language and having it force you to learn another cultural viewpoint. You quickly learn that you have been in a filter bubble.
I can see with things like Idris and dependent types even more of the same of the whole, well I thought I understood computation to a minimal degree, here is another bit of it that totally changes how I view the world.
Doing more that scratching the surface requires a lot of work and focus.
I think, with the right resources (people, material), if someone dedicated themselves to learning programming/software development actively for 2 years they could become extremely proficient in it. Not masters across a number of different languages and paradigms, of course, but just very proficient in a few of them to the point where they could churn out good work/projects/ideas with it.
You need 10 years to be an expert programmer but what if someone is just trying to put together a prototype?
...reads like "You need 10 years to be a surgeon but what if someone is just trying to open up a patient?"
I think 10 years is pessimistic, 2 years feels about right, but I don't think the time is really the point of this page. You just can't rush learning, or expect to get a job after reading one of those books that sell a quick solution. It takes time, longer than you think it will, which is funny again considering how much I've experienced underestimating timelines in the past.
I tracked the page on web archive, and it existed at least since 1998. Here is a funny edit over the years:
1998: Let's analyze what a title like Learn Pascal in Three Days could mean:
2009: Let's analyze what a title like Learn C++ in Three Days could mean:
2014: Let's analyze what a title like Teach Yourself C++ in 24 Hours could mean:
:)