责编 | 郑丽媛
纵观古今,人类的每一次进步,必伴随着科学技术的重大创新突破,而所谓“创新之道,唯在得人”,欲成为世界科技强国,关键在于人才。
目前,我国正处于科技发展的重要阶段,想要实现质的飞跃离不开优秀人才的推动——提升开发者数量,赋能程序员更多技术创新力,成为各行各业的发展重点之一。那么,面对新技术时代,我们要如何培育和造就一流科技创新人才?又该如何吸引更多年轻血液加入科技领域,实现人才量变与质变同步升级?
在 2022 长沙·中国 1024 程序员节的岳麓对话暨 2022 技术英雄百人会上,CSDN 特邀猎豹移动董事长兼 CEO 傅盛,澜舟科技创始人、创新工场首席科学家周明,中国第一代程序员、UCDOS 发明人、联众创始人鲍岳桥,CSDN 创始人 & 董事长、极客帮创投创始合伙人蒋涛,国防科技大学计算机学院院长、研究员、博士生导师卢凯和拓维信息副总裁、开鸿智谷总裁解伟俊共聚一堂,在 DoNews 创始人刘韧的主持下,围绕计算机思维的本质、“转码”需求等话题,共话现代技术人才的培养之道。
如果不从事计算机行业,会干什么?
刘韧:如果大家不从事科技、计算机行业,你会干什么?
鲍岳桥:
我是上大学后学的数学,后来偶然喜欢上计算机,之后就觉得这一辈子都要干这个事了。回想起来,如果我没考上大学,我现在可能在卖咸菜吧。
其实,我本来是很难考上大学的。我高三
(1985 年)
那年,我们学校已经连续三年没有一个人考上大学了,而那时我的成绩也只有 30 多名,尤其英语成绩特别差。好在后来一位老师激发了我学习英语的兴趣,自从他教我之后,我的英语成绩从 50 多分迅速上升到了 90 多分,总成绩也变成了全校第一。
后来高考时我发挥得也还行,报数学系也不是因为数学特别厉害。当时我本来是想报计算机专业,但我色弱不能报,所以才报了数学系,最后被杭大数学系录取。
我觉得一个人如果想要有所成绩,最重要的是要对某一项事情有着狂热爱好。我在大学时,也是因为一件事突然就喜欢上计算机了,它能让我去创造很多变化莫测的东西。一旦你真正喜欢一样东西并且入迷上瘾后,即使没有老师,你也可以成为一个特别厉害的专家。
蒋涛:
我
以前
参加过数学竞赛,
虽然没进
全国训练营,但也保送进了数学系,成绩也很不错。不过学了半年之后,我发现在数学上要走的路实在太长了,就尝试接触了当时在国内刚兴起的计算机。
我的感受是,学计算机最大的成就是你能够控制它。你写一个东西,你想它怎么样就怎么样,从事这一行对于我们这种平时不太喜欢跟人打交道的人来说也很合适。
当时,
比尔盖茨、
乔布斯等人的故事被写成了书《硅谷之火》,也正是看了这本书之后,我就认定要搞计算机了。
除了我之外,我们那批数学系的目前真正从事数学的其实也很少。有一个本科读数学、后来转到人大读法律系的同学,现在是法学的国内权威人士,有两三个留在学校里当老师,其他的都在各个地方,主要偏计算机和数学应用。
卢凯:
我想了想,
如果我不学计算机,我应该会去学工业美术设计。
在我小时候,
我有一个表兄
是画机械制
图的,那时我觉得画里又有力量、又有结构,很美。曾经我想过要不要搞机械,但后来在选专业的时候,还是觉得计算机更热门一些——在 90 年代时,计算机已经开始成为一个热门专业,比工业设计要火得多。
实际上,计算机里面也蕴含着美:你的程序写得漂不漂亮,是一种美;计算机硬件和整机结构设计得合不合理,也是一种美。美无处不在,现在我对学生们也讲,希望他们去欣赏美、认识美,这样你无论是搞工程、搞技术还是搞研究,都会从中欣赏到美,才有动力去创造。
解伟俊:
我倒没有太想过这个问题。我是九十年代上高中的,文理分科时觉得自己理科比文科强,就选择了理科,等到高中毕业时
(1993 年)
,便选了当时最热门的计算机软件专业。
一方面,我比较喜欢探索新领域;另一方面
,也参考了家长和老师的建议,他们都说这个专业好,以后找工作容易。因此我本科和研究生都是学的计算机,毕业后自然而然就从事了这一行,当时的就业市场前景也比较好。
在我看来,很多时候是当时市场需求决定了一些选择。至少对于我来说,那个年龄段对计算机谈不上热爱,自己的价值观和一些想法也还不够成熟。
傅盛:
当年我第一份工作本来想做销售的,因为我爸就是做销售的。
从小我跟着他跑过全国各地,一直觉得销售能去看不同的地方,和不同的人打交道。但最后我爸不同意,说我刚毕业还是学点技术好
(最近我发现销售也是个技术岗,要做一个好销售,一定不是只会耍嘴皮子,需要对整个产品、市场,还有对用户的决策流程都足够了解)
。
不
过
,
我计算机也没学得太好,当时学编程总是静不下心来,学到最后头很疼,就当了产品经理——一个需要技术基础,但技术能力又不用太强的岗位。拥有一定的技术基础,能真正理解产品是如何运作的,也能跟程序员和工程师深入探讨交流,但太强的
技术水平又容易形成“技术导向”的思维方式。
-
工程师的
整个闭环来自于眼前的电脑。譬如代码写得好不好,电脑就能给出验证并测试,总体而言是一个短闭环,可以精准把控到每一个点上。
-
产品经理则是一个长闭环,从项目立项到发布,再到用户反馈,整体是一个很长的过程。
当然,不排除有很多技术做得非常好的人最后转做产品依旧出色的人,但二者之间的思维模式有点不一样,在这过程中我觉得还是会有个转换的过程。所以,
可能正好是我自己在编程上的不足造就了我在另一个方面的优势。
周明:要是不学计算机的话,我大概会去学中医,也许现在还是个有名的老中医。
当年我考大学的时候,数学、语文和化学的分数都挺高,我爸一分析:“这是老中医啊!儿子,你去北京中医学院
(即现在的北京中医药大学)
。”因此我的第一志愿就是北京中医学院,结果没要我,我就服从分配,去重庆大学学计算机。
我是 1981 年上的大学,一开始根本不知道计算机是什么,还是我爸说:“计算机你不懂,计算器你总懂吧。”他以为计算机背后的原理是计算器,所以我也就带着计算器的概念到大学去学计算机了。
后来我分析了一下自己,我语文好,数学还凑合,学计算机也正是用一种语言把脑子里的想法实现出来。因此之后
我
做了好多
中文的自然语言处理,
像对联、诗词歌赋、小冰、机器翻译、搜索等,其实都是在处理语言
,只不过是用计算机。
我觉得自己挺幸运的,学了个计算机,又回到我特别喜欢的语言上来,这一辈子都是在用计算机
来做语言方面的一些事情。在我看来,人最幸福的事,就是兴趣和工作能合二为
一。
刘韧:很多人说,学了计算机以后会具备计算机思维,那么所谓的“计算机思维”具体指什么,它对人生有什么帮助?
鲍岳桥:
我没细想过这个问题,但我认为计算机思维可能会让人的逻辑思维过程更严密一些,学数学也会带来这方面的影响。如同傅盛所说的产品经理,要有技术基础才能理智分析什么可行什么不可行,我觉得自己也是个产品经理。
在
我们那个年代写程序,经常是一个人写的,没有团队,所以你肯定要从产品经理的角度去考虑要做什么,去分析需求,有一个大概的目标,然后再开始用程序实现。不过这样虽然效率很高,但搞不了特别大、很复杂的项目。
蒋涛:
我觉得受过编程训练以后,会增强
对一些控制、流程、因果的理解。
我见过很多顶尖的程序员,我
觉得他
们有
时候思维
都
有点呆呆的,
因为他的
计算机思维
已
经
固化到他
生活中
的
任何一个方面了
。
他们干事,流程都写好了,一定不会超出
他的流程。
但我好像没有这样,我比较随性,不是一个典型的程序员思维。
我发现那些我喜欢上的东西,其实它
们有一些意外性。比如
我
现在又学了佛法,佛经说,你所有的结果,都是由你前面的因带来的
,但其中又有主因、辅因等
。
卢凯:
我是大学老师,来自国防科技大学,计算机思维也是我们一直在研究和探讨的一个领域:如何把计算机思维教给学生,让他们利用这种新颖的思维方式,在解决问题的过程中发挥作用。
即便如此,
我们依旧
很难
给予
计算机思维或者计算思维一个很准确的定义。
在我看来,计算机思维是当你碰到一个问题的时候,如果适合用计算机或者计算思维来解的时候,你会很自然地利用你擅长的工具和方法,快速解决这个问题。
比方说,我们在统计家里有多少钱或者什么东西时,可能一般人会拿纸记账,厉害的人用 Excel 已经很不错了,但有计算思维的人,他可能用 Bash 写个小脚本程序,做个归类,数据分析。所以说,计算机思维如果和我们的生活更近一点,很可能就会引申为数据思维和智能思维。
不自觉地利用好这些工具和方法,我认为这就是计算思维用得好,而我们就在培养计算机专业学生的这种能力。当学生学完以后,我们希望,一,他具备了计算机的专业知识,二,具备了计算机系统的整个思维方式和系统观。
所以说,我们有时候叫做计算思维,
有时候我们又把它称之为计算系统思维。
解伟俊:
我来自于拓维信息,它 1996 年就成立做软件了,我们几千员工也都是做软件的。我理解主持人讲的计算机思维,我看我们企业里的员工,感觉计算机思维还挺明显的:
-
第一,要有项目思维,就是要有输入,也要有明确的输出;
-
第二,讲究时间,不能是无无休止的,要在规定时间完成规定的内容;
-
拓维信息前两年成立了一个开鸿智谷项目,我发现这个项目的开发人员和原来做传统软件的有些不太一样,选择员工的时候需要具有创新能力,要考虑这个项目未来是怎样的,所以计算机思维可能也要求创新思维。
我理解的
计
算机思维可能很多都体现在工
作上,如果要说影响到日常生活的话,一方面可能会更严谨,要有一个明确输出,不能忍受一个没有目标、一场说走就走的旅行,这在计算机思维下可能不太成立。另一方面可能是追求创新求变,不能一天到晚老是这样子,对生活上也要求一些变化。
傅盛:
我个人觉得计算机思维,正好补足了我们中国人在逻辑方面的一个比较大的空白,因为我们从小不怎么学逻辑学这些东西。第二是要形成一个可被实践检验的习惯。第三是要很严谨,我最烦的就是打了一大段代码以后,然后有多少个错误,得一个个调。不过虽然写得不好,但对我自己也有磨练,会提升我的思维严谨性和细致度方面。
计算机思维它其
实是可
以扩大化的,本质上来说,就是以一个理性的方式去面对这个世界,而不是只是感性。有本书叫《原则》,我觉得这本书把计算机思维扩展到了你对自己的工作和生活方面,学会制定原则,这些原则一旦 Run 起来,你就可以
追求一个确定性。
其次,我觉得未来一定是一个人机共存的世界。今天的所有东西,除了我们人本身的这些东西之外,很多都是代码组成的。每个人擅长不擅长计算机思维不重要,重要的是他们应该去理解计算机是怎么运行的,计算机思维是怎么回事。他不一定要以此为职业,但这应该成为一个底层的知识储备或要理解的事情。
最近我女儿在写长篇小说,她是初中生。有一天我看她在写
就问,你怎么写小说?
她说,我找了个
AI
引擎,有几段中间过渡就让它帮我写。所以
我觉得,其实计算已经深入到生活的方方面面,
我认为所有人都应该接受计算机思维,至
少可以去学习一下。
周明:
我觉得,计算思维是用计算机这些科学的基础理念去进行问题求解,然后寻找一个最优解的过程。
你其实在生活中会发现,学过计算机的人做事很有条理,人实际上处理任何事情,都是有限条件下的求优。比如,有朋友到家里吃饭,要买什么菜,买什么酒,后做几个菜,先做什么,后做什么,总共花多少钱等等,它实际上是 N 多条件约束下的一个求优的过程。
如果我们有计算思维的话,这件事就会变得很容易解决。你会想总共要花 1000 块钱,
家里大概最多能请 6 个人,酒花多少钱,菜花多少钱,在哪里买,在这种有限的条件下,寻找一个最优方案——
有计算思维的人
,无论面对什么
事情
,都是在各种条件下求优,碰见什么事都不着急。
你会发现我们日常生活中有好多人,因为没有这些思维,逻辑不清楚,他做的事情,无论是事业还是生活,基本上都一团糟。我个人认为,不管你学不学计算机,都要有那么一点计算思维,它会使得原来就聪明的人更聪明,一种更系统化的聪明,原来不是那么聪明的人,可能一点也就明白了。
转码,需要具备什么样的条件?
刘韧:现在有一个专有名词叫“转码”,即以前不是学计算机的,变成从事计算机,因为这样好找工作,但其实大部分人是转不成功的。那么,你们认为哪些人要具备哪些条件,才能比较容易“转码”?
鲍岳桥:
我学计算机的年代,和现在
这个时代差别太大了,但我认为如果你真的是非常喜欢编
程,那你肯定可以转过去,而这个喜欢,一定要是发自内心的。你如果喜欢,你会愿意吃苦,你不喜欢,你肯定就不干。
不过假如说我现在是一个年轻人,可能本来对计算机也没什么兴趣,但我找不到工作,为了工作必须得学会计算机,我觉得也能学会。因为他有很强的目标,就是为了找工作,在被迫谋生的情况下,就必须要去学会一个技能。
如果要说在“转码”上比较有障碍的人,可能是一些逻辑性不太强,或者数学比较差的,这些人在“转码”过程中可能会稍微难一点。
蒋涛:
基本上我觉得都能转,甚至小学生都可以。
我们办了一个培训公司叫传智教育,在 A 股上市,培训一年大概六七万,我们培养过厨师,还培养过程序员。
找不到工作,去我们那 4 个月就帮你找到工作,有 95% 的成功率。
所以一个人只要真的下了决心,计算机入门实际上是不难的,这个门槛很低。用我们的经验来说 4 个月就可以“转码”,搞不定的可能逻辑差一点,也可以做测试,因此目前国内有大量的初级选手。不过对各行各业来说,越往上走,对系统级的、深入的、本质性的思维要求就越高越难,而目前我们这类的系统级选手还不够。
卢凯:作为大学老师,我特别鼓励跨学科交叉融合,但是成功与否,根据我的经验,在计算机领域里分成两类:
第一类是做计算机系统的人,我不太鼓励他从别的学科过来,因为做计算机系统,要从硬件到操作系统到编译到高层,要有一个完备的知识体系才能做好,时间和经验会成为很重要的因素。
但如果是做应用,我们恰恰希望他是从别的方向过来的,因为学计算机的可能没有相关领域知识。比方说,现在我们在做并行计算应用,我招的人都不是学计算机的,有搞物理的、化学的,这些人不仅好招,给他几个月时间培训基本知识,后面靠他自己去锻炼和优化并行编程能力,他就会走得很好。同理,如果要做有关大气流动的应用,学数学的人就懂数值算法,能建模,能够进行数据分析。
所以,我很希望这些人能到往计算机领域发展,经过时间和经验的打磨,他们就会成为很好的复合型人才。
解伟俊:站在企业的角度看这个问题,我发现一个现象:我们企业里很多做编程的员工,他们以前都不是学计算机的,学什么都有,还有一些没听说过的专业——这说明相对来说,编程入门是不问出处的,门槛也并不高。
但是如果想要做得好,其中差别就很大了。我看过很多优秀员工包括社区里一些高手的学历,他们不是清华也不是北大,不是来自什么名牌大学,有些只是大专生——那他们的共性是什么呢?这些人特别热爱并专注于编程这件事,他们可以为此不吃饭,尽可能推掉一些不必要的活动。
计算机行业本身跟别的行业是一样的,只要热爱并专注于这个行业,他可能就会发展得很好,跟来源或者学什么,其实关系不太大。
傅盛:这东西就像你学写字或想学会一项技能一样,我觉得只要愿意,绝大部分人应该是没有什么问题的。我曾在 360 招了一个人,他什么学历也没有,就在网上发帖子,但我觉得他写得很好。当时他在南方的小工厂里给人家写驱动,来了 360 以后现学 C++,后来成了 360 的首席安全官。我们猎豹这边也有一个,她是女生,大学学的是园艺,现在技术也很强。
因此,我认为在“转码”方面有三点需要明确:
第一,计算机没什么神秘的,只要通过学习,每个人都能入门。
第二,编程也在不断进化,如今它已经成为一个分了很多层级的事情。如果你上来就要做个操作系统,估计难度还是挺大的,但如果要写一个应用应该还好,尤其现在编程工具越来越简易化,很多都能简单上手。
第三,由于计算机不断成为基础学科,我觉得把它用在哪、怎么去用它也很关键。这可能更考验你对这个行业的了解,而不是考验你对系统深度,或者你的数学能力——其实你真正学会编程,是不需要什么数学基础的,更多的还是在应用层面。
我一直认为,那种深度天才型的人才,大部分人是可望而不可及的,包括我在内,但很多人能成为和应用深度结合的人才。每个人都会有自己的兴趣点,这个兴趣点和编程结合起来,可能就是个非常好的方向和机会。
周明:我完全同意刚才几位老师的发言,我想补充一点,这个程序简单学一学,从 0~1 相对来讲不那么难,但是学好了真的是有点难——首先要自驱性强,其次是要兴趣驱动,要真的有兴趣才行。
我举个例子,之前在微软的时候,总部裁员把一些语言学家裁掉了,他们主要是做机器翻译写规则,不会编程。微软比较仁慈,说给你三个月时间,你自己找工作,要是有地方要你,留下也没问题。其中一个语言学家我认识,他就在三个月内学会了 C 语言,还通过了 SQL Server 的面试。
不过后来,因为他对编程真的不是特别有兴趣,干了半年后便回归初心,去一所中学教英语去了。
如何吸引更多的年轻人投入到编程圈?
刘韧:最后,也是一直困扰我的一个问题。我的第一个孩子如今年龄挺大的了,在很早之前我便找人教过他计算机,然而他就不愿意学,原因是他觉得 Debug 太折磨人、太无趣了。当下我的第二个孩子也面临这样的情况,以这个事情为例,我们该如何吸引孩子以及更多的年轻人参与到编程中?
鲍岳桥:如果你是逼着他去学,就教一些比较枯燥的东西,时间一长,孩子肯定存有逆反心理。正如大家所说的,你要成为一个高手,内心必然非常喜爱这件事情。
以我个人经历为例,我原先对计算机一点兴趣也没有,天天下围棋。在大学的某一天,我们老师布置了一道算法题,但那个算法是错误的,起初我们不知道,班里所有人的程序都运行不出结果。我与另外一个同学百思不得其解:为什么这个程序会跑不出来?最终在仔细研究之后,我们发现老师提供的随机函数是错的,便自己写了一个随机函数,于是程序就跑通了,这个成就感太强了。
后来,包括我开始自学各种语言的时候,我都是先拿出一些小的、实实在在的作品出来,在微信上分享得到别人的打赏、点赞时,我会觉得别人对我有很强的认可,感觉只要我再努力一下,就能做一个更牛的东西。
因此,一定要让孩子或者更多的年轻人通过辛苦努力,最终得到结果以及大家的认可,这个过程很重要。
蒋涛:我认为编程本身并不难,但是现在孩子的问题是,没有感受到编程的乐趣与成就感,没有一些激励。如果他对钱或者其他一些东西感兴趣,作为父母,需要观察如何帮助孩子获得正反馈。
我认识一个小孩,初中没读完就出来混社会了。他去应聘工作都没人找他,他就只能自学。英语他也不会,一个字母一个字母生磕出来,但是他会赚钱,还赚了很多钱,他 20 多岁时收入就大几千万,就是靠写程序赚到的。他曾经跟我说,赚钱就是计算思维,如果想赚钱他就能找到方法,再大的苦他也愿意吃——这就是钱的激励,其实还有成就感这类的激励。
卢凯:我观察过 60 后、70 后、80 后、90 后、00 后人的特点,以及我们社会进步发展的大趋势。如果我是你,我就不会劝孩子一定要学编程,他喜欢什么就去做什么。因为我们的未来是越来越多样化的,当我们不再以学习作为谋生的唯一工具时,为什么不让孩子自己做选择?
我也有一个 16 岁的女儿,我现在的观点就是想学什么就学,如果吃了苦自己得认,得了益自己享受。他们的机会很多,不要因为一次选择就永远地决定未来。
解伟俊:如果我给建议,一定要把「我要他学」变成「他要自己学」,这个是一个观念的转变。作为家长肯定要思考,他为什么不愿意学,对这个年纪的孩子而言,我有两点建议:第一,要树立一个榜样;第二,要有正向的激励。
我们之所以能走到今天,是因为过去一步一步的成功。只要让孩子看到一个小成功,不断激励他的自信心,让他变得愿意做这件事,可能慢慢就能解决这个问题。
傅盛:我女儿的状况也是这样,我给她下了“编程猫”,想要天天让她学,但是她就是不愿意。我认为主要有两点因素:
第一,我们的计算机教学结构还有待改进。我上大学时就非常有感触,不太明白为什么要先学计算机文化基础,如二进制、八进制、十六进制、换算等内容。我认为应该“以终为始”,先从一个兴趣目标开始,用一些简化的方式让他去学习上手,不要一下就学很多科班的东西,Python 我都觉得太复杂了。
第二,不用太急,给孩子给一些时间,我觉得编程到 20 岁学也来得及,平时多跟他们讲讲编程的好处,慢慢培养出兴趣后他们就会接受这件事。像我女儿最近就开始有点兴趣了,因为她班上有个男神,程序写得特别好,我就说你去弄一弄最简单的编程,别搞得跟人家没共同语言。她最近关注的一个国外网红玩《我的世界》很厉害,在苹果上班,我也跟她说你看人家程序写得多好。
另外,其实我还有一个建议,我觉得孩子是可以适当玩一些游戏的,尤其一些沙盒类游戏。实际上,你看最近 Roblox 和《我的世界》这些游戏,它其实就是一种类似编程的思维。程序不一定就是一行行代码,我们可以这么理解:它就是一个模块,你把它拼接起来,能够运转,那它就是一种程序。
周明:我觉得首先要找自己的原因。现在我们跟孩子实际上是隔代了,思维习惯和认知程度都不一样,好多新的事情我们不了解,这时候如果拿过去的思维去教育孩子,他们肯定是不服的。
我有一个北大计算机的教授朋友,他女儿因为在法国待过就想学品酒师。他跟我说他是没招了,问我有没有办法让他女儿学计算机?我就说,让你女儿到微软来玩玩。
他女儿来了之后,我给她展示了一个微软对联生成器,出上联对下联。她觉得这东西挺神奇,问我这玩意咋对的,我就跟她说:这简直太简单了,随便编两行程序就搞定了。她回家后就跟他爸说要学计算机,他爸问她为什么,她说,「周叔叔跟我讲计算机太简单了,编两行程序对联都能给对出来」。后来,她就去澳洲学计算机了。
这是一个正例,还有一个反例——我女儿。因为我学计算机,我就希望她也能学,这样我还能教她。但我女儿拒绝,她说,「凡是你学的东西,我都不学,你学计算机我就坚决不学计算机,你搞自然语言我就坚决不碰这个事儿」。
于是她就自己玩音乐之类的,不管我怎么威逼利诱,都一点用没有。后来我认输了,跟她说你愿意学啥就学啥,反而我为了跟她套近乎,我自己还去学了点音乐。虽然学得很差,但主要是想跟她有点共同语言,这样她也愿意跟我说话。那时候我跟她说,现在音乐也不是纯粹人工音乐,其实用神经网络做音乐也挺有意思的,顺便又介绍了几个相关网站给她。
后来,她到国外去学音乐制作,就觉得将来要是拼个人音乐才华,可能拼不过别人,要是再加点神经网络,说不定还能搞出点新奇玩意儿——结果,她绕了一圈,又回到她老爸多少有点长处的地方了。
这个故事告诉我们,对于小孩,你并不是一定要一次性地、必须让他现在就学什么,你可以先了解他,接近他,帮助他,让他觉得你是为他好,将来有一天,他可能会回到你所希望的某些地方。即使没有,通过这个过程你实际上对孩子也有更多的了解,这也是一件非常好的事情。没有必要去强求孩子做你喜欢的事情,应该去鼓励他做喜欢的事情。