专栏名称: 半轻人
王咏刚,笔名半轻人。技术宅,逻辑控。用 emacs 写小说,用平水韵下酒。
目录
相关文章推荐
51好读  ›  专栏  ›  半轻人

1024程序员节:35岁是程序员的终点吗?

半轻人  · 公众号  ·  · 2022-10-24 11:26

正文

这一篇是王咏刚在此前的一次播客节目中,谈到大学生如何学计算机,程序员如何成长等问题的文字记录稿。编入此文时做了少许文字修订。

【上图由计算机算法自动生成】

Q: 您觉得现在程序员饱和吗?未来几年市场对程序员的需求还会如此强烈吗?大学生读计算机专业,未来还会是香饽饽吗?

王咏刚: 程序员之所以能够变成非常赚钱的行业,不是因为相比其他行业超级到什么程度,主要原因是 吃到了过去30年全球信息化的红利 。这30年,全球信息化的发展远远超出了30年前的人的想象能力。那时候的电脑是一个大方盒子,只能做一些简单的东西,很难想象高性能的摄影摄像,或者智能的程序可以跑在今天这么小且平价的手机上。

信息化的超高速发展带来的杠杆效应,是一种撬动效应,任何行业一旦引入信息化,都可以把效率提高百倍、千倍。哪怕只是把以前的纸质的信息变成数字的,都可以用智能算法挖掘出非常多有价值的东西,这对传统行业是“降维打击”。

这是过去30年世界科技产业格局的主题,所以程序员其实都是吃了这个红利。如果没有科技产业超出预期的发展,程序员这个行业也不可能有这么高的收入。

因此我觉得,对程序员的需求,本质上取决于这种科技趋势能保持多久。回顾历史,和程序员相关的科技趋势,大概经历了三个阶段。最早的信息化/数字化,就是把非数字的东西全部用电脑处理。第二步是移动化/物联网化,就是把数据全部分布在像手机、电视机顶盒、冰箱的这样终端里,这一步让网络变成了移动化的网络,远远超出了以前一个电脑能做的,把整个世界连在了一起。今天我们看到,在这个基础上,各行各业在有了信息化,有了移动网络之后,第三步是把智能算法放在每一个地方,去大幅提高效率。所以智能化这件事,特别是人工智能算法在各个行业的渗透,其实才刚刚开始。

那么程序员这个行业还能火多久?只要智能算法对效率的提升,还能保持前面30年这样的速度,我相信这个行业还是会一直红火下去,只是红火的方式、对程序员的素质或者经历的要求会和以前不一样。

Q: 您认为具备什么能力的程序员才是行业稀缺的优秀人才?

王咏刚: 概括地讲,计算机行业的高级人才分两类:偏科研的人才,和偏工程的人。这两类人才的成长路径、企业对他们的要求,还有他们可发挥能力的空间非常不一样。

第一类科研人才相对少一些,他们必须有比较强的科研敏感度,在计算机专业,或者数学相关专业读到博士,并且博士研究中能够做出世界级的、顶尖的成果。科研型人才是这个行业里超级宝贵的人才,他们的工作方式,工作的思路,从小积累的能力,和工程型人才是有很大区别的。

科研型人才本质上是要做学术突破,在最前沿的领域大胆地做创造性的尝试。 相比解决问题的敏锐度,发现问题的敏锐度更重要。 能不能从你所掌握的知识里,从今天大家都在做的事情里,发现哪些事情是最有可能取得突破的。 很多读到博士、博士后的学生其实都不算科研人才,他们只是在这个领域继续读下去了而已, 真的科研人才是要做出突破性成果的。

第二类,工程型人才的数量是相对比较多的,高级人才里可能百分之八九十都是工程型人才。这些人才的培养比较有规律可循,对个人的天分、非规律性的积累、或者机遇的要求相对少一些。

其实今天很多人并没有理解培养计算机人才本质的规律。小朋友在小学阶段对编程有兴趣的话是很好的苗子,励志做计算机工程师也是很好的志向。但是对这些同学来说,他们需要一个好的引导框架,尽量开拓视野,编程语言尽量多了解一些,看最好的程序员贡献出来的代码是什么样的,远比按照编程语言教科书去背语法重要。

在中学阶段,数学要远远比编程语言重要,也远重要过任何软件的学习。如果立志走编程这条道,想进入计算机行业,那么就要从中小学开始打好数学基础,了解数学知识怎样帮助其他领域。

所以我对喜欢编程的同学的建议是,可以去体验编程是怎样一回事,去看那些大师级的代码是什么样的,去体验那些最好的程序。

但是从学的角度讲,我认为学编程不着急,最重要的还是学好数学。 一个数学底子非常薄的人,最后无论给他灌多少本编程语言教科书,多少本数据结构算法教科书,他最终的编程实力都会很弱,不会进入到高级的计算机工程工作者的行列。

Q: 我们知道计算机行业有很多细分的领域,近几年市场变化非常快,一些程序员在自己的细分领域不景气的情况下,会面临一些职场的焦虑,对此您怎么看?您觉得程序员应该如何保持自己在职场上的竞争力?

王咏刚: 很多程序员有一个特别大的误区,本来做得挺好的,结果细分行业不景气了,比如编游戏程序的,突然发现页游不景气了,就好像非常无助,不知道该干嘛了。但其实高层次的程序员根本不会有这种困惑。

低层次和高层次怎么区分?其实特别简单。比如游戏行业的程序员,有相当大一部分只会拿着游戏开发工具,比如说 Unreal、Unity、C++ 、C#,别人提需求,他去找参考案例,照猫画虎把这个代码变成自己的。但如果你问他一些细节,他就完全懵了,因为别人的代码就是这么写的,他根本就没有想过深层的原理。







请到「今天看啥」查看全文