程序员

十年内教会自己编程(翻译)

2018-12-14  本文已影响13人  猪联璧何

1.为什么大家都这么浮躁?

走进书店,你就能看到一本《24小时自学Java》的书,与它摆在一起的,还有许许多多短时间内学会C,SQL,Ruby或算法的书。我在亚马逊上,做了这样的高级搜索 “书名:自学 小时 ”,发现2000年后出版的这样的书就有512本!这其中,销量前10的书中有9本是关于编程的(还有一本是关于记账的)。

所以我们可以得出结论:要么人们学编程时太浮躁了,要么编程实在太容易了,比其他任何技能都要容易学会。Felleisen在他的著作《如何设计程序》中提到了这种“速成”的趋势,并且指出:“糟糕的编程当然很容易学会,白痴也能在21天内学会,哪怕他们天生有智力缺陷。”

2.十年内教会自己编程

研究人员((Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973))发现,在很多领域内,如果你想获得专家级别的水平,大概需要十年的时间。这些领域包括了下象棋、作曲、绘画、弹钢琴、游泳、打网球、对神经心理学和拓扑学的研究等等。这其中的关键是刻意练习:并不是一遍又一遍的重复,而是给自己设定一个稍微超过自己当前能力的目标,尝试着去完成它。在尝试的过程中以及尝试结束后,分析自己的表现,并纠正自己的错误。然后再把这个过程不断的重复。所谓的“捷径”是不存在的:即使是莫扎特这种4岁就能作曲的音乐奇才,也花了13年时间,才能创作出世界级的作品。

Malcolm Gladwell 使得这个观点广为人知,尽管他关注的重点是1万小时,而不是10年。Samuel Johnson 也说过:“在任何一个领域要想做到极致,势必要花一生的精力,否则根本无法企及。”

当然,没有哪个数字能给你最终答案:假设熟练掌握每个技能(例如编程、下棋、演奏)所需的时间相同,或者假设每个人学会这些技能的时间相同,这完全是不合理的。正如 K. Anders Ericsson 指出的那样:“在很多领域,即使是那些最有天赋的个人,为了达到最高水平,也花费了难以想象的时间。1万小时这个数字只是想让你意识到即便是人们口中的那些最具天赋的个体想达到最高水平也需要年复一年的每周花上 10 到 20 小时。”

3.你真的想当程序员吗?

我有一份成功学会编程的秘诀:

Fred Brooks 在他的论文《没有银弹》中向我们揭示了找到卓越软件设计师的三个步骤:

  1. 有组织地鉴定出顶尖的设计者,并且越早越好。
  2. 为他指派一位职业生涯的导师,负责规划他未来的发展,并且让他谨慎地对待自己的职业履历。
  3. 为成长中的软件设计师提供机会,让他们相互交流,相互激励。

这个方式假定了有些人已经具备了成为一个卓越的软件设计师的潜质,要做的只是去引导他们。Alan Perlis 说的更简洁一些:“每个人都能被教会如何雕塑,但米开朗琪罗应该被教会如何不去雕塑。对于优秀的程序员来说,同样如此。”Perlis 的意思是说,那些大师们都有一些内在的特质,这些特质比他们接受的训练更为重要。但是这些特质从哪里来呢?它是天生的吗?还是可以通过后天的努力习得的呢?正如《料理鼠王》中说的那样:“每个人都能做饭,但只有无所畏惧的人才能成为大厨。”我认为“把生命中大部分时光用于刻意练习”是心甘情愿的。但也许无所畏惧才是对它最好的总结。或者正如《料理鼠王》中说的那样:“不是每个人都能成为伟大的艺术家,但伟大的艺术家可以来自于任何一个地方。”

所以,尽管去买那些速成的编程书吧。也许你会发现它们还有点用,但这不会改变你的人生。也不会让你在24小时或21天内,在编程领域上,有真正的整体上的提高。试试连续24个月努力提高自己的编程能力怎么样?如果你做到的话,你已经开始迈向成功之路了……


注:由于时间原因,没有一字一句翻译。省略了部分我认为不重要的内容。
原文:

Peter Norvig “Teach Yourself Programming in Ten Years ”

上一篇下一篇

猜你喜欢

热点阅读