Teach Yourself Programming in Ten Years - Peter Norvig

1 minute read

This article summarizes Teach Yourself Programming in Ten Years, Peter Norvig.

Why is everyone in such a rush?

Why the rush to learn programming? Many books advertise mastering a programming language in a short timeframe, such as “Teach Yourself Java in 24 Hours,” but this is practically impossible. While you might acquire superficial knowledge, true understanding and mastery require ample time and experience.

Teach Yourself Programming in Ten Years

It takes about ten years to become a true programmer: Various studies show that developing expertise in any field—whether chess, music, or sports—requires about ten years (or 10,000 hours) of deliberate practice. Programming is no exception. The key is deliberate practice: not simply repeating tasks, but challenging yourself with work slightly beyond your current capability, executing, analyzing performance during and after, and correcting mistakes. Then repeat, and repeat again. There are no shortcuts.

  • 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.”
    • Chaucer (1340-1400) complained “the lyf so short, the craft so 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 difficile”, which in English renders as “Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgment difficult.”

So You Want to be a Programmer

Peter Norvig’s keys to success in programming:

  • Get interested, and play because it is fun.
  • Write programs! Learn by doing.
  • Talk with other programmers; read other programs.
  • If you want, go to college (or graduate school). (Not strictly necessary)
  • Work on projects with other programmers, taking turns leading and following.
  • Work on maintaining programs written by others.
  • Learn several programming languages with different paradigms (abstraction, functional, parallel, etc.).
  • Remember that there is a “computer” in “computer science.” Understand how the computer works.
  • Get involved in language standardization efforts, and get out at the right time.

In conclusion, there are no shortcuts to learning programming. It requires steady effort, deliberate practice, and passion. Do not be impatient for quick results; focus on building skills over the long term.

Leave a comment