查看原文
其他

倪光南、求伯君“出山”:爱解 Bug、无惧“35岁魔咒”、编码之路痛并快乐!

CSDN App CSDN 2020-12-18

作者 | 郑丽媛
责编 | 屠敏
出品 | CSDN(ID:CSDNnews)

互联网是有记忆的。

从混沌初开到万物互联程序英雄平台诸」,中国计算机到互联网的发展历经 60 个春秋,整个商业社会的形态已被重置,生态格局已然形成。

忆往昔,过去 60 年间,也是这份创新缔造者、中国程序员快意恩仇的江湖时代,他们以代码为剑,热血如沸,不同时代的技术人共同为中国计算机产业而奋斗,成就了如今中国互联网。

而在这高手如林的互联网之中,诞生了无数程序员,正如:

  • 他,耕耘中国计算机产业 60 载,参与研制中国自行设计的第一台电子管计算机(119 机),20 世纪六、七十年代开展汉字处理和字符识别研究,首创在汉字输入中应用联想功能。他就是中国工程院院士——倪光南。

  • 他,虽已退出江湖,但在江湖上一直有着他的传说,他是有着“中国第一程序员”之称的求伯君,也是金山软件创始人、WPS 创始人。

  • 他,华为消费者BG(CBG,Consumer Business Group)软件部总裁王成录,负责 CBG 软件的战略、规划、研发、集成交付和生命周期管理。

  • 他,美国佐治亚理工学院博士毕业后在谷歌内核组工作,主要创立和领导了 gVisor 项目。目前任蚂蚁集团研究员,可信原生技术部负责人的何征宇

  • 他,SequoiaDB 巨杉数据库联合创始人王涛,曾任职于北美 IBM DB2 Lab,作为核心研发成员参与负责 DB2 核心引擎研发,及世界第一款分布式数据库 DB2 DPF 的研发。2011 年回国创业,自主研发金融级分布式数据库 SequoiaDB,获得技术业界及金融客户广泛认可。

  • 他,是 2015 年毕业于清华大学电子工程系,之后与清华大学电子工程系汪玉教授、MIT EECS 韩松教授联合创立深鉴科技并担任公司 CEO 的姚颂 ,带领团队研发高效深度学习平台,致力于为自动驾驶、智能安防、云计算等行业提供软件与芯片一体的人工智能解决方案。深鉴科技在创立两年半的时间里,曾获得来自清华控股、金沙江创投、高榕资本、赛灵思、联发科、蚂蚁金服、三星等企业与机构的三轮投资,并最终被赛灵思以数亿美金的价格收购。

  • 他,00 后新生代的程序员代表朱震霆,生于 2001 年,初一学习 C++。清华姚班大二在读,清华大学 2019 年第一封录取通知书获得者,2018 年代表中国国家队参加第 30 届国际信息学奥林匹克竞赛(IOI)并斩获金牌。

  • 25 年软件开发经验,曾领导开发了巨人手写电脑、金山词霸和超级霸。1999 年创办 CSDN,为中国 IT 从业人员提供知识传播、在线学习、职业发展等全职业生命周期服务,致力于成为技术人学习和成长的家园。 他是 CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛

不久前,他们共同聚首长沙·中国 1024 程序员节现场,从 30 年代跨越到 00 年代,以经验为基础分享不同时代下的程序人生,看中国互联网的发展变迁,解答当代程序员之惑。接下来,我们将一探属于他们的技术时代,借此,也希望为更多的同行者带来一定思考。



不同的程序人生,朴实无华,痛并快乐!


蒋涛(主持人):回顾过往,在大家技术生涯中最快乐的时刻是什么?

倪光南(30后):最快乐是调机成功的时候。当时第一代电脑是由几千根电子管组成的。按概率,每天都要坏一两根电子管,因此调机是件很困难的事。

