
Teach Yourself Programming in Ten Years (1998) - shubhamjain
http://norvig.com/21-days.html
======
stared
Mastering any skill takes close to lifetime, but for "Why is everyone in such
a rush?" there are a few main points:

\- 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...](http://www.maa.org/sites/default/files/pdf/devlin/LockhartsLament.pdf)

~~~
shubhamjain
> 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).

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.

~~~
stared
Well, there is a good reason not to call oneself "C++ programmer" after
spending 24h with it.

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.

------
krylon
I came across that essay a couple of years back, and I liked it very much.

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.

~~~
michaelochurch
_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._

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.

~~~
eru
After Haskell, Agda and Idris.

~~~
michaelochurch
Possibly Coq but I've heard that it's really hard.

~~~
eru
Similar-ish ideas in Coq, Agda, Idris and Isabelle. Or at least, they are
trying to solve similar problems.

------
cdnsteve
Programming in the 21st century equivalent of low carb diets and miracle
weight-loss without exercise! Haven't you heard? You can go from novice to
ninja in hours! Just pay keep paying us for these carrots.

Mastering any skill in life takes dedication, training and time. Whenever
someone promises a shortcut in life, there is usually an ulterior motive.

~~~
stillsut
Programming is the equivalent of Football.

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).

------
danso
I agree with Norvig that programming is a long-haul commitment...not much
different than any other form of literacy, except in most schools, we're
forced to go through 12+ years of English/math (and even then, a pretty high
number of college students are still at a remedial level).

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).

------
mathetic
I get it, it's a great article but I don't think we need to share the same
article and discuss it annually.

2 years ago:
[https://news.ycombinator.com/item?id=5519158](https://news.ycombinator.com/item?id=5519158)

3 years ago:
[https://news.ycombinator.com/item?id=3439772](https://news.ycombinator.com/item?id=3439772)

6 years ago:
[https://news.ycombinator.com/item?id=1060176](https://news.ycombinator.com/item?id=1060176)

7 years ago:
[https://news.ycombinator.com/item?id=191235](https://news.ycombinator.com/item?id=191235)

8 years ago:
[https://news.ycombinator.com/item?id=43243](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.

~~~
escherize
This is a problem with time-decay voting content systems and evergreen
content. It happens on reddit as well.

~~~
maerF0x0
We need a sidebar w/ prereq "must reads"

------
zaterbuns
Personally I think programming is easy. Started 6 years ago on/off, and the
last 2 years full time. I use to have a blast doing it, because it always kept
my mind in the 'zone' by trying to solve complex problems in my head.

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.

~~~
dfmt111
If you don't mind me asking, which field do you program in?

~~~
zaterbuns
I'm a mobile dev, Android/iOS/Windows, yehh. Currently interested in ML.

~~~
dfmt111
yeah I can see why you would feel that way. ML is fun, but be prepared to
spend a lot of time data wrangling more than anything.

What is your salary like??? (if you don't mind me asking)

~~~
zaterbuns
Throwaway, so doesn't matter. Salary is 90k, though recently realized how
little it matters. I'd be fine with 50 or so. Have some background in neural
networks, and all the math goodies needed for ML. Between ML and robotics
somewhere would be my dream job.

~~~
dfmt111
Hey, thanks for divulging. I appreciate it. Right, writing apps can be fun at
first, but it does get old. I agree with you. It's especially more hectic if
you're a web developer with all the javascript churn that's been going on.

------
chuckcode
Learn to program in 10 days, learn to debug over 10 years.

------
sandesrb
I stumbled upon this essay by Norvig about one and half year earlier when I
was just searching web as a newbie wannabe programmer and this essay really
cleared my view about programming. I am still a student and have not yet
seriously got into programming but the essay has encouraged me to be more
persistent.

------
Animats
At the end of ten years, you have to start over, since what you learned ten
years ago is obsolete. Worse, the programmer boom that impelled you to get
into programming is now over.

~~~
danso
I have to disagree with this...I started learning programming formally 10 or
so years ago in college...not only are C/C++ and assembly still relevant
languages in their own right, everything I learned about fundamental
programming concepts, such as branching, loops, race conditions, and
algorithms are directly applicable to every new language I learn...and
everything I informally learned programming and hacking as a child -- QBasic,
MSDOS command-line, how to dialup a local BBS and download the latest
shareware id games...getting comfortable with those interfaces, getting an
implicit understanding of how computers can be controlled beyond the default
packaged interfaces made for consumers...that was invaluable experience in
preparing me for learning programming in college.

------
shah_s
I think the rise of these development 'boot camps' is causing more harm than
good. It devalues programmers skills and worth as well as give people false
hopes. I am all for people wanting to improve their skills or learn something
new, but these bootcamps overpromise, and under deliver.

~~~
eru
How do the bootcamps devalue skills and worth? They might give an impression
that it's easy---but unless they find a way to make good programmers, which
would be great!---they take nothing away from the value of skills.

~~~
s_kilk
They may skew employers expectations of what they can pay for developers.

It's similar to the classic "What do you mean $XX an hour? My nephew said he
can make a site for $20"

~~~
eru
Seems plausible.

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.

------
miccohen
"Why is everyone in such a rush?"

I don't think Mattan & the guys at one month rails are gona like this.

------
0xdeadbeefbabe
It's fascinating that he doesn't say _self-teach_ yourself programming in ten
years.

I think he's wrong about the telegraph taking 10 years to master.

------
devonharvey
Great article, however I don't think it is from 2001, because he mentions
Clojure and Go.

~~~
faitswulff
He must update it from time to time. The oldest Internet Archive snapshot of
the page is from 1998 and includes no mention of Go or Clojure:

[http://web.archive.org/web/19980206223800/http://www.norvig....](http://web.archive.org/web/19980206223800/http://www.norvig.com/21-days.html)

------
YngwieMalware
This article is a golden classic

------
empressplay
21 days is way too short, but 10 years is a bit too pessimistic. 2 years...?

~~~
michaelchisari
I've been doing it for going on 18 years, and sometimes I feel like I haven't
even scratched the surface.

~~~
Swizec
I'm in the same boat. Sometimes I feel like I'm getting pretty good at this,
but then I talk to somebody and I have no idea what they're saying half the
time. It's really ... I want to say humbling, but it's more stupefying than
humbling.

~~~
mitchty
Yep, I've been learning Haskell for the past year. Honestly, I consider myself
still at the beginner stage at best. But I'm just starting to see a light at
the end of a tunnel.

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.

~~~
eru
I've been dabbling in Haskell for around a decade now. I'm still learning new
things.

~~~
mitchty
My light at the end of the tunnel remark was more of an analogy that at that
point I'll be able to use the language with minimal competency. >.<

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.

------
dropit_sphere
He must keep it updated, as it now references Go.

~~~
father_of_two
The footer alludes to that: "Peter Norvig (Copyright 2001—2014)"

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:
    

:)

