2021-01-21

彼得 · 诺维格


为什么每个人都这么匆忙?

走进任何一家书店,你会看到如何在24小时内自学Java,以及提供无尽的变体来教授C、SQL、Ruby、算法,几天或几小时后等等。亚马逊高级搜索 [标题: 教,你自己,小时,从: 2000开始,发现了512本这样的书。前十名中有九本是编程书籍 (另一本是关于记账的)。类似的结果来自于用 “学习” 代替 “自学” 或用 “天” 代替 “小时”。

结论是,要么人们急于学习编程,要么编程比其他任何东西都容易得多。Felleisen等人在他们的《如何设计程序》一书中对这一趋势表示赞同,他们说 “糟糕的编程很容易。白痴可以在21天内学会,即使他们是假人。”Abtruse Goose漫画也有他们的看法。

让我们分析一下像24小时自学C ++ 这样的标题可能意味着什么:

自学: 在24小时内,你将没有时间写几个重要的程序,并从中学习成功和失败。你没有时间和一个有经验的程序员一起工作,也没有时间理解生活在C + + 环境中的感觉。简而言之,您将没有时间学习很多东西。所以这本书只能谈论表面的熟悉,而不是深刻的理解。正如亚历山大 · 波普所说,一点点学习是一件危险的事情。

C ++: 在24小时内,您也许可以学习C ++ 的一些语法 (如果您已经知道另一种语言),但是你不能学到很多关于如何使用这种语言的知识。简而言之,如果你是一个基本的程序员,你可以学习使用C + + 语法以基本的风格编写程序,但是你无法了解C + + 实际上是什么好 (和坏)。那有什么意义呢?艾伦 · 佩里斯曾经说过: “一种不影响你思考编程方式的语言不值得知道”。一个可能的观点是你必须学习一点点C + + (或者更可能的是,像JavaScript或处理之类的东西) 因为您需要与现有工具交互以完成特定任务。但是你没有学习如何编程; 你正在学习完成那个任务。

24小时内: 不幸的是,这还不够,如下一节所示。

十年后自学编程

研究人员 (布鲁姆 (1985) 、布莱恩和哈特 (1899) 、海斯 (1989) 、西蒙·蔡斯 (1973)) 已经证明,在各种领域发展专业知识需要大约十年的时间,包括下棋、音乐创作、电报操作、绘画、钢琴演奏、游泳、网球,以及神经心理学和拓扑研究。关键是深思熟虑的实践: 不仅仅是一次又一次地做这件事,而是用一项超出你目前能力的任务来挑战你自己,尝试它,分析你在做这件事之后的表现,并纠正任何错误。然后重复。再重复一遍。似乎没有真正的捷径可走: 甚至莫扎特,一个4岁的音乐天才,也花了13年多的时间才开始创作世界级的音乐。在另一种类型中,甲壳虫乐队似乎凭借一系列热门歌曲和1964年埃德 · 沙利文秀的亮相而崭露头角。但是自1957年以来,他们一直在利物浦和汉堡打小型俱乐部,虽然他们很早就有了广泛的吸引力,但他们的第一个重大成功是中士。胡椒,于1967年发行。

马尔科姆 · 格拉德威尔推广了这个想法,尽管他专注于10,000小时,而不是10年。亨利 · 卡蒂埃-布列松 (1908-2004) 有另一个指标: “你的前10,000张照片是你最差的。“ (他没想到,有了数码相机,有些人可以在一周内达到那个目标。)真正的专业知识可能需要一生: 塞缪尔 · 约翰逊 (1709-1784) 说: “任何部门的卓越只有通过一生的劳动才能实现; 它不能以较低的价格购买。”乔叟 (1340-1400) 抱怨道: “lyf太短了,飞船太长了。”希波克拉底 (c.公元前400年) 以摘录 “龙舌兰,短梭菌” 而闻名,这是较长的引文 “龙舌兰,短梭菌,大胸草,大胸草,三叶草,艰难梭菌” 的一部分,在英语中,它描述为 “生命短暂,[这] 工艺漫长,机会短暂,实验危险,判断困难。”当然,没有一个数字可以成为最终答案: 假设所有技能 (例如g.,编程、下棋、跳棋和音乐演奏) 都需要完全相同的时间来掌握,也不是所有人都需要完全相同的时间。作为K教授安德斯 · 爱立信 (Anders Ericsson) 表示: “在大多数领域,即使是最有才华的人也需要多少时间才能达到最高水平。10,000小时的数字只是给你一种感觉,我们谈论的是每周10到20小时的年份,有些人会认为这些年份是天生最有才华的人,他们仍然需要最高级别。”

所以你想成为一名程序员

这是我成功编程的秘诀:

对编程感兴趣,并做一些,因为它很有趣。确保它保持足够的乐趣,这样你就愿意投入你的十年/10,000小时。

程序。最好的学习方式是边做边学。更严格地说,“在给定领域中,个人的最大绩效水平不是作为扩展经验的函数自动获得的,但是,由于深思熟虑地努力提高,即使是经验丰富的个人也可以提高绩效水平。“ (第366) 和”最有效的学习需要一个定义明确的任务,为特定的个人提供适当的难度水平、信息反馈以及重复和纠正错误的机会。“(第20-21) 这本书《实践中的认知: 日常生活中的思想、数学和文化》是这一观点的有趣参考。

与其他程序员交谈; 阅读其他程序。这比任何书籍或培训课程都重要。

如果你愿意,在大学里呆四年 (或者在研究生院呆四年以上)。这将让你获得一些需要证书的工作,也会让你对这个领域有更深入的了解,但是如果你不喜欢学校,你可以 (有一些奉献精神) 独自或在工作中获得类似的经验。无论如何,仅靠书本学习是不够的。《新黑客词典》的作者埃里克 · 雷蒙德说: “计算机科学教育不能让任何人成为专业程序员,就像学习画笔和颜料可以让某人成为专业画家一样。”我雇佣过的最好的程序员之一只有高中学位; 他制作了很多很棒的软件,有自己的新闻组,并且有足够的股票期权来购买他自己的夜总会。

和其他程序员一起做项目。在一些项目上做最好的程序员; 在其他项目上做最差的。当你是最棒的时候,你可以测试你领导一个项目的能力,并用你的愿景激励他人。当你最糟糕的时候,你知道大师做什么,你知道他们不喜欢做什么 (因为他们让你为他们做)。

在其他程序员之后的项目上工作。理解别人写的程序。看看当原始程序员不在时,需要什么来理解和修复它。想想如何设计你的程序,让那些在你之后维护它们的人更容易。

学习至少六种编程语言。包括一种强调类抽象的语言 (如Java或C ++),一种强调功能抽象的语言 (如Lisp或ML或Haskell),一种支持语法抽象的语言 (如Lisp),一个支持声明性规范 (如Prolog或C + + 模板),一个强调并行性 (如clojuror Go)。

请记住,“计算机科学” 中有一台 “计算机”。了解您的计算机执行指令、从内存中获取单词 (有或没有缓存缺失) 、从磁盘读取连续单词需要多长时间,并寻找磁盘上的新位置。(这里回答。)

参与语言标准化工作。它可以是ANSI C committee委员会,也可以决定您的本地编码样式是否具有2或4个空间缩进级别。无论哪种方式,你都可以了解其他人在一种语言中喜欢什么,他们的感受有多深,甚至可能了解他们为什么会有这种感觉。

有良好的意识尽快停止语言标准化工作。

考虑到所有这些,仅仅通过书本学习你能走多远是值得怀疑的。在我的第一个孩子出生之前,我读了所有的《如何读书》,仍然觉得自己是一个无知的新手。30个月后,当我的第二个孩子到期时,我回到书上复习了吗?不。相反,我依靠我的个人经验,结果证明这比专家写的数千页对我来说更有用,更让人放心。

弗雷德 · 布鲁克斯在他的论文《没有银弹》中确定了一个寻找优秀软件设计师的三部分计划:

尽早系统地识别顶级设计师。

指派一名职业导师负责潜在客户的发展,并仔细保存一份职业档案。

为成长中的设计师提供相互交流和激励的机会。

这假设一些人已经具备了成为一名伟大的设计师所必需的品质; 工作就是恰当地哄骗他们。艾伦 · 佩里斯更简洁地说: “每个人都可以被教导去雕刻: 米开朗基罗必须被教导如何不去。伟大的程序员也是如此 ”。佩里斯说伟人有一些超越他们训练的内在品质。但是质量从何而来呢?是先天?还是他们通过勤奋来发展?正如奥古斯特 · 古斯特 (《料理鼠王》中的虚构厨师) 所说,“任何人都会做饭,但只有无所畏惧的人才会很棒。”我认为这更多的是愿意将一生的大部分时间用于协商实践。但也许无所畏惧是总结这一点的一种方式。或者,正如古斯托的评论家安东 · 自我所说: “不是每个人都能成为伟大的艺术家,但是伟大的艺术家可以来自任何地方。”

所以去买那本Java/Ruby/Javascript/PHP的书吧; 你可能会从中得到一些利用。但是你不会在24小时或21天内改变你的生活,或者你作为程序员的真正的整体专业知识。努力工作在24个月内不断提高怎么样?好吧,现在你开始有所进展了……

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

推荐阅读更多精彩内容

  • Teach Yourself Programming in Ten Years Peter Norvig Why ...
    赵凯阅读 337评论 0 0
  • 十年内自学编程 彼得·诺维格 为什么大家都这么着急? 走进任何一家书店,你就会看到如何 自学爪哇 24 小时内 除...
    han741阅读 186评论 0 1
  • Zynq7000术语详解 相信大家刚看到Zynq手册的时候,对着那么一大堆缩略语肯定是一头雾水,特转来一篇文章,为...
    xiliangzhao阅读 212评论 0 0
  • 夜莺2517阅读 127,709评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 6,876评论 1 6