我并非程序员出身,而是从硬件做起。彼时,我从中科院分配到计算研究所时,所里已经制造了一台 104 机(我国第一台大型快速通用数字电子计算机),随后我参与了 119 机(首台自行设计的电子管计算机)的研发。

当时我们没有指令,没有语言,119 机使用的是八进制,要发三条指令才能把一个区域调到内存,与其说是程序员,调机工作人员更为恰当。

到第三代计算机的时候,出现了汇编语言,但汇编语言写起来比较困难。后来我去加拿大工作时,接触到了 C 语言,回国后,便让所有的软件工程师都用 C 语言,包括后来的汉字系统、程控交换机和打印机等,使用 C 语言编写效率至少提高了十倍。

所以从程序员开始,我便认为 C 语言是最好的语言,使用 C 语言才是一名够格的程序员。

求伯君(60后):我们那个时代编程工具只有汇编,后来慢慢有了很多语言,但那时资料和工具都不齐全,互联网也不够发达,为了买开发工具或者查阅资料都得去中关村,因此我早期写程序都是用汇编。

当时第一版的 WPS 写了有上百万条程序,因为高级语言里调用的函数,在汇编里实现需要一百多条代码,每个功能要全部一条条去写,因此工作量很大。我当时很佩服一个同事,他是用 DeBug 写代码的,调试好了,再存入执行代码。

那个年代写程序真的很难,但同时也很快乐。那时为了解决 Bug 功能,我们写程序都没有日夜概念,就把自己关一个房间里,饿了就吃方便面,困了就睡,经常带着问题入睡。有一次在梦中想到了解决方案,醒来就特别兴奋地去实践,结果真的成功了。这段做梦实现的代码我记得是为了解决汉字输入法的一个中断问题。

当时写应用程序与操作系统是分不开的,经常要调用硬件部分,包括硬盘分配、存储、输出等等。现在回忆起那段时光,还是非常快乐的。

还有一个快乐我很少讲。因为起初我写 WPS 纯属兴趣,没有想过用它创业或者赚钱,所以我当年到中关村,看到一夜之间很多人在用盗版 WPS,我那时也没有版权概念,看到很多人用,我就非常高兴。当时雷军就破解了其中一个版本,我也因此与他结识。

王成录(70后):我是 1998 年博士毕业,我的博士课题是用 Fortran 语言实现金属成形过程模拟仿真,写了三万多行代码。期间有一度十分崩溃,因为编译一直不通过,调整了近 9 天时间,未果。后来,在某一天的某个时刻,我就看了看实验室窗外的树,突然灵机一动,代码调通了,之后课题也就很快地完成了。这种快乐的感觉我至今都记忆犹新。

之后到了华为,开始做无线程控交换机。当时进入无线产品线的时候,我们只有三四十个人,那时做出来的产品容量已经无法满足市场了。因此我们开始做 iPaas 模块,完全用 C 语言来写。当时我们在一个周末就写了三万多行代码,当然有很多 Bug。

彼时的经历对我的成长有非常大的助力,让我快速全面地理解了整个电信网的系统。虽然我已经有十多年没做具体的研发工作了,但是曾经读书时和工作以后的记忆尤为深刻,看到代码有时还是心痒,会帮别人解释,这就很有意义。

何征宇(80后):我的快乐与各位一样,但也不一样。

各位前辈上述分享的解 Bug 的快乐我特别有感受,我在谷歌和蚂蚁集团都有解 Bug,这种快乐应该是程序员共有的。

不一样的是,作为长沙本地人,当问及最快乐的时刻,我想到的是离长沙岳麓书院不远处的青少年宫,在我四年级的时候,我妈送我去那里学计算机。彼时,我学其他的兴趣班都很抗拒,但唯独这个是我主动学的,有一种打开新大门的快乐。

这种快乐也存在于我读博士时由算法转到内核的时候,那种因为接触到了新领域而感到的快乐。

