先祝程序员们节日快乐!
1980年,当我在哥伦比亚大学从法律系转到计算机系时,我完全没有预期计算机专业在21世纪会是多么的火爆。我很幸运,完全凭借兴趣作出的选择,成就了我的终身职业。后来的故事大家都很了解,我在卡内基·梅隆大学取得博士学位,从美国回到中国,从跨国科技巨头的领导者,到专注科技领域的投资人。这一切都离不开当初的选择,我选择了计算机,选择了人工智能。
我有幸见证了过去四十年计算机行业的飞跃,见证了中国高科技产业的兴盛,也见证了“程序员”队伍的诞生和壮大。在这个行业,我们见过很多白手起家、一夜暴富的奇迹;也见到很多中年失业、透支生命的悲剧。那么在今天的环境下,程序员还是一个好的职业选择吗?如果要成为一个成功的程序员,想在计算机行业施展拳脚,应该怎么做?我想和你们分享我的同事、创新工场人工智能工程院执行院长王咏刚做客璞跃中国播客节目的一次采访。咏刚本人就是优秀程序员的代表,希望他的建议能够给计算机行业的人才、尤其是计算机专业的同学们带来启发。
Q:您觉得现在程序员饱和吗?未来几年市场对程序员的需求还会如此强烈吗?大学生读计算机专业,未来还会是香饽饽吗?
王咏刚:程序员之所以能够变成非常赚钱的行业,不是因为相比其他行业超级到什么程度,主要原因是吃到了过去30年全球信息化的红利。这30年,全球信息化的发展远远超出了30年前的人的想象能力。那时候的电脑是一个大方盒子,只能做一些简单的东西,很难想象高性能的摄影摄像,或者智能的程序可以跑在今天这么小且平价的手机上。
信息化的超高速发展带来的杠杆效应,是一种撬动效应,任何行业一旦引入信息化,都可以把效率提高百倍、千倍。哪怕只是把以前的纸质的信息变成数字的,都可以用智能算法挖掘出非常多有价值的东西,这对传统行业是“降维打击”。
这是过去30年世界科技产业格局的主题,所以程序员其实都是吃了这个红利。如果没有科技产业超出预期的发展,程序员这个行业也不可能有这么高的收入。
因此我觉得,对程序员的需求,本质上取决于这种科技趋势能保持多久。回顾历史,和程序员相关的科技趋势,大概经历了三个阶段。最早的信息化/数字化,就是把非数字的东西全部用电脑处理。第二步是移动化/物联网化,就是把数据全部分布在像手机、电视机顶盒、冰箱的这样终端里,这一步让网络变成了移动化的网络,远远超出了以前一个电脑能做的,把整个世界连在了一起。今天我们看到,在这个基础上,各行各业在有了信息化,有了移动网络之后,第三步是把智能算法放在每一个地方,去大幅提高效率。所以智能化这件事,特别是人工智能算法在各个行业的渗透,其实才刚刚开始。
那么程序员这个行业还能火多久?只要智能算法对效率的提升,还能保持前面30年这样的速度,我相信这个行业还是会一直红火下去,只是红火的方式、对程序员的素质或者经历的要求会和以前不一样。
Q:您认为具备什么能力的程序员才是行业稀缺的优秀人才?
王咏刚:概括地讲,计算机行业的高级人才分两类:偏科研的人才,和偏工程的人。这两类人才的成长路径、企业对他们的要求,还有他们可发挥能力的空间非常不一样。
第一类科研人才相对少一些,他们必须有比较强的科研敏感度,在计算机专业,或者数学相关专业读到博士,并且博士研究中能够做出世界级的、顶尖的成果。科研型人才是这个行业里超级宝贵的人才,他们的工作方式,工作的思路,从小积累的能力,和工程型人才是有很大区别的。
科研型人才本质上是要做学术突破,在最前沿的领域大胆地做创造性的尝试。相比解决问题的敏锐度,发现问题的敏锐度更重要。能不能从你所掌握的知识里,从今天大家都在做的事情里,发现哪些事情是最有可能取得突破的。很多读到博士、博士后的学生其实都不算科研人才,他们只是在这个领域继续读下去了而已,真的科研人才是要做出突破性成果的。
第二类,工程型人才的数量是相对比较多的,高级人才里可能百分之八九十都是工程型人才。这些人才的培养比较有规律可循,对个人的天分、非规律性的积累、或者机遇的要求相对少一些。
其实今天很多人并没有理解培养计算机人才本质的规律。小朋友在小学阶段对编程有兴趣的话是很好的苗子,励志做计算机工程师也是很好的志向。但是对这些同学来说,他们需要一个好的引导框架,尽量开拓视野,编程语言尽量多了解一些,看最好的程序员贡献出来的代码是什么样的,远比按照编程语言教科书去背语法重要。
在中学阶段,数学要远远比编程语言重要,也远重要过任何软件的学习。如果立志走编程这条道,想进入计算机行业,那么就要从中小学开始打好数学基础,了解数学知识怎样帮助其他领域。
所以我对喜欢编程的同学的建议是,可以去体验编程是怎样一回事,去看那些大师级的代码是什么样的,去体验那些最好的程序。
但是从学的角度讲,我认为学编程不着急,最重要的还是学好数学。一个数学底子非常薄的人,最后无论给他灌多少本编程语言教科书,多少本数据结构算法教科书,他最终的编程实力都会很弱,不会进入到高级的计算机工程工作者的行列。
Q:我们知道计算机行业有很多细分的领域,近几年市场变化非常快,一些程序员在自己的细分领域不景气的情况下,会面临一些职场的焦虑,对此您怎么看?您觉得程序员应该如何保持自己在职场上的竞争力?
王咏刚:很多程序员有一个特别大的误区,本来做得挺好的,结果细分行业不景气了,比如编游戏程序的,突然发现页游不景气了,就好像非常无助,不知道该干嘛了。但其实高层次的程序员根本不会有这种困惑。
低层次和高层次怎么区分?其实特别简单。比如游戏行业的程序员,有相当大一部分只会拿着游戏开发工具,比如说 Real、Unity、C++ 、C#,别人提需求,他去找参考案例,照猫画虎把这个代码变成自己的。但如果你问他一些细节,他就完全懵了,因为别人的代码就是这么写的,他根本就没有想过深层的原理。
另一种程序员他也会仿照别人的代码,但因为有好学的精神,因为之前积累的数学功底,他每一次都会自我提问,探索深层的原理。每一次都刨根问底的程序员,是非常有可能通向高级程序员的行列的。
假设说他所从事的行业,比如说页游不流行了,但他对底层的图形学技术,游戏引擎技术等等是非常深入了解的,他可以转到别的游戏;就算整个游戏行业不流行了,他可以转到VR、转到AR;算VR、AR都不流行了,他还可以转去做驱动层的渲染,可以转到物理仿真、生物仿真、化学仿真,因为这些领域的底层技术其实都是相通的。
所以对高级程序员来讲,真的是公司求着他们加入,他们不会担心求职困难或行业不景气。学习习惯和学习能力,对技术的底层的了解的深度,完全决定了程序员在职场上的受欢迎程度。
Q:网络上引起热议的,除了程序员的收入比较高,另一个就是“程序员职业年龄在35岁终结”,对此您怎么看?
王咏刚:年龄问题在这个行业还挺普遍的,但不意味着这是一个对的事情。
同样计算机领域的公司,它们的盈利模式是非常不一样的,直接决定了公司用人的思路。绝大多数计算机行业的公司,是没办法在技术上完全领先的,大量的公司都是跟随者。所以大家观察到的这个现象,普遍是因为大多数公司不需要持续性的科技创新。
所以从公司的角度出发,反正是用相对低端的产品、低端的技术服务相对普通的客户,在招聘的时候,都会青睐应届学生,他们虽然是普通程序员,但他们年轻又能吃苦,成本也低很多。
在这样的企业环境里,如果到了35岁甚至40岁还不转型,确实挺难的。所以很多人就彻底跟编程无缘了,转型做管理等等,这是一个无奈的选择。
在真正强调科技创新、持续加大研发投入的企业里,很多有经验的、在某个领域积累到40岁、50岁甚至60岁的人还在编程序,而且水平相当高,也非常受欢迎。就我自己的工作经验,我在 Google全球的办公室见过非常多的大龄程序员,这些白发苍苍的程序员,他们做出来的活都非常漂亮,而且Google也非常喜欢他们在这个环境里面发挥价值,所以我觉得本质上取决于企业是不是对持续创新有需求。
Q:回看互联网的发展历史,许多计算机专业的学生在毕业后选择创业,赚到了人生的第一桶金,也不乏很多人书写历史。从您的角度来说,您支持刚刚走入社会的年轻人投身创业吗?
王咏刚:对绝大多数应届毕业生来说,我不太建议去创业,除非先天有一个非常好的创业氛围或者创业环境。
有些同学在上学期间就已经准备好创业,同时有一个非常匹配的环境,比如说我们曾经见过非常好的投资人的孩子,他的家长帮他安排了非常完整的成长路径,一毕业就可以给他对接资金、技术、商业上的各种资源,他毕业之后去创业是顺理成章的。但是这样的毕业生太少了。
对绝大多数毕业生来说,刚毕业去创业都是很冒失的举动。我建议毕业生尝试几个方向,比如进入科研机构去做研究;比如说进入到大厂去做一个程序员;或者加入早期或中期的创业团队,去体验一下创业到底是怎么回事。和创始人一起在这种生死考验里走几圈,你会发现你能学到非常多的东西,对未来的创业是相当坚实的铺垫。
想创业的话,有机会一定要加入顶级的创业团队去学习一下,第一流的创业者在做什么,这样你很容易去判断自己适不适合创业,什么时候可以去创业。
Q:对计算机专业的同学们,你有什么建议吗?除了正常的学业以外,他们还应该着重培养自己哪些方面的能力?
王咏刚:对已经选了计算机专业的同学,还是要分两个大方向。
如果未来走科研的道路,从第一天开始学习起,就要培养自己提出新问题的能力,千万不要把视野局限在老师教了什么,课本上讲了什么,或者说毕业设计布置了什么。一定要看看在你所做的领域里,这个世界上最顶级的人都在做什么,这些最顶级的工作里还有哪些未完善的成果。
第二个建议就是找到一个好的导师,这个对科研人太重要了,有什么样的导师才能带出什么样的学生,这是科研领域不破的真理。一旦你觉得导师不合适,一定要在各种层面上追求,比如到另一个学校,或者换到另一个组,在你力所能及的范围内找到那些国际视野最好、论文经常发表在顶级的会议或者期刊上的老师。
接下来是对工程型的人。我们想一下,最好的工程师在哪?他们几乎都不在学校里,几乎都不是你的老师。很简单,因为做老师的收入太低了。不管在中国还是美国,那些有能力的顶级程序员,一定是在顶级的企业里。
你们从学校学到的知识,一定有价值,但会非常有限。在这种情况下,我建议同学们在力所能及的范围内尽量寻找实习机会,寻找和别人合作的机会。我举一些例子,第一,参加著名企业的实习,这是一定要争取的;第二,参加著名企业的夏令营、比赛等项目,都有可能得到那些最核心的程序员的指导;第三,今天有那么多开源项目,在GitHub上有那么多代码,要去多看,如果你有心得,还可以贡献,可以提交代码,这个过程要远比在学校里学好多个月得到的都多。
这是我对学生们最大的建议,很多人其实没想明白这一点。行业最精英的人在哪,你就去哪里找最精英的人学习,而不是把自己局限在读书、考试,做毕业设计这些事情。
出处:微信公众号 @李开复