Teach Yourself Programming in Ten Years
Teach Yourself Programming in Ten Years
Peter Norvig
The conclusion is that either people are in a big rush to learn about
programming, or that programming is somehow fabulously easier to
learn than anything else. Felleisen et al. give a nod to this trend in their
book How to Design Programs, when they say "Bad programming is Bulgarian
easy. Idiots can learn it in 21 days, even if they are dummies." The (Boyko Bantchev)
Abtruse Goose comic also had their take.
Let's analyze what a title like Teach Yourself C++ in 24 Hours could
mean:
Teach Yourself: In 24 hours you won't have time to write several Chinese
significant programs, and learn from your successes and failures (Xiaogang Guo)
with them. You won't have time to work with an experienced
programmer and understand what it is like to live in a C++
environment. In short, you won't have time to learn much. So the
book can only be talking about a superficial familiarity, not a deep
understanding. As Alexander Pope said, a little learning is a Croatian
dangerous thing. (Tvrtko Bedekovic)
With all that in mind, its questionable how far you can get just by book
learning. Before my first child was born, I read all the How To books, and
still felt like a clueless novice. 30 Months later, when my second child
was due, did I go back to the books for a refresher? No. Instead, I relied
on my personal experience, which turned out to be far more useful and
reassuring to me than the thousands of pages written by experts.
Fred Brooks, in his essay No Silver Bullet identified a three-part plan for
finding great software designers:
This assumes that some people already have the qualities necessary for
being a great designer; the job is to properly coax them along. Alan Perlis
put it more succinctly: "Everyone can be taught to sculpt: Michelangelo
would have had to be taught how not to. So it is with the great
programmers". Perlis is saying that the greats have some internal quality
that transcends their training. But where does the quality come from? Is it
innate? Or do they develop it through diligence? As Auguste Gusteau (the
fictional chef in Ratatouille) puts it, "anyone can cook, but only the
fearless can be great." I think of it more as willingness to devote a large
portion of one's life to deliberative practice. But maybe fearless is a way
to summarize that. Or, as Gusteau's critic, Anton Ego, says: "Not
everyone can become a great artist, but a great artist can come from
anywhere."
References
Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine,
1985.
Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p.
10-19.
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.