职业与工作方法norvig.com编辑精选
用十年时间自学编程(1998)
Teach Yourself Programming in Ten Years (1998)
2007 — 2025,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是 Peter Norvig 1998 年的经典文章,回应“21天/24小时学会编程”一类速成书,主张真正精通编程需要约十年持续、有意识的练习。文中讨论刻意练习、学习多种语言、与同行交流并参与实际项目等长期成长路径。
为什么经久不衰:它把“速成”神话拆解为长期刻意练习的路径,提醒学习者保持耐心并持续拓宽视野,二十多年后仍值得读。
HN 评论精选
学习多种语言能带来不同范式与工具视角,不应固守一门“万能语言”。
>> 至少学半打编程语言。我一直很惊讶那么多人不同意这一点;他们总在寻找能包办一切的那一门语言。更糟的是,有人以为自己已经找到,搜索就此结束——考虑到今天有这么多优秀语言,这很可悲。Clojure(STM/refs、vars、atoms 与 agents)、kdb/q(非循环式数组代码)、Rust(所有权)、Go(异步处理得更好,不过我也很喜欢 Clojure 的 core.async)、Python(trio nursery)、C++(asan、msan、tsan)。有几个博客持续给我启发,全是信号没有噪音:Eli Bendersky(几乎涵盖所有语言)、Fasterthanli.me(Go、Rust 等)、Mechanical Sympathy(Java,已停更但仍值得访问)。
CraigJPerry查看英文原文
>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownership), Go (async done better, although i also really like core.async in clojure too), Python (trio nursery), C++ (asan, msan, tsan). There's some blogs continually give me good food for thought in this space, all signal no noise: Eli Bendersky, (every language under the sun) e.g. https://eli.thegreenplace.net/2016/the-expression-problem-and-its-solutions/ Fasterthanli.me (Go, Rust, others) e.g. https://fasterthanli.me/articles/so-you-want-to-live-reload-rust Mechanical Sympathy (Java), defunct but still worth visiting https://mechanical-sympathy.blogspot.com/
要区分“找到工作”和“成为专家”,十年指的是专家水平而非入门。
标题对我来说有点误导。10年不是“自学编程”,而是“成为编程专家”。大多数人学编程不是为了成为专家,而是为了找工作。找到工作后,有些人立刻停滞,有些人过一段时间停滞,还有些人多年后仍继续学习。问题在于“多久能变得可雇用”,而不是“多久能成为专家”。前者的答案是几个月的刻意练习;后者的答案是[几十]年的刻意练习。像“24小时学会C++”这样的书针对前者。而且,需要精通这门手艺的工作数量并不大。
BossingAround查看英文原文
The title is a bit misleading to me. 10 years is not to "teach yourself programming," it's to "become an expert in programming." Most people do not want to learn programming to become experts, most people want to learn programming to get a job. After getting a job, some will plateau right away, others will plateau after some time, and others still will keep learning even after years and years. The problem is "how long until I become employable," not "how long until I become an expert". The answer to the former is months of deliberate practice. The answer to the latter is [tens of] years of deliberate practice. Books with titles like "learn C++ in 24 hours" target the former. And, I would say that the number of jobs that require the mastery of the craft is not large.
长期坚持必须配合刻意练习,而且水平越高,进一步提升越难。
纪律带来的复利效应是最被低估的概念之一。“坚持x年”有一个前提:刻意练习。你必须努力意识到差距、找出差距并改进。此外,从0到40所需的努力,与从50到70或80到95所需的努力不同。认识到并接受博尔特的100米冲刺和你的是两回事,可以给你内心平静和专注。
tchalla查看英文原文
The power of compounding which comes from discipline is one of the most underrated concepts. There's one caveat to "keep at it for x years"; deliberate practice. You have to work towards being aware of gaps, identifying them and improving them. In addition, the amount of effort required to go from 0-40 is different from the one required to go from 50-70 or 80-95. The recognition and acceptance that a 100m sprint is different for Usain Bolt than it is for you could give you inner peace and focus.
十年说法可能吓退新人,但真正的兴趣能让长期学习自然发生。
我同意文章,约10年能给你一个良好开端,只要你坚持。别人问我需要多久时,我尽量避免给出这样的数字,因为可能让他们泄气。谁知道呢,如果我早年听说这个数字,可能就被劝退了。不过,我对这个领域天生的好奇和着迷让时间不知不觉飞逝。如果你在犹豫,可以把它当作鼓励。编程是学习永不停歇的领域,如果这正合你意,所需时间最多只是次要问题。
tempodox查看英文原文
I agree with the article, ~10 yrs will give you a good start if you stay with it. When asked by others how much it would take, I try to avoid giving a number like that because it might discourage them. Who knows, had I heard or read that number early in my involvement, it might have discouraged me. However, my innate curiosity and fascination for the field made the time fly by without me noticing it. If you're in doubt, you might take that as encouragement. Programming is a field where the learning never stops, and if that's your thing, the time required will become secondary at most.
历次讨论
- 2007没上首页10 分 · 0 评
- 2007上了首页54 分 · 7 评
- 2010上了首页88 分 · 32 评
- 2010没上首页8 分 · 0 评
- 2011没上首页7 分 · 1 评
- 2011没上首页8 分 · 0 评
- 2012上了首页131 分 · 29 评
- 2013没上首页6 分 · 0 评
- 2013上了首页186 分 · 86 评
- 2015上了首页67 分 · 61 评
- 2016没上首页5 分 · 0 评
- 2016没上首页8 分 · 2 评
- 2018上了首页184 分 · 51 评
- 2019上了首页174 分 · 87 评
- 2021上了首页253 分 · 115 评
- 2022上了首页187 分 · 112 评
- 2024上了首页586 分 · 302 评
- 2025上了首页179 分 · 102 评
同类还值得读
如何成为一名程序员:简短、全面而个人的总结
How to be a Programmer: A Short, Comprehensive, and Personal Summary
一篇广为流传的程序员成长指南,作者以个人经验系统总结了成为优秀程序员所需的各项技能——从调试、测试、沟通到团队协作与身心健康。
职业与工作方法上首页 6 次 · 2008–2015samizdat.mines.edu编辑精选不要自称程序员
Don't Call Yourself a Programmer
经典职业建议文章劝软件工程师不要把自己局限在“程序员”这个标签上,而要从公司业务角度说明自己创造的价值;文中讨论了成本中心与利润中心、头衔、求职与职业选择,也顺带批评了学术界的价…
职业与工作方法上首页 5 次 · 2011–2021kalzumeus.com编辑精选创作者的日程与经理的日程
Maker's Schedule, Manager's Schedule (2009)
Paul Graham 在这篇文章里把时间表分成两类:管理者的日程以小时为单位,会议可以填满一天;创作者(程序员、写作者等)的日程则以半天为单位,需要长时间不被打断的连续块。
职业与工作方法上首页 5 次 · 2009–2021paulgraham.com编辑精选为什么程序员的薪酬不与生产力成正比
Why programmers are not paid in proportion to their productivity
讨论为什么程序员的薪酬往往不随其生产力成比例增长:生产力难以客观量化,薪酬更多受组织预算、岗位定价和个人议价能力影响。
职业与工作方法上首页 5 次 · 2009–2022johndcook.com我们只招最时髦的人
We only hire the trendiest
Dan Luu 在这篇文章中批评科技公司招聘时盲目追逐流行趋势:只招用最新框架、有知名大厂或名校背景的人,而忽视真正有能力的候选人。
职业与工作方法上首页 4 次 · 2016–2021danluu.com