Peter Norvig:自学编程,十年磨一剑

  黄小非译注:本文作者Peter Norvig目前任职于Google,其职位是研究主管(Director of Research). Peter Norvig是享誉世界的计算机科学家和人工智能专家。他是AAAI 和 ACM 的会员,是业界内经典书籍《Artificial Intelligence: A Modern Approach|人工智能:一种现代方法》的作者之一。在加入Google之前,他曾经是NASA(美国航空航天局)计算科学部门的主要负责人,并在南加州大学以及伯克利大学任教。以下为译文。

你们着什么急?

  随意步入一家书店,满目都是《7天搞定Java编程》这种速成书目,同样的书籍还包括Visual Basic、Window系统、Internet互联网等等,它们都承诺在几天,甚至几小时之内就让你能够学会相关技术。我在亚马逊网站上做了如下的条件检索:

pubdate: after 1992 and title: days and

(title: learn or title: teach yourself)

出版日期:1992年以后,题目关键字:“天”,“学会”或者“自学”

  然后得到了248条搜索结果。头78条都是计算机类书籍(第79条记录是《30天学会孟加拉语》)。我将“天”关键字换成了“小时”,不出意外地搜 索到了253条记录,其中头77条记录是计算机书籍,第78条的搜索记录是《24小时语法和样式自学手册》。在总共搜索到的头200条记录中,有96%是 计算机书籍。

  从上面的搜索结果可以看出来,要么就是人们对计算机技术的学习如饥似渴,要么就是计算机技术实在太简单,不费吹灰之力就能学会。相比于计算机技术书 籍的如此“速成”,在其他领域的书籍里,你却很难找到诸如:“三天学会贝多芬”,或者“五天搞定量子力学”,这种速成教材,甚至连《狗狗喂养手册》这种宠 物指南,都鲜有“几天搞定”的说法。Felleisen et al.在他们的著作《如何设计程序》一书中明确指出了这种“速成”的趋势,并评论到:“垃圾的编程技术当然非常容易,傻子都能在21天之内学会,哪怕他天生就是个白痴。”

  让我们来仔细看看《3天学会C++》这种速成教材实际上意味着什么:

peter norvig

  研究人员(Bloom (1985)、Bryan & Harter (1899,见文后参考书目)、Hayes (1989)、Simmon & Chase (1973,见文后参考书目) 的一系列调查研究显示,在各个领域内,要想获得专业级别的水平,大约需要10年时间的努力。参与此项调查的领域包括:国际象棋,作曲,发报,绘画,钢琴演 奏,游泳,网球等。科学家们从神经心理学和拓扑学的角度对这些领域进行研究,并得出结论。若要在某一领域内达到专家级的水平,其关键在于“审慎地重复”, 也就是说,并非是机械地,一遍又一遍地练习,而是要不断地挑战自我,试图超越自身当前的水平,通过不断的尝试挑战,并在尝试的过程中和尝试之后对自身的表 现进行分析和总结,吸取经验,纠正之前犯过的各种错误。把这一“审慎”的过程不断重复,才能取得成功。

  所谓的“捷径”是不存在的,即使对于莫扎特这种天才来说,也没有捷径可走,尽管4岁就开始作曲,可是他也花了13年的时间,才真正地写出了世界级的 作品。再举一个例子,甲壳虫乐队(The Beatles),他们似乎在1964年凭借一系列热门单曲和其在艾德沙利文秀(The Ed Sullivan show)上的演出一炮而红,但是你也许不知道,他们早在1957年就在利物浦和汉堡两地进行小规模演出了,而在此之前的非正式演出更是不计其数。甲壳虫 乐队的主要成名曲《Sgt. Peppers》,则是1967年才发行的。Malcolm Gladwell公布了他对柏林音乐学院所作的一项研究的报告,该研究对比了一个班里的学习成绩为上、中下三个档次的学生,并逐一询问他们进行音乐练习的时间。

  这三个档次中的所有人,大约都是在5岁的时候开始练习音乐的,一开始的时候大家练习音乐的时间都差不多,大约一周2到3小时。但是到了八岁左右,大 家的区别就开始体现了。后来成为班里最好的那一部分学生开始比别的学生练习得更多,大概每周6到9小时,12岁的时候每周8小时,14岁的时候每周16小 时,往后则越来越多,直到20岁左右,他们每周练习音乐的时间已经超过30小时了。在20岁的年纪,那些精英级别的演奏家们都有累计超过10000小时的 音乐练习时间。相比之下,仅有部分优等生能达到8000小时的累计练习时间,而那些音乐教师级别的学生,他们的累计练习时间只有4000小时左右。

  所以,也许这个让你能达到专业等级的神奇时间应该是10000小时,而不是10年。(Henri Cartier-Bresson (1908-2004)说过,“(作为摄影师),你所拍摄的头10000张照片都是垃圾”,但即使是垃圾作品,他拍一张照片也要花接近一小 时。)Samuel Johnson (1709-1784)认为这个时间应该更长:“在任何一个领域要想做到极好,势必穷尽一生的精力,否则根本无法企及。” Chaucer (1340-1400)也发出过“生命如此短暂,技能如此高深”的感叹。Hippocrates (c. 400BC)因写下了如下的句子而被人称颂:“ars longa, vita brevis”,该句是来自于一个更长的引用:”Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile”, 这段话翻译成英语就是:“生命很短暂,但是技艺却很高深,机遇转瞬即逝,探索难以捉摸,抉择困难重重”。这段话是用拉丁文写的。在拉丁文里,ars可以翻 译为“技艺”或者“艺术”,但是在古希腊文里,ars只能做“技能”的意思,而没有“艺术”的意思。

你想当程序员么?

  下面是我列举的程序员成功“食谱”

  要掌握上面所说的所有内容,光靠看书学习应该是很难做到的。当我的第一个孩子出生的时候,我几乎阅读了市面上所有的《如何…》指南书籍,但是我读完 了以后还是觉得自己是个菜鸟。30个月以后,我的第二个孩子快出生时,我难道还要做一个书虫么?不!相反,我此时更依赖我的个人经验,这些经验相比于那些 上千页的书籍,则更加有效和让我放心。

  Fred Brooks所著的著名的论文《No Silver Bullets|没有银弹》里向我们揭示了发现和培养软件设计人才的三步骤:

一个人去旅行,而且是去故乡的山水间徜徉。

Peter Norvig:自学编程,十年磨一剑

相关文章:

你感兴趣的文章:

标签云: