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

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.你真的想当程序员吗?

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

  • 对编程感兴趣,并且因为有趣而去编写一些程序。只有保证它足够有趣,这样你才愿意投入10年或是1万小时。
  • 写程序。最好的学习方法是从实践中学习。用更专业一点的话来说:“某个人在特定领域内的最高水平,不是因为经验的积累而自动获得的。即使是经验非常丰富的人,也可以通过刻意练习来提高自己的水平。”(p. 366)以及“最有效的学习方式,需要一个明确定义的目标,而且这个目标要有一定的难度;需要及时的信息反馈;需要有机会重来和纠正错误。”(p. 20-21)《实践中的认知:日常生活中的思维、数学和文化》这本书提供了上述的观点。
  • 和其他程序员交流;阅读他们的代码。这比任何一本书或者训练课程都重要。
  • 如果你愿意,花四年上个大学(或者更久,读个研究生)。这会让你有机会得到一份需要文凭的工作。而且这也会让你对这个领域有更深层次的理解。但如果你不想呆在学校,你也可以通过自学或工作获得类似的经验(但需要付出一定代价)。无论如何,仅仅学习书本上的知识是不够的。《新黑客字典》的作者Eric Raymond曾说过:“计算机科学教育并不能使任何人成为编程专家,就像学习笔刷和颜料并不能使得任何人成为一个专业画家。”我曾经雇佣过一个员工,只有高中文凭,却是我们最好的程序员之一。他做出了许多优秀的软件,有他自己的新闻组, 而且通过股票期权买到了自己的夜总会
  • 与其他程序员一起合作。在一些项目中,你可能是最好的程序员;在另一些项目中,你可能是最差的程序员。当你是最好的程序员时候,你能测试下自己领导一个项目的能力,并能用自己的观点去激发别人。当你是最差的程序员时候,你可以学到那些牛人们是怎么做的,他们不喜欢做什么(因为他们会把不喜欢的事情丢给你去做)。
  • 接手别人的项目。理解别人所写的程序。看看当程序的原作者不在的时候,理解并改正他的程序需要花费什么。思考一下,如何设计程序,才能让其他人维护你的程序变得容易些。
  • 学习至少6门编程语言。包括一门支持类抽象的语言(例如Java或C++)。一门支持函数化抽象的语言(例如 Lisp 或 ML 或 Haskell),一门支持语法抽象的语言(例如 Lisp),一门支持声明规格说明的语言(例如 Prolog 或 C++ 的模板),以及那些强调并行的语言(例如 Clojure 或 Go)。
  • 记住在“计算机科学”中有“计算机”这三个字。你需要知道你的计算机执行一条指令会花费多长时间?从内存中读取一个单词(包括在缓存中和不在缓存中两种情况)会花费多长时间?从硬盘中连续地获取数据会花费多长时间?在硬盘上定位一个新的位置会花费多长时间? (答案在这儿)。
  • 尽量参与到语言标准化的过程中。这可以是加入ANSI C++委员会;也可以是决定你周围人的编程风格:缩进采用2个空格还是4个空格?无论用哪种方式,你都能知道别人对于一门语言的看法和喜好程度,甚至你可以知道为什么他们会这样看。
  • 有良好的意识,尽快适应编程语言标准化的成果。

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

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

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

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


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

Peter Norvig “Teach Yourself Programming in Ten Years ”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容