王  涛(80后):我之前在 IBM 做 DB2,即管理型数据库。后来我开始做巨杉数据库,是一种分布式数据库。

自从接触整个计算机,我的快乐主要是来自两点:

  • 创造。我之前在学校学习的是游戏设计,有时设计出来的成果被同学或者老师认可,就很兴奋。

  • 解决别人无法解决的问题。在 IBM 时,有一次在 DB2 写一段程序始终不能顺利运行,最后我发现汇编语言与 C 语言的语义存在区别,导致优化器优化过后存在 Bug。那时,我特别喜欢 C 语言,因为它与 CPO 指定的汇编是最接近的,出现问题时可以快速定位。

姚  颂(90后):调试程序我其实并不是很专业,我最开始的接触计算机是小学三年级的培训班。那时候我最快乐的是课前二十分钟,可以玩一些 4399 之类的小游戏。后来到了清华电子系开始真正学编程,我在很多领域都有涉及,包括 EDA、深度学习、根据芯片网表检查硬件木马,还在斯坦福做了三个月的访问研究。

当你专注在技术时,你的快乐就会变得很简单。你需要面对的只是一个问题,而你去想方设法的解决,解决了你就会感到很单纯的快乐。

朱震霆(00后):我很直观的感受是,我们这个时代学习编程的门槛降得更低了。在我小学时,一个班十几个人都会去学习编程。我一开始学习的是专为儿童设计的一种编程语言,比较富有趣味性。

后来初一时,我为了参加关于算法的学科竞赛去接触了 C++,学习了算法。

我的快乐与各位前辈也基本一致,就是享受自己解决问题的过程。还有因为现在学习编程的人很多,因此可以与学习相关方面的同学共同讨论,促进学习,这个过程对我来说也是非常开心的。

蒋涛(主持人):身为程序员,遇到过哪些难熬时刻?

求伯君(60后):做程序员很痛苦,做公司更痛苦。中国流传着“痛并快乐着”这句话,意味着快乐与痛苦是相辅相成的,如果你没有快乐,那肯定就没有痛苦。

我的痛苦就是创业过程中遇到的很多困难。虽然我现在可以坦然地说,我当时看到有人用盗版 WPS 都很开心,但这确确实实影响了我的发展。在 1992-1993 年,那时候我连员工的工资都发不起。如果我只是打工的,那没关系,可我当时招了许多人,那时遇到的困难已经超出了我的能力范围。

后来我把雷军这些人招进来去管理事务之后,我发现我解脱了。所以我认为,让程序员去干非程序员干的事情是非常痛苦的事情。

王成录(70后):我最大的痛苦是不被人理解。因为做软件或编代码,别人是看不见摸不着的,因此沟通时就很容易不在同一层面或同一语言。

我认为做软件,跟随别人做是没有太大必要的,因为软件是需要往前走的。但这样,困难就又叠加了一层:你越往前看,别人就越不理解。我做软件,需要跟相关部门合作,要与公司申请投资,要交付给客户,都需要大家的理解。所以这是我一直遇到的最大挑战,这个问题我相信也会一直存在吧。

何征宇(80后):确实,很多时候痛快和快乐并存的。我有一次印象很深刻:我们第一次大规模上线的时候,出了非常大的 Bug,面临着软件发不出去的情况,那个时候真的异常痛苦。但同时,快乐也是在之后收获的。所以我认为,你有多大的痛苦,后面就有多大的收获。

王  涛(80后):我觉得很多技术人难题都是相通的,而我的痛苦是从纯技术向带团队的转型期遇到的很多问题。

一开始很多事我们都是自己一个人面对,那时候只需要一台机器就很容易解决。不过,后面需要更多人参与,需要发挥团队能力时,就要面对很多问题了。这是我近十年来最大的感受,因为这是很多程序员必备的转身,只要能走过去,就能发挥自己更多的力量。

