不干编程就卖咸菜、学中医?起点各异的编程之路,热爱+专注是“开挂”的关键
责编 | 郑丽媛
纵观古今,人类的每一次进步,必伴随着科学技术的重大创新突破,而所谓“创新之道,唯在得人”,欲成为世界科技强国,关键在于人才。
目前,我国正处于科技发展的重要阶段,想要实现质的飞跃离不开优秀人才的推动——提升开发者数量,赋能程序员更多技术创新力,成为各行各业的发展重点之一。那么,面对新技术时代,我们要如何培育和造就一流科技创新人才?又该如何吸引更多年轻血液加入科技领域,实现人才量变与质变同步升级?
在 2022 长沙·中国 1024 程序员节的岳麓对话暨 2022 技术英雄百人会上,CSDN 特邀猎豹移动董事长兼 CEO 傅盛,澜舟科技创始人、创新工场首席科学家周明,中国第一代程序员、UCDOS 发明人、联众创始人鲍岳桥,CSDN 创始人 & 董事长、极客帮创投创始合伙人蒋涛,国防科技大学计算机学院院长、研究员、博士生导师卢凯和拓维信息副总裁、开鸿智谷总裁解伟俊共聚一堂,在 DoNews 创始人刘韧的主持下,围绕计算机思维的本质、“转码”需求等话题,共话现代技术人才的培养之道。
如果不从事计算机行业,会干什么?
工程师的整个闭环来自于眼前的电脑。譬如代码写得好不好,电脑就能给出验证并测试,总体而言是一个短闭环,可以精准把控到每一个点上。 产品经理则是一个长闭环,从项目立项到发布,再到用户反馈,整体是一个很长的过程。
第一,要有项目思维,就是要有输入,也要有明确的输出; 第二,讲究时间,不能是无无休止的,要在规定时间完成规定的内容; 第三,追求效率,要高效地完成一些工作。
转码,需要具备什么样的条件?
所以一个人只要真的下了决心,计算机入门实际上是不难的,这个门槛很低。用我们的经验来说 4 个月就可以“转码”,搞不定的可能逻辑差一点,也可以做测试,因此目前国内有大量的初级选手。不过对各行各业来说,越往上走,对系统级的、深入的、本质性的思维要求就越高越难,而目前我们这类的系统级选手还不够。
卢凯:作为大学老师,我特别鼓励跨学科交叉融合,但是成功与否,根据我的经验,在计算机领域里分成两类:
第一类是做计算机系统的人,我不太鼓励他从别的学科过来,因为做计算机系统,要从硬件到操作系统到编译到高层,要有一个完备的知识体系才能做好,时间和经验会成为很重要的因素。
但如果是做应用,我们恰恰希望他是从别的方向过来的,因为学计算机的可能没有相关领域知识。比方说,现在我们在做并行计算应用,我招的人都不是学计算机的,有搞物理的、化学的,这些人不仅好招,给他几个月时间培训基本知识,后面靠他自己去锻炼和优化并行编程能力,他就会走得很好。同理,如果要做有关大气流动的应用,学数学的人就懂数值算法,能建模,能够进行数据分析。
所以,我很希望这些人能到往计算机领域发展,经过时间和经验的打磨,他们就会成为很好的复合型人才。
解伟俊:站在企业的角度看这个问题,我发现一个现象:我们企业里很多做编程的员工,他们以前都不是学计算机的,学什么都有,还有一些没听说过的专业——这说明相对来说,编程入门是不问出处的,门槛也并不高。
但是如果想要做得好,其中差别就很大了。我看过很多优秀员工包括社区里一些高手的学历,他们不是清华也不是北大,不是来自什么名牌大学,有些只是大专生——那他们的共性是什么呢?这些人特别热爱并专注于编程这件事,他们可以为此不吃饭,尽可能推掉一些不必要的活动。
计算机行业本身跟别的行业是一样的,只要热爱并专注于这个行业,他可能就会发展得很好,跟来源或者学什么,其实关系不太大。
傅盛:这东西就像你学写字或想学会一项技能一样,我觉得只要愿意,绝大部分人应该是没有什么问题的。我曾在 360 招了一个人,他什么学历也没有,就在网上发帖子,但我觉得他写得很好。当时他在南方的小工厂里给人家写驱动,来了 360 以后现学 C++,后来成了 360 的首席安全官。我们猎豹这边也有一个,她是女生,大学学的是园艺,现在技术也很强。
因此,我认为在“转码”方面有三点需要明确:
第一,计算机没什么神秘的,只要通过学习,每个人都能入门。
第二,编程也在不断进化,如今它已经成为一个分了很多层级的事情。如果你上来就要做个操作系统,估计难度还是挺大的,但如果要写一个应用应该还好,尤其现在编程工具越来越简易化,很多都能简单上手。
第三,由于计算机不断成为基础学科,我觉得把它用在哪、怎么去用它也很关键。这可能更考验你对这个行业的了解,而不是考验你对系统深度,或者你的数学能力——其实你真正学会编程,是不需要什么数学基础的,更多的还是在应用层面。
我一直认为,那种深度天才型的人才,大部分人是可望而不可及的,包括我在内,但很多人能成为和应用深度结合的人才。每个人都会有自己的兴趣点,这个兴趣点和编程结合起来,可能就是个非常好的方向和机会。
周明:我完全同意刚才几位老师的发言,我想补充一点,这个程序简单学一学,从 0~1 相对来讲不那么难,但是学好了真的是有点难——首先要自驱性强,其次是要兴趣驱动,要真的有兴趣才行。
我举个例子,之前在微软的时候,总部裁员把一些语言学家裁掉了,他们主要是做机器翻译写规则,不会编程。微软比较仁慈,说给你三个月时间,你自己找工作,要是有地方要你,留下也没问题。其中一个语言学家我认识,他就在三个月内学会了 C 语言,还通过了 SQL Server 的面试。
不过后来,因为他对编程真的不是特别有兴趣,干了半年后便回归初心,去一所中学教英语去了。
如何吸引更多的年轻人投入到编程圈?
刘韧:最后,也是一直困扰我的一个问题。我的第一个孩子如今年龄挺大的了,在很早之前我便找人教过他计算机,然而他就不愿意学,原因是他觉得 Debug 太折磨人、太无趣了。当下我的第二个孩子也面临这样的情况,以这个事情为例,我们该如何吸引孩子以及更多的年轻人参与到编程中?
鲍岳桥:如果你是逼着他去学,就教一些比较枯燥的东西,时间一长,孩子肯定存有逆反心理。正如大家所说的,你要成为一个高手,内心必然非常喜爱这件事情。
以我个人经历为例,我原先对计算机一点兴趣也没有,天天下围棋。在大学的某一天,我们老师布置了一道算法题,但那个算法是错误的,起初我们不知道,班里所有人的程序都运行不出结果。我与另外一个同学百思不得其解:为什么这个程序会跑不出来?最终在仔细研究之后,我们发现老师提供的随机函数是错的,便自己写了一个随机函数,于是程序就跑通了,这个成就感太强了。
后来,包括我开始自学各种语言的时候,我都是先拿出一些小的、实实在在的作品出来,在微信上分享得到别人的打赏、点赞时,我会觉得别人对我有很强的认可,感觉只要我再努力一下,就能做一个更牛的东西。
因此,一定要让孩子或者更多的年轻人通过辛苦努力,最终得到结果以及大家的认可,这个过程很重要。
蒋涛:我认为编程本身并不难,但是现在孩子的问题是,没有感受到编程的乐趣与成就感,没有一些激励。如果他对钱或者其他一些东西感兴趣,作为父母,需要观察如何帮助孩子获得正反馈。
我认识一个小孩,初中没读完就出来混社会了。他去应聘工作都没人找他,他就只能自学。英语他也不会,一个字母一个字母生磕出来,但是他会赚钱,还赚了很多钱,他 20 多岁时收入就大几千万,就是靠写程序赚到的。他曾经跟我说,赚钱就是计算思维,如果想赚钱他就能找到方法,再大的苦他也愿意吃——这就是钱的激励,其实还有成就感这类的激励。
卢凯:我观察过 60 后、70 后、80 后、90 后、00 后人的特点,以及我们社会进步发展的大趋势。如果我是你,我就不会劝孩子一定要学编程,他喜欢什么就去做什么。因为我们的未来是越来越多样化的,当我们不再以学习作为谋生的唯一工具时,为什么不让孩子自己做选择?
我也有一个 16 岁的女儿,我现在的观点就是想学什么就学,如果吃了苦自己得认,得了益自己享受。他们的机会很多,不要因为一次选择就永远地决定未来。
解伟俊:如果我给建议,一定要把「我要他学」变成「他要自己学」,这个是一个观念的转变。作为家长肯定要思考,他为什么不愿意学,对这个年纪的孩子而言,我有两点建议:第一,要树立一个榜样;第二,要有正向的激励。
我们之所以能走到今天,是因为过去一步一步的成功。只要让孩子看到一个小成功,不断激励他的自信心,让他变得愿意做这件事,可能慢慢就能解决这个问题。
傅盛:我女儿的状况也是这样,我给她下了“编程猫”,想要天天让她学,但是她就是不愿意。我认为主要有两点因素:
第一,我们的计算机教学结构还有待改进。我上大学时就非常有感触,不太明白为什么要先学计算机文化基础,如二进制、八进制、十六进制、换算等内容。我认为应该“以终为始”,先从一个兴趣目标开始,用一些简化的方式让他去学习上手,不要一下就学很多科班的东西,Python 我都觉得太复杂了。
第二,不用太急,给孩子给一些时间,我觉得编程到 20 岁学也来得及,平时多跟他们讲讲编程的好处,慢慢培养出兴趣后他们就会接受这件事。像我女儿最近就开始有点兴趣了,因为她班上有个男神,程序写得特别好,我就说你去弄一弄最简单的编程,别搞得跟人家没共同语言。她最近关注的一个国外网红玩《我的世界》很厉害,在苹果上班,我也跟她说你看人家程序写得多好。
另外,其实我还有一个建议,我觉得孩子是可以适当玩一些游戏的,尤其一些沙盒类游戏。实际上,你看最近 Roblox 和《我的世界》这些游戏,它其实就是一种类似编程的思维。程序不一定就是一行行代码,我们可以这么理解:它就是一个模块,你把它拼接起来,能够运转,那它就是一种程序。
周明:我觉得首先要找自己的原因。现在我们跟孩子实际上是隔代了,思维习惯和认知程度都不一样,好多新的事情我们不了解,这时候如果拿过去的思维去教育孩子,他们肯定是不服的。
我有一个北大计算机的教授朋友,他女儿因为在法国待过就想学品酒师。他跟我说他是没招了,问我有没有办法让他女儿学计算机?我就说,让你女儿到微软来玩玩。
他女儿来了之后,我给她展示了一个微软对联生成器,出上联对下联。她觉得这东西挺神奇,问我这玩意咋对的,我就跟她说:这简直太简单了,随便编两行程序就搞定了。她回家后就跟他爸说要学计算机,他爸问她为什么,她说,「周叔叔跟我讲计算机太简单了,编两行程序对联都能给对出来」。后来,她就去澳洲学计算机了。
这是一个正例,还有一个反例——我女儿。因为我学计算机,我就希望她也能学,这样我还能教她。但我女儿拒绝,她说,「凡是你学的东西,我都不学,你学计算机我就坚决不学计算机,你搞自然语言我就坚决不碰这个事儿」。
于是她就自己玩音乐之类的,不管我怎么威逼利诱,都一点用没有。后来我认输了,跟她说你愿意学啥就学啥,反而我为了跟她套近乎,我自己还去学了点音乐。虽然学得很差,但主要是想跟她有点共同语言,这样她也愿意跟我说话。那时候我跟她说,现在音乐也不是纯粹人工音乐,其实用神经网络做音乐也挺有意思的,顺便又介绍了几个相关网站给她。
后来,她到国外去学音乐制作,就觉得将来要是拼个人音乐才华,可能拼不过别人,要是再加点神经网络,说不定还能搞出点新奇玩意儿——结果,她绕了一圈,又回到她老爸多少有点长处的地方了。
这个故事告诉我们,对于小孩,你并不是一定要一次性地、必须让他现在就学什么,你可以先了解他,接近他,帮助他,让他觉得你是为他好,将来有一天,他可能会回到你所希望的某些地方。即使没有,通过这个过程你实际上对孩子也有更多的了解,这也是一件非常好的事情。没有必要去强求孩子做你喜欢的事情,应该去鼓励他做喜欢的事情。