Teach Yourself Programming in Ten Years
Teach Yourself Programming in Ten Years
Peter Norvig
Hungarian
Teach Yourself Programming in (Marton Mestyan)
Ten Years
Researchers (Bloom (1985), Bryan & Harter
(1899), Hayes (1989), Simmon & Chase (1973))
Indonesian
have shown it takes about ten years to develop
(Tridjito Santoso)
expertise in any of a wide variety of areas,
including chess playing, music composition,
telegraph operation, painting, piano playing,
swimming, tennis, and research in
neuropsychology and topology. The key is Italian
deliberative practice: not just doing it again and (Fabio Z. Tessitore)
again, but challenging yourself with a task that is
just beyond your current ability, trying it, analyzing
your performance while and after doing it, and
correcting any mistakes. Then repeat. And repeat
again. There appear to be no real shortcuts: even Japanese
Mozart, who was a musical prodigy at age 4, took (yomoyomo)
13 more years before he began to produce world-
class music. In another genre, the Beatles
seemed to burst onto the scene with a string of
#1 hits and an appearance on the Ed Sullivan
show in 1964. But they had been playing small Korean (John Hwang)
clubs in Liverpool and Hamburg since 1957, and
while they had mass appeal early on, their rst
great critical success, Sgt. Peppers, was released
in 1967.
Persian
Malcolm Gladwell has popularized the idea, (Mehdi Asgari)
although he concentrates on 10,000 hours, not 10
years. Henri Cartier-Bresson (1908-2004) had
another metric: "Your rst 10,000 photographs
are your worst." (He didn't anticipate that with
digital cameras, some people can reach that Polish
(Kuba Nowak)
mark in a week.) True expertise may take a
lifetime: Samuel Johnson (1709-1784) said
"Excellence in any department can be attained
only by the labor of a lifetime; it is not to be
purchased at a lesser price." And Chaucer (1340- Portuguese
1400) complained "the lyf so short, the craft so (Augusto Radtke)
long to lerne." Hippocrates (c. 400BC) is known
for the excerpt "ars longa, vita brevis", which is
part of the longer quotation "Ars longa, vita brevis,
occasio praeceps, experimentum periculosum,
iudicium difcile", which in English renders as Romanian
"Life is short, [the] craft long, opportunity eeting, (tefan Lazr)
experiment treacherous, judgment difcult." Of
course, no single number can be the nal answer:
it doesn't seem reasonable to assume that all
skills (e.g., programming, chess playing, checkers Russian
playing, and music playing) could all require (Konstantin Ptitsyn)
exactly the same amount of time to master, nor
that all people will take exactly the same amount
of time. As Prof. K. Anders Ericsson puts it, "In
most domains it's remarkable how much time
even the most talented individuals need in order Serbian
to reach the highest levels of performance. The (Lazar Kovacevic)
10,000 hour number just gives you a sense that
we're talking years of 10 to 20 hours a week
which those who some people would argue are
the most innately talented individuals still need to
get to the highest level." Spanish
(Carlos Rueda)
So You Want to be a
Programmer
Here's my recipe for programming success: Slovak
(Jan Waclawek)
Get interested in programming, and do
some because it is fun. Make sure that it
keeps being enough fun so that you will be
willing to put in your ten years/10,000
hours. Turkish
(al Uluahin)
Program. The best kind of learning is
learning by doing. To put it more technically,
"the maximal level of performance for
individuals in a given domain is not attained
automatically as a function of extended Ukranian
experience, but the level of performance (Oleksii Molchanovskyi)
can be increased even by highly
experienced individuals as a result of
deliberate efforts to improve." (p. 366) and
"the most effective learning requires a well-
dened task with an appropriate difculty
level for the particular individual,
informative feedback, and opportunities for
repetition and corrections of errors." (p. 20-
21) The book Cognition in Practice: Mind,
Mathematics, and Culture in Everyday Life is
an interesting reference for this viewpoint.
References
Bloom, Benjamin (ed.) Developing Talent in Young
People, Ballantine, 1985.
Answers
Approximate timing for various operations on a
typical PC:
Notes
T. Capey points out that the Complete Problem
Solver page on Amazon now has the "Teach
Yourself Bengali in 21 days" and "Teach Yourself
Grammar and Style" books under the "Customers
who shopped for this item also shopped for these
items" section. I guess that a large portion of the
people who look at that book are coming from
this page. Thanks to Ross Cohen for help with
Hippocrates.
Sort by Best
Recommend 55 Share
Join the discussion
Name
Eric-Wubbo Lameijer
3 years ago
Thank you for this post! I was trying to help someone learning to program (though she does not plan to
take only 24 hours for doing so...)
Two remarks content-wise though:
1) learning by doing is not necessarily the best or even the fastest way to learn, even though it denitely
has its place. If I would teach anyone programming, I'd strongly recommend to study and try to
understand good code; this would be the technique of 'worked examples'. So far, lots of 'worked
examples' and a bit of problem solving seems to be better than one example followed by lots of problem-
solving. (see for example http://www.jstor.org/discov...
2) The 10-year rule (or 10.000-hour rule) very much depends on the eld; it used to be about 6 years for
painters, but can be over 25 years for musicians. (Sternberg, Handbook of Creativity, around page 230) It
tends to depend mostly on the competition in the eld - the author of 'Moonwalking with Einstein' became
an US champion after about 1 year of training!. Assuming that a majority of programmers work hard at
deliberate practice (which I doubt), it may indeed take 10 or 15 years to become a top programmer. But to
be functionally literate and 'worth hiring' may not require that many years. Besides, one could denitely
ask who is a 'top programmer': someone who can write code that is superbly simple and clear? Someone
who can solve a complicated problem with a snazzy new polynomial algorithm? Someone who can keep
track of a project involving millions of lines of code? Someone who knows hundreds of language
functions and libraries? Someone who actually understands what a non-computer-scientist customer is
talking about and can transform it into a solution? Not all programmers will be equally good in all of those
things, being the 'best' programmer may therefore be like comparing apples and oranges.
For the rest, excellent post! It denitely contains material that I want to mull over some more...
64 Reply
And your comment just provided me the vision on what a good reading actually means. we should
think about not just accept it as the ultimate truth. add something according to your experiences
throughout your life. think before believing
4 Reply
Amit Jha
3 years ago
I am referring to AI book these days and its just amazing to come to these pages.
19 Reply
zejian ju
3 years ago
Great article, learn much from it, thank you very much!
17 Reply
dicksonagb
3 years ago
ppolask
3 years ago
I have been wondering how to become a programmer in 21 days using these books, but this great article
has cleared my misconception of becoming a programmer in just over two weeks!!!.
10 Reply
TheTaoOfProgramming
3 years ago
Bullshit. You're putting a lot of people off programming. What if you can already program before you
`learn`? Your mind already works that way, and someone showing you the basics it just makes perfect
sense and you're coding in say 15 to 30 minutes. You'll probably not sleep that night, of excitement. Just
absorbing the functions and APIs methods just t.
Ok there's tons to `learn` to memorize like a parrot - but, the basics are also very simple - and it all was
built on basic principles. It also makes sense as if someone has already done much the work for you to
achieve your creative ideas.
Programming is also un-learning, the tech changes very rapidly. Very humbling. Can be very theoretical
and mathematical. Philosophical. And very fun. An incredible eld and science.
Some program like lling in a coloring book, the lines are already there. For some it is painting a blank
canvas, innite.
So it takes 15 minutes, to 10,000 hours to a life-time, decades and you're still learning every day.
Oh, and to put in 10,000 hours into programming can be done in 2 years, even faster do the maths.
Kids master this. It can be as much taught as teaching someone to love.
There you go, don't take much of what people say for granted - you write the code, you write the rules you
decide.
29 Reply
You obviously don't know who Peter Norvig is. Maybe just Google the name for the sake of it. I'm
sure you'll be enlightened even if just a little...
1 Reply
You missed the point of this entirely. While it's good to let people know coding isn't as easy as riding
a bike, people that deter others from doing what they want to do is wrong regardless. How many
times have I been told game or web development is some stupid pipe dream whether vocally or
without saying a word. People are doing both successfully whether freelance or working with an
actual company and degree or no degree. Will they be a pro in 30 days from reading a book meant
for beginners? No but it's a start.
Reply
The comparison to riding a bike is silly: becoming a procient bicycle rider takes years of dedicated
practice. Sure, everyone with some practice can ride a bike in the park or maybe commute to work,
but that is the "hello world" equivalent of bicycling, or chapter 2 of any 24 hour programming book.
Reply
I don't agree with your expressed sentiments. I really take issue with your rst statement. No it's not
obvious, nor is it correct procedure for you to jump to this conclusion as a reaction to
TaoOfProgrammings expressed opinion. If anything, it shows that YOUR brain requires more
discipline and perhaps YOUR brain has a natural tendency to assert things it has no clue about.
(whether TaoOfProgramming is a programmer or not, which I would tend to assume is a possibility
until proven otherwise, especially given his/her name...)
until proven otherwise, especially given his/her name...)
In other news, appeal to authority is still a logical fallacy. One can certainly disagree with Peter
Norvig and still stand upright...
Reply
I'm guessing the reason he said that he is not a programmer is. Well
nd one programmer that will ever say "What if you can already program
before you `learn`?" .... Find me anyone who can do something and its a
99.9% chance they'll never say, "Oh yeah, I just tried swimming and now
I'm a professional swimmer after 15 minutes", or a professional painter,
ect. You might understand the basics better then others, but becoming
procient and effective with said tool or skill will take a long time,
no matter what it is or who you are. Then to top that off, people sell books by making people think
they can literally "Learn (any language) in 21 days!" I agree its good to get people into it. But that
could also be why so many people stop coding. When you realize you wont be coding that game or
making that impressive website in a month a lot of people become discouraged.
What I think the OP ment was that some people are more inclined to learn certain
things over others. I might be able to understand programming easier
than you, it could just click with me, but you can understand other things better than me.
oh
and 10,000 hours is 416 days and 16 hours.... so If you wanna get those
10,000 hours in two years isn't that like 15 or 16 hours per day 7 days
a week?
Reply
To be honest, the rst time I programmed at 13 years of age, it just clicked, it was as if programming
was the perfect vessel to express something I had in me.
As soon as I knew what the basic idea of programming is (series of instructions with ow control)
and did some examples, endless abstract ideas came to my mind and were automatically converted
into pseudo-code in my head, it was effortless and could not be stopped.
I remember coming back to my father that day and telling him during dinner: "I can do anything you
can do" (he owned a software company, and no, he never sat down to teach me). Even though I only
knew two ow control mechanisms IF and JMP, I could not think of a problem (lack of creativity
probably) I could not solve with the tools I had (IF and JMP).
While I was not a master programmer at 13, learning a language's syntax and basic functionality
triggered a lifetime of coding. I am a 31-year-old software engineer now and plan on being one for
few more decades.
In my opinion, anything that gets you closer to becoming an expert is a Good thing, specially if it is a
book that gives you a concrete set of tasks and schedule that will get you closer, since many people
get stuck wanting to learn but never know where to start. However, I agree with Norvig that those
books should be renamed to: "Learn basic <language> syntax and functionality in 21 days" (but that
isn't a catchy title that would prompt many sales ;).
Finally, Norvig should also consider that whenever you have a large goal (mastering C++), it is
always good to start with a small concrete task to work towards to (i.e. a 21-day plan to learn syntax
and basic functionality!). Agile methodologies became popular precisely because they allowed
small incremental deliveries towards a larger goal (a nished product).
Conclusion: 21 days books are a great starting point (so long as the book is well written).
Reply
I agree. Also I think the basic premise "a little learning is a dangerous thing" of this blog post is
awed. Or does Peter Norvig think that teaching calculus in high school is
dangerous because most students don't become professional
mathematicians?
1 Reply