姚  颂(90后):首先,找方向是最痛苦的事情之一。程序员的快乐很单纯,因为目标是既定的,解决难题就好了。但找方向,类似公司要转型,下步做什么?AI 芯片之后又能做什么?这些都是我一直在思考的问题。

第二个痛苦与前面两位有些类似。我们开始都是做技术出身,在转为管理的过程中有很多事情是非常痛苦的。我原本不太喜欢做思想工作和谈心之类的,因此这就很挣扎。另外,我们自己的工作能力很强,一件事可能轻松就能做到 90 分,但你手下只能做到 70 分,这就需要你花两倍时间去培养。我原来是急性子,但做公司使我变得很有耐心。

其实,如果你迎上了这些困难,去做到了自己原本做不到的事,那对你永远都有好处。因此我也一直逼自己做一些不擅长的事,走过来了,就好了。

朱震霆(00后):我在姚班挺痛苦的,因为大家都很厉害。但我现在感受到的最大痛苦还是从一个竞赛选手,转变成做某一个方向的技术人员。我本来是习惯拿到一个题目去解决,但现在这个方向需要我自己去发掘。


如何在千万程序员群体中脱颖而出?


蒋涛(主持人):做软件需要协同,如何带领团队一起成长,而什么样的人才才是我们需要的?

倪光南(30后):我认为人想要成功,需要具备两点:

  1. 要敢于突破和创新。软件工作者,有时候是有能力去完成一件事但却失败了,这可能不是你的程序有问题,而是应用变化了。

  2. 要坚持。你得有思想准备,坚持下去才能成功。有些时候关于计算机的事情很难,但我们努力去做,还是能够做成。

求伯君(60后):我做软件企业比较早,现在很多大公司的人以前都在我的公司工作过。如现在的腾讯、阿里也有从我们公司出去的人,这个也算是我们的贡献。

在创办企业之初,我是一个人写程序,发现事情做不完了再开始加人,后来就慢慢建立了团队,我是属于被驱动的。招人的时候,我是先找一个同样是写程序的,后来发现企业全部都是程序员,那时候才意识到,一个企业需要各种不同的人才,招人的时候才开始有其他的方向。

王成录(70后):我个人认为人才的两个能力非常重要:

  1. 逻辑能力。如果逻辑抽象不清晰,就无法从众多选择中抓住主要的点。

  2. 学习能力。因为软件发展很快,学习能力不足的话很快就会被市场淘汰。华为在人才上的淘汰率也不低,12% 左右。

关于带领队伍,我觉得非常简单,就是带着大家不断打胜仗,只要不断打胜仗,很多事情自然就有拥有了。

何征宇(80后):我认为优秀的人才,有三点很重要:

  1. 自驱力。你为了什么去做一件事?图的是什么?正如求伯君老师所说,他是真的想把一件事做好。因此我认为驱动力很重要,拥有良好的驱动力能成事。

  2. 责任感。在能成事之际也要负起所做之带来的一些后果。我们今天写的软件,到了明天或成为一种负担因为软件更迭,或被删除,或被取代。

  3. 团队精神。现在的大型软件是需要很多人协作的,一个团队、一个公司,甚至是与世界各地的程序员共同完成,因此我认为优秀的人才需要具备这种与人共事的心态。

王  涛(80后):我们做团队是从两个方面培养:

  1. 技术能力。技术就是写代码的能力,错误率、架构质量之类的指标。

  2. 团队文化。这一部分对程序员可能比较有挑战性,关于是否能以客户为中心,自我驱动力如何,以及团队沟通能力,需要具有团队精神。

姚  颂(90后):在个人能力方面,我非常同意之前王博(王成录)提出的学习能力和逻辑抽象能力。一个人做事情是出于什么目的,是出于热爱想把事情做成功还是想赚钱,这些都能感受到,而对于前者我们就会给他多分利益。

