Summary

A Chinese translation of Peter Norvig’s classic essay “Teach Yourself Programming in Ten Years,” arguing against the popular “learn X in 24 hours” genre. Norvig applies research on expert skill development — particularly the 10,000-hour / 10-year rule of deliberate practice — to programming, and recommends learning six programming languages across different paradigms as a path to genuine mastery.

這是 Peter Norvig 經典文章《用十年時間自學程式設計》的中文翻譯,反駁流行的「X 天學會 Y」類書籍。Norvig 將專家技能發展的研究(特別是一萬小時/十年刻意練習法則)應用於程式設計,建議學習六種不同範式的程式語言作為達到真正精通的途徑。

Key Points

  • “24-hour” and “X days” programming books promise superficial familiarity, not genuine expertise
  • Research (Bloom, Hayes, Ericsson) shows expert skill in chess, music, and sports requires ~10 years / 10,000 hours of deliberate practice
  • Deliberate practice: not just doing, but pushing past your comfort zone with focused effort and feedback loops
  • Recommended language diversity: LISP/Scheme (recursion, first-class functions), C/C++ (memory, pointers), Prolog/Haskell (logic/constraint programming), Perl/Python (string manipulation), at least one with concurrency support
  • Other key elements: program a lot, work with experienced programmers, work on real projects, work on projects after others

Insights

The 24-hour book genre persists because publishers profit from false hope — the same mechanism that makes diet books perennial bestsellers. Norvig’s deeper point is that programming mastery isn’t just about syntax knowledge; it requires developing judgment, intuition, and the ability to reason about systems at multiple levels of abstraction — and those only come from years of varied experience. The polyglot language recommendation is pragmatic: each paradigm forces a different mental model, and exposure to multiple models expands the problem-solving toolkit.

Connections

Raw Excerpt

如果你走进书店,你会看到《如何在24小时内自学Java》,以及其他无数类似的书籍,告诉你在几天甚至几小时之内学会Perl、Windows、Internet等等知识。我在亚马逊上进行了如下搜索:[书名包含”teach yourself”,出版日期在2000年1月1日之后] 并且找到了512本这样的书。