proomt

Search

Search posts, papers, and topics

Hall of Fame

Hall of FamePeter Norvig200112 min readintro

Teach Yourself Programming in Ten Years

Summary

The essay argues that becoming a competent programmer takes roughly ten years (about 10,000 hours) of deliberate practice, not the quick crash‑course promises. It offers concrete habits—regular coding, peer interaction, diverse language exposure, and real project work—to sustain long‑term growth.

  • Mastery needs ~10 years of deliberate practice; short‑term books can’t replace sustained effort.
  • Learn by doing: write code, get feedback, repeat, and tackle tasks just beyond your current ability.
  • Collaborate with other programmers, read and maintain their code, and work on varied projects to broaden experience.
  • Study several programming paradigms and languages to develop different abstractions and problem‑solving skills.

Software engineers and aspiring programmers should read it to reset expectations and adopt habits that lead to real expertise over time.

6/10

Related reading

  1. Growing a Language

    Guy Steele argues that programming languages should be designed to grow, starting from a small core and providing mechanisms for users to extend them. He illustrates this with historical examples and shows why a static, fully‑specified language is impractical.

    Hall of Famevirginia.edu43 min
  2. Learnable Programming

    Bret Victor argues that teaching programming requires environments that make code vocabulary, state, and execution flow visible and understandable, not just live‑coding output. He proposes design principles—transparent labeling, contextual explanations, and controllable visualizations—to help learners think rather than memorize.

    Hall of Fameworrydream.com41 min