你的位置: iPc 首页 > 全部文章 > 杂乱无章 > 阅读文章
科学X网    Office    苹果中国    微软中国    VPS

对于“人人都能编程”的反思 - 程序猿都来说说,能编程是否就代表适合编程?

15
三月

乔布斯说过编程教你如何学会思考。前段时间一部名为“大多数学校不会教的东西”的视频甚嚣尘上,引起了大众的关注。短片的中心思想就是“人人都能编程”,而且其中还有几位知名富豪宣传这一论点……

不是人人都适合编程

Ps:顺便提一句,这些富豪的钱是通过雇佣别人编程而赚取的,并非靠自己编程。

前几天我弟弟来了,他是一个做梦都想发财的主。他对我说:“我想和你一样,我要编程”。毫无疑问,他看过了那部短片。

我想说的是,这一切根本不靠谱。不是人人都适合编程(简单的入门除外),更重要的是,并非人人都能把编程作为职业。

短片一开头是 Bill Gates 和 Mark Zuckerberg 等知名富豪在宣传“我还是小孩子的时候就开始编程了”,然后显示一下他们最早的启蒙作品,例如小游戏之类的。之后,Dropbox 的创始人 Drew Houston 出现了,称“编程和玩乐器、做运动差不多”,然后大学期间学过编程的 NBA 全明星 Chris Bosh 会介绍他在编程方面遇到的困难和苦恼,但实际上却并没有指出有多困难。

他们说的这些并不假。一个有好奇心的小孩学习编程就像学习其它任何无关紧要的事情一样(例如乐器、运动、杂耍、针线等)。但后面的内容就开始误导了。

不是人人都适合编程

Facebook 早期工程师 Makinde Adeagbo 出来说很多编程都是很简单的。从某种意义上说,这是对的。但我同样可以说打篮球时很多动作也是很简单的,比如横穿球场或是投球。横穿球场是打篮球中的基本要素,但并不是会横穿球场就表示篮球打得好。实际上,你可能每次都能漂亮地横穿球场,却根本打不好篮球。

然后我最喜欢的片段来了:Bill Gates 在那说:“加,减,这就是编程”。就是这些,这些就是你学会编程所需的唯一前提。

这话只有一半是对的。你确实无需太多数学知识就可以编程。但问题是,随着你对编程了解得越多,就会发现数学必不可少。我要说,想当一名成功的程序员,必须要有良好的代数基础,若你想达到更高的层次,你还需要学得更多。且不说这条前提,我认为他传达了一个错误的信息,那就是将最低门槛描述为成功的方法。更准确的说法是:“你只需要知道加和减。但你最好多学一点数学,因为除了《7 天学会 Java》之类的入门读物以外,当你阅读更有内容的编程书籍时,就需要用到数学。”

短片的最后开始介绍程序员的生活。奢华的办公室、免费的食物、优美的景色,当然,还有大把的钞票。

我被短片中的一家公司录取了:Facebook。但我代表其他的程序员说,这些看着很难受。

这些条件确实存在,但对于程序员而言,它们是特例,并非常态。大多数办公室仅配备咖啡机和冰箱,供你存放自己的食物,通常都被别人的食物塞得满满的,且一放就是一个星期。程序员们坐在大楼的一个个灰色小隔间里,还要遵守严格的规章制度。

我要做的就是被 Facebook 录取。他们告诉我这很简单。他们录取了成百上千的人,编程很简单。

事实并非如此。Facebook 的面试可不只是“加和减”,他们给你的问题也绝不是有趣的小游戏。其中一道面试题需要了解微积分,另一道题需要说明高度递归函数的时空复杂性,还有一道需要掌握程序员使用的抽象工具,例如正规语言和自动操作。

我弟弟想干我这一行,他认为能比在 FedEx 当个工人赚得钱多得多,过上小奢侈的生活。短片里也是这样宣传的。但我想他并没有看清现实。

不是人人都适合编程

这个周末我坐在这里,给一个我完全不了解的代码库写代码。我觉得如果不按时完成,我这份工作就危险了。我编写的不是有趣的游戏或其它具体的东西,实际上,如果一个外行问我在编写什么,我根本没法说清楚。我或许会说:“我在编写一种东西,它能够读取代码,根据代码推导出信息,其他人就可以在他们的工具里使用这些信息”。我想这不是我弟弟或其他任何人预想中要做的事情。

我能够早上 10 点上班,晚上 7 点回家吗?不行。编程不是按时上下班的工作,它总是需要更多的时间来完成任务。而且永无休止,因为任务源源不断。总是有新功能要加,有新 bug 要除。你总是有理由再留下一两个小时。就我个人而言,我感觉时间如此不够用,我必须加班到凌晨 12 点到 1 点才能平衡我的工作和个人生活。这可不仅仅是我的状态,很多程序员都是如此。

我并不想打击刚开始学编程的新人,它确实是一件能增强能力的事情。但对于我而言,编程不是一两个周末或 52 个周末就能搞定的事情,而是我付出了艰辛的努力,且放弃了生活中许多其它的事情才学会的。我很难告诉我弟弟或是其他任何人,学会一点编程的成果(不是名誉和财富)就能改变他们思考的方式,而且我也不认为这件简单的事情对大多数人是一种好的推动。

简而言之,不是人人都适合编程。它不是短片或电影“社交网络”里所描述的有趣好玩的工作。它也不是一项令人精神爽朗的社会活动。你要花费大量的时间坐在电脑屏幕前,盯着那些五颜六色的文本文档,思考,思考,打字,生气,并奇怪自己为什么会选择这种死坐着不动的生活。

《多数学校不会教的东西》What Most Schools Don’t Teach

关于本文
各种回音
  1. 说: 回复他/她

    好文章

  2. 说: 回复他/她

    英语为母语的人更适合编程

    • 说:

      要学好数字就蛋疼了。

  3. 说: 回复他/她

    很有道理!!!

  4. 说: 回复他/她

    我不适合编程!我转行了!

    • 说:

      哈哈哈 很好

  5. 说: 回复他/她

    自从几年前各大网络公司为贫困中学、小学提供编程教学,我就知道其中很大一部分是为了电子发展而准备廉价劳动力。

    • 说:

      我不这么想,这么说太偏激,如果从这个角度想,很多职业,学生从小学到大,就是社会在培养廉价劳动力。

  6. 说: 回复他/她

    瞎扯嘛,谁说能编程就一定要干这行了?编程作为智力练习只是帮你做个不要那么二缺的人而已,和所谓的阅读名著陶冶情操是一个意思。
    至于整天想着靠干这个发财的家伙们,要是有什么不好的下场也只能怪自己没看清楚路,这可是你自己要来的。

  7. 说: 回复他/她

    自从几年前各大网络公司为贫困中学、小学提供编程教学,我就知道其中很大一部分是为了电子发展而准备廉价劳动力。

  8. 说: 回复他/她

    是的,我们公司有很多女的,的确不适合,平衡一下而已

  9. 说: 回复他/她

    数学、英语、物理我实在太渣了,编程没那么容易的。

  10. 说: 回复他/她

    因为美国没有北大青鸟所以你不能7天精通JAVA。只要能交学费,在北大青鸟你一定可以大声说:“我能”

  11. 说: 回复他/她

    我正在学编程,但我很清楚自己不是为了编程而编程,它只是一件方便的工具。它是解决问题的一条途径,但并不是必要的途径。编程的所要达到的最高目标会许就是不编程。

  12. 说: 回复他/她

    其实小编就是想告诉大家,编程没那么简单;中国人那么多,个个都会编程,那小编的饭碗岂不很容易被挤破

微博评论箱