我们已经被收购两年了(2018 年赛灵思收购深鉴科技),期间 130 多个人走了六七个人。被收购前,公司大部分员工都是以公司为荣,很少抱怨物质方面,而被收购后,理想和精神层面的驱动力减少,更多转变为了物质驱动力,因此会有很大不同。举一个例子,当时刚被赛灵思收购时,我问 HR 以后周六上班吗?因为那时这变成了一份工作而不是创业。

我至今还留在赛灵思除了物质方面,还因为两个方面的责任感:

一、赛灵思拥有 30 多年的历史,而这起并购是 2012 年到目前为止,唯一一家美国公司到中国来收购的高科技公司。在收购以后,赛灵思对我们很认可,也付出很多。因此我们要负责到底,不能还未交付足够的价值就离开。

二、要对我的员工负责,我留下来可以照顾他们,让他们安心。

注:截止发文,AMD 以 350 亿美元宣布收购赛灵思

朱震霆(00后):在信奥赛比赛时,我们需要三个人协作,彼时我们队友之间需要通过看纸质代码 DeBug;或者有人上机时,其他队友就去解决别的题目或者从旁观察,防止上机的人写出 Bug。因此这是一个很在乎分工合作的过程。

我上大学之前,也有一个团队。这个团队给我的最大感受是:一个团队里面,最优秀的人越出色,整个团队的水平也会随之上升。虽然外界都说姚班很厉害,压力会很大,但我觉得这是挺好的事情,在合作中竞争的团队精神会对团队的发展很有帮助。


程序员世界没有“退休”二字,“35岁现象是个伪命题”


之前求总(求伯君)表示退休了,那请问您最近在关注或者在做什么?

求伯君(60后):首先退休是真的,我没有再去参与公司的日常管理。因为身体不好,我正在锻炼身体,平时会关注一些感兴趣的东西,也写一些自己用的游戏代码,不是作为商品去写的。譬如游戏外挂之类的,当然这不方便拿出来炫耀。为了完成游戏的任务,写代码将自己从劳动中解放出来。

如何看待程序员生命周期?好多人 40 岁不写代码了,是编程优则仕吗?

求伯君(60后):程序员的生命周期我认为是可以一直写下去的。我不写商业程序是因为体力跟不上,商业程序需要规定时间,而我自己写个小游戏可以有时间就写。因此只要有逻辑思维在,我认为程序员就可以一直干下去。有人 80 岁还一直在写程序,多写程序说不定还能防止老年痴呆。

何征宇(80后):关于 80 岁的问题我特别有感触,这个问题被我们讨论过很多次,我自己的团队就招了好多前辈。当我在谷歌的内核团队时,周围都是爷爷级别的程序员,并且他们真的是顶梁柱,他们写出来的程序都像是艺术品。我在此大言不惭说一句:我觉得中国软件业要发展,就看我们到底有多少爷爷级的程序员,看有多少爷爷还在写程序。

一个人往后台发展的话,读完博士或者硕士,年龄就要大一些,然后要在公司里真的做过系统或者工程,五六年才能完成一个,做完两个就要 40 岁以后了。因此我认为 40 岁以后才是程序员的黄金时期,才能创造世界级的工程。

程序员的年龄逐渐增长后,想转岗到管理岗位的话有什么建议?

王成录(70后):基于上一个问题,首先我并不认为只有年轻人才能写出好软件。在中国普遍认为只有年轻人才能做出好软件的原因是,中国的软件全被挤到了上层的应用软件。应用软件的确讲究创新,但真正的系统软件是一定需要时间积淀的。

因此在这个方面,中国软件的观念一定要扭转过来。

