十年自学编程
彼得·诺维格
为什么每个人都这么着急?
走进任何书店,您将看到如何在24小时内自学Java,以及无穷无尽的变体,可以在几天或几小时内教授C,SQL,Ruby,算法等。亚马逊高级搜索[标题:自学,自学,自学,自2000年以来,共发现512本书。在前十名中,有九本是编程书籍(另一本是关于簿记的)。通过将“自学”替换为“学习”或将“小时”替换为“天”,可以得到类似的结果。
结论是要么人们急于学习编程,要么编程比其他任何事物都更容易学习。 Felleisen等。在他们的《如何设计程序》一书中对这种趋势表示赞同,当他们说“错误的编程很容易。白痴可以在21天内学习它,即使他们是傻瓜。” Abtruse Goose漫画也受到了欢迎。
让我们分析一下“ 24小时自学C ++”这样的标题的含义:
自学:在24小时内,您将没有时间编写几个重要的程序,并从中学习成功和失败的原因。您将没有时间与经验丰富的程序员一起工作,也不了解在C ++环境中生活的感觉。简而言之,您将没有时间学习很多东西。因此,这本书只能说是肤浅的熟悉,而不是深刻的理解。正如亚历山大·波普(Alexander Pope)所说,学一点东西是危险的。
C ++:在24小时内,您可能可以学习C ++的某些语法(如果您已经知道另一种语言),但是您对如何使用该语言的了解却不多。简而言之,如果您是一名Basic程序员,则可以学习使用C ++语法以Basic风格编写程序,但是您将无法了解C ++的优点(或缺点)。那有什么意义呢?艾伦·珀利斯(Alan Perlis)曾经说过:“不影响您对编程的思考方式的语言是不值得了解的”。一个可能的观点是,您必须学习一小部分C ++(或更可能是JavaScript或Processing之类的东西),因为您需要与现有工具交互以完成特定任务。但是,那时您不会学习编程。您正在学习完成该任务。
在24小时内:不幸的是,这还不够,如下一节所示。
十年自学编程
研究人员(Bloom(1985),Bryan&Harter(1899),Hayes(1989),Simmon&Chase(1973))显示,在下棋,音乐等众多领域中发展专业知识大约需要十年的时间。写作,电报操作,绘画,弹钢琴,游泳,网球以及神经心理学和拓扑学研究。关键是深思熟虑的实践:不仅要一遍又一遍地做,还要挑战一项超越您当前能力的任务来挑战自己,尝试一下,分析执行前后的表现,并纠正任何错误。然后重复。再重复一次。似乎没有真正的捷径:即使是4岁的音乐天才莫扎特,也花了13年的时间才开始创作世界一流的音乐。在另一种类型中,甲壳虫乐队似乎爆出一连串的#1热门歌曲,并在1964年的埃德·沙利文(Ed Sullivan)演出中露面。但是,自1957年以来,他们一直在利物浦和汉堡的小型俱乐部打球,尽管如此,他们仍然具有巨大的吸引力在早期,他们的第一个重大成功就是Sgt。胡椒,于1967年发行。
马尔科姆·格拉德威尔(Malcolm Gladwell)推广了这个想法,尽管他专注于10,000小时而不是10年。亨利·卡蒂埃·布雷森(Henri Cartier-Bresson,1908-2004年)还有另一个度量标准:“您的前10,000张照片是最糟糕的。” (他没想到数码相机会在一个星期内达到这个目标。)真正的专业知识可能需要一辈子:塞缪尔·约翰逊(Samuel Johnson(1709-1784))说:“任何部门的出色表现都只能靠他的劳动来实现。一辈子;不要以较低的价格购买。”乔uc(1340-1400)抱怨说:“ lyf太短了,工艺太长了。”希波克拉底(约公元前400年)以“ ars longa,vita brevis”的摘录而闻名,它是“ Ars longa,vita brevis,occasio praeceps,experimentum perculosum,iudicium difficile”较长引语的一部分,英语中用“ Life”表示。短,工艺长,机会稍纵即逝,实验诡reach,判断困难。”当然,没有一个数字可以作为最终答案:假设所有技能(例如编程,下棋,下棋和玩音乐)可能都需要完全相同的时间来掌握,这似乎是不合理的,也不会所有人都花费完全相同的时间。正如K. Anders Ericsson教授所说:“在大多数领域,即使是最有才华的个人也需要多少时间才能达到最高水平。令人难以置信的是,10,000小时的工作时间使您感觉我们正在谈论多年每周10到20个小时,有些人会说这是最天生的才华