然而编程学院并没有什么用
英文原文:Coding Academies Are Nonsense
编者按:斯蒂芬·尼克尔斯(Stephen Nichols)是 GameSalad 的首席执行官。
近年来,编程作为一种职业已经从技术宅的专属领域走进了大众的视野,但是真正擅长这项技能的人只有少数。在超过 20 年的职业编程生涯当中,我从来没有见过任何人可以在几周之内从一个编程新手成为一个合格的程序员,但是那些编程学院的宣传语好像都是这么写的,它们对学员 的承诺内容还包括快速就业、能够买得起特斯拉的丰厚薪水,以及改善生活水平的能力。
目前来说这是一个不错的商业模式。现有的熟练程序员数量还远远不能满足美国 500 万个 计算机相关岗位 缺口。现在你只需花费低至免费,高至 36000 美元的学费,然后就可以在一年之内学会计算机编程。如果你足够幸运的话,你将会发掘出自己的编程潜能,并逐渐爱上这种技能,甚至可以找到一份真正的工作。
在未来 15 年之内,这种来之不易的技能将会变得过时——如果有人还在坚持的话。无论编程学院给出了什么天花乱坠的承诺,它们仍然无法生产出程序员。它们所做的只是在 一大片还没有接触过编程的学员当中找出个别有天赋的人才。大多数人都认为编程是一件沉闷无趣的事情,所以他们很难在编程事业上有所进展。考虑到软件本身是 在不断变化的,他们也许不能跟上这种变化。
对于那些想学编程的人来说,这里有一条最佳的建议:先试后买,我的意思是在花钱报班之前先了解自己是否适合这个行业。不然的话,你到头来可能无法在职业道路上有所进展,反而只是浪费了数万美元。对于一个逐渐消亡的职业来说,这样做是非常不值得的。
逐渐萎缩的职业
我认为编程这个热门职业的价值正在逐渐减少。这不是因为软件正在消失,而是因为软件的开发方式将会经历根本性的改变。无需使用代码的软件开发技术已经开始进入主流。包括 Scratch、DWNLD 和 Telerik 在内的可视化内容生成工具将会继续完善,用户最终将无需编写一行代码即可开发出自己的应用。
如果使用可视化的构件,甚至是简单的英语就可以描述含义的话,有谁还想去编程呢?自然语言处理和概念建模的进步将会消除传统编程的需要。软件开发工具很快就能理解你所说的话。即使是在在含义消歧方面的细小进步也能带来极大的改变。我们现在已经看到了 OpenCog 和 NLTK 自然语言处理这样的项目,而且麻 省理工大学已经证明了 人类语言可以用于向计算机发出指令。
编程学院剩下可以赚钱的时间已经不多,因为它们毕竟只是短期思维的产物。当无需代码的软件开发技术出现之后,编程技术将会变得毫无用武之地,程序员也不再是一个有前途的职业。
不切实际的投资回报
经营编程学院是一个不错的短期经营理念。这不仅因为程序员还算是比较新的职业选择,而且它能够激发起人类建造东西的欲望。你可以通过编程制作出交互式的数字内容,这就是人们喜欢这个想法的原因。
根据 CourseReport 的数据,全球编程学院的数量在 2013 年到 14 年增长了 175%,这里还没有计算非全日制的项目。全日制编程学院在 2014 年的总收入为 5900 万美元,不过 研究人员 表示这是一个“保守的”估计,更为合理的估计是每所学校的平均年收入为 220 万美元。2015 年的产业规模将会更大。至于学费方面,“高端编程学院的收费会高于公立四年制大学的平均学费(包括食宿费)。”
这样的收费就有点离谱了。因为编程学院能够做到的充其量只是激发起少部分学员的兴趣,然后大肆宣传极个别的成功案例,不断向外界营造“人人都能学编程”的错觉。事实上,学习如何将含义翻译成非人类的外来语言是非常困难的,这显然不适合大众市场。
学习编程本身是一件沉闷的事情
结合我在过去 20 年的编程经验,加上我对一些学习编程的儿童和学习 GameSalad 的用户的观察和了解,我注意到大部分人在学习编程的早期就会遇到障碍。宣称自己拥有超过 2400 万用户的 Code Academy 也只有少数的成功案例,这背后的原因可能也是上面提到的问题。大多数人都无法坚持编程的学习,因为他们无法理解计算机的思维,所以他们会发现将自己的想法 转换成编程语言是一件非常困难的事情。
简单来说,编程就是使用外来的语言编写出文本文件,而这些文件中的指令要让最愚蠢的机器都能理解。计算机跟人类不一样,它们不能从模糊的文本中推断出含义。所以一个程序员必须非常擅长于将问题分解成最简单的步骤,然后一字一句地向愚蠢的计算机解释这些步骤的含义。
拥有一定复杂度的应用都是由大量的文本文件构建而成的。举个例子,仅仅是我们的 GameSalad Creator 应用就含有 6972123 行代码,分别散落在 41702 个文件当中。这已经相当于一本 116202 页的书籍。
GameSalad Creator 代码文件的截图
程序员实际上都是语言学家,他们将人类语言翻译成能够让机器处理的变成语言。而且跟任何翻译者一样,他们都需要对源语言和目标语言有深入的了解 才能做出可以接受的结果。任何忽视这个事实的编程教学都将会流于形式,而且达不到应有的效果。最好的编程教育来自多年的学习与实践,别无他法。
先试后买
一行接一行的编程语言不过是一份细致入微的计算机指令表。在报读编程学院之前,无论这是不是一个免费课程,你都需要先问问自己这些问题:
- 我可以接受每天多个小时的文本输入工作吗?
- 我喜欢将将问题分解成详细的指令列表吗?
- 我擅长于抽象的概念思维吗?
- 我能适应数字建筑工人的工作吗?
如果你对上面全部问题都给出了肯定的回答,那你应该适合尝试编程。只要有理解力和决心的人都能掌握好这项技能——这也是我们能看到这么多自学成才的程序员的原因。但是程序员是一种自然资源,拥有这种意志和能力的人是有限的。
学习编程,也就是将含义翻译成非人类的外来语言是一件令人望而却步的事情。向编程学院投入数万美元似乎是克服这种畏惧的好方法,但是这样并不能 维持太长的时间。虽然这最终可能会成为你进入大型科技公司的门票,但是对于大部分人来说,这只是增加债务的另一种方式。除非你是热爱编程的少数人,否则编 程学院对你来说并没有什么用。
题图来自:HOLLY KUCHERA/SHUTTERSTOCK(图片经过调整)
翻译:关嘉伟(@consideRay)