在转岗问题上,想成为软件管理者或者想成为标杆,需要具备三点特质:

  1. 一定要往前看。这是做软件产品所需非常重要的洞察力,因为软件与硬件不一样,它变化太多了。如果往回做产品和技术,是不可能做到很大份额或者世界领先的。以操作系统为例,只有开创新的机会点,未来国产操作系统才有希望。

  2. 学习永远不能停下来。个人为例,我每天花一小时学习,多年来雷打不动,John L. Hennessy / David A. Patterson写的《计算机体系结构》,我从第二版学到了第五版。因为如果你没有相关能力就无法管理团队,别人需要决策的时候,你没有自己的判断,就无法选择正确的答案。

  3. 拥有逻辑抽象和布道的能力。布道就是让别人理解你的想法,不论是对客户还是投资人,抑或是在企业里,只有对方理解了,才会对你的项目进行投资。


对于当代开发者,有何建议?


未来如何平衡开源与提供企业级服务之间的关系?

王成录(70后):按我个人理解,首先,开源不是技术问题,而是商业选择的问题。商业从哪来?这就决定了手段的不同。例如苹果闭源很成功,安卓开源也很成功,所以这不是问题的本质,而是商业选择的问题。

其次,构建生态跟做 TO B 完全不一样。做 TO B 时,交易发生的角色很清晰:提供者和客户。而构建生态时角色会变多:最终享受生态的消费者,各种生态贡献者,如软件贡献者,硬件贡献者,应用贡献者等等。如果这些人不能获得很好的利益平衡,生态很难走下去,所以生态比 TO B 复杂很多。

以传统和竞赛培养程序员的两种方式,大家如何看待?

王成录(70后):竞赛选手培养的应该是逆向思维,这在产品或工程里面有非常合适的岗位。因为在做产品的时候,不能只用正向思维来设计。以交换机为例,它是一个必须高度可靠的设备,而我们把其功能实现其实只完成了一小部分,另外 60%-80% 是处理异常情况下的解决方式。因此我们也招聘过一些竞赛选手,他们的逆向思维,尤其是用攻击的视角去看待产品时,会给设备的实现提出非常有价值的建议。

蒋涛:竞赛培养的是快速学习和解难题的能力。唐文斌(旷视联合创始人兼CTO)就在培养高中生做 AI,也招一些竞赛选手,然后发现头脑聪明的人上手也很快,所以竞赛本质是一种选拔机制。

蒋涛:六代技术人对目前的中国开发者有哪些建议?

姚  颂(90后)要勇于肯定自己,不能在舒适区里面,要往上走,不断学习,做自己不敢做的事情。

王  涛(80后)中国软件的上层应用,如移动App,在全球已经是超前水平,但在基础软件方面还存在一定的差距,因此我希望在座的程序员多关注底层软件,只有把基础打扎实了,才能把楼建得更高。

何征宇(80后)活到老,写到老

王成录(70后):做软件,一是心要静,二是持续学习。

求伯君(60后):两年前的一次1024大会上,我曾呼吁:程序员太辛苦了,在这一天一定要放半天假。

现在我仍然呼吁:10月24号应该为所有程序员放半天假。

朱震霆(00后)要多思考,勇于创新。然别人可能已经做了十年的技术,我们不一定很快赶上,但我们换一条路就会变成新的赛道。

蒋涛(主持人):以倪院士曾经的一句话作为结尾,「坚持你认为正确的事情,熬过寂寞期,你就能够成功。」

福 利

CSDN旗下公众号全新搜索技能上线啦!

只要在公众号内回复消息

就能自动回复想搜索的内容啦!


现在体验有惊喜,每日参与搜索打卡,

连续打卡满3天、7天、14天

均有CSDN精美礼品相送 百分百有礼!快戳

更多精彩推荐
☞开源数据库再创里程碑,PingCAP 获 2.7 亿美元融资
☞全球数百万台 Mac 疑似因 Big Sur 更新险酿计算灾难,苹果官方回应来了!
JavaScript 稳居第一、C# 连续下跌,调查 17000 名程序员后有了这些新发现!
中国第一代程序员潘爱民的 30 年程序人生
漫画:什么是 “千年虫” 问题?
万万没想到 Java 中最重要的关键字竟然是这个!
点分享点点赞点在看
Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存