程序员成长手记
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 优秀的程序员

三百六十行,行行出状元。程序员行业,不乏一些“明星程序员”。

榜样的力量是无穷大的。榜样是旗帜、是资源,代表着方向、凝聚着力量。学习具体的典型榜样,往往比接受抽象的原则方法要方便得多。有人曾说:在中国,卖上万台钢琴,不如出一位郎朗这样的钢琴家,他在“青少年学钢琴”这件事上能带来更大的推动力。

在程序员这个行业中,聚集了一群痴迷技术、对未知有极强的好奇心和探索能力的人。

认识优秀的程序员,学习他们的处世之道、思维方式,接受他们的影响,这样由一到十、由点到面,相互感染、竞相仿效,最终先进典型的做法能普及到普通人身上。

1.3.1 国内优秀程序员

在国内,很多商界领袖都是程序员出身,比如腾讯创始人马化腾、小米科技创始人雷军、百度创始人李彦宏、字节跳动创始人张一鸣、360创始人周鸿祎等。

还有很多程序员是专注于技术的行业专家,他们在行业内早已打响自己的名号,比如阿里巴巴的蔡景现(外号“多隆”)、阿里巴巴的陆靖(名号“人肉逻辑机”)、阿里巴巴的原技术副总裁、AI专家贾扬清、腾讯“TK教主”于旸,网易原员工吴云洋(“云风”)和田春(“冰河”)等人。除此之外,还有一些知名程序员擅长开源工作或写技术博客,为行业生态贡献自己的力量,如Vue框架创始人尤雨溪,博客“达人”陈皓、阮一峰等。

清华学堂计算机科学实验班(简称“姚班”)的创办人就是图灵奖得主姚期智院士。像姚期智院士这样级别的科学家或许已经超出程序员范畴,但在他的培养下,诞生了一批又一批在学术上获得极大成就的计算机编程“达人”。

还有一些名字不能忘记,如钱华林、钱天白等,他们有些是荣登互联网名人堂的中国人,有些是中国互联网重要的拓荒者。

(1)商业领域

1)求伯君。

求伯君是国内第一代程序员,是小米公司创始人雷军的前老板。从1988年开始,他独自一人,用一年多时间,写出了国产办公软件WPS 1.0。

2)雷军。

雷军在武汉大学读的是计算机专业,属于程序员科班出身,作为程序员他一干就是多年。他将写代码看作一件艺术的事情。雷军于1996年在金山西点BBS上写的几篇帖子里说道:“我爱编程这个工作,可以肯定我会干上一辈子。”足以看出当初那个热血青年对编程的热爱程度。

雷军是大家口中程序员的一个最佳典范,永远精力充沛,时刻都想着去创造,并且能够及时修复过程中的bug,有着严谨的程序员思维。

3)李彦宏。

百度创始人李彦宏也是一位科班出身的程序员。从北京大学信息管理专业毕业以后,李彦宏便前往美国纽约州立大学布法罗分校完成计算机科学硕士学位。他发明了“超链分析”并获得专利,这是现代搜索引擎发展的基础技术之一。

4)马化腾。

腾讯创始人马化腾也是程序员出身。在大学时,马化腾已经是一个计算机编程高手。

在《腾讯十年》这本书里,腾讯第一批开发工程师徐钢武回忆道:“为了养活这只‘企鹅’,大家想尽了办法。那时我们几乎什么都做,例如帮人家做一些网站的小项目,包括深圳信息局的邮件系统也是我们做的。当时,马化腾和张志东亲手做网站,公司主页也是马化腾自己写的代码并亲手调试一些小细节。”

5)张一鸣。

2005年,张一鸣大学毕业,仅用两年时间,就从普通程序员升职到技术高管,管理四五十人的团队,负责所有后端技术,同时也负责产品相关的工作。

张一鸣说他的爱好就是获取信息,他发现:互联网发展到今天,人们获取信息的方法依然落后,互联网上虽然有海量信息,但人们找到想要的信息却很难。于是乎,“码农”出身的张一鸣带领十几个工程师,耗时三个多月,开发出“今日头条”的最初版本——只要用户绑定社交账户,“今日头条”就开始分析用户的社交数据,找到用户的兴趣所在,再向用户推荐其可能感兴趣的资讯。依靠算法推荐新闻,两年内,今日头条月活用户从0到破亿。

在生活上,张一鸣依旧保持着他作为程序员时的一些习惯,比如上班时还是穿T恤衫和运动鞋。另外,他侧重用数据分析来管理公司等。员工对张一鸣有个共识:一个没什么爱好的“码农宅男”。

6)周鸿祎。

360创始人周鸿祎是一位热爱技术的企业家。

1995年,刚从西安交通大学毕业的周鸿祎,来到北大方正。他觉得当时的开发工具比较落后,就向领导立下了军令状,承诺在20天内开发出新的开发工具。于是周鸿祎和另外一位同事连续写了20个晚上的代码,总共写了2万行,圆满“交货”。随后,凭借这一开发工具,他在北大方正“走红”。该系统就是方正飞扬电子邮件系统,也是中国第一款拥有自主知识产权的互联网软件。

周鸿祎曾说过:“当程序员最大的幸福在于你有很强的操纵感,你可以指挥计算机做你想做的任何事情。你和计算机打交道。计算机很简单,计算机没有人复杂。”

7)丁磊。

1993年,丁磊从成都电子科技大学本科毕业后回到了自己的老家宁波,被分配到宁波电信局任工程师。安逸的生活并未让他感到快乐,两年后,他决定南下广州闯荡打拼。由于在电信局学习并掌握了UNIX系统、数据库技术和电信业务相关技能,他来到了刚成立的Sybase公司华南分公司。1996年,他架设了ChinaNet上第一个Firebird BBS。1997年,他创办了网易,最开始的目的是靠做互联网系统赚钱,后来他提出了“免费”和“易用”这两个互联网基本法则,创建了163免费邮箱,自此打开了网易的发展之路。

8)王小川。

王小川在成都四小读小学时,就对计算机表现出了浓厚的兴趣和惊人的天赋,后来他因获得国际奥林匹克信息学竞赛金牌被点招入清华大学计算机系。在搜狐期间,他带领团队先后研发了第三代互动式搜索引擎“搜狗搜索”和搜狗输入法。

商业领域有太多优秀的程序员了,我们可以很清楚地感受到他们的特质:热情专注、执着务实。

(2)技术领域

1)蔡景现。

蔡景现于2000年加入阿里巴巴;2003年,进入阿里巴巴的一个秘密项目,和另外两位工程师一起,从零开始,在一个月内,搭建一个名叫“淘宝”的网站,并涵盖所有交易系统和论坛系统;2003—2007年,独自维护淘宝搜索引擎,并且这还不是他全部的工作;2014年,被邀约成为阿里巴巴合伙人。

2)陆靖。

陆靖是ACM世界冠军,就职阿里云,为人十分低调,公司内号称“人肉逻辑机”。他做事不轻易动手,深思熟虑,鲜有编译错误。在他人遇到搞不定的代码找到他时,他就只看代码,不调试,一遍遍地看代码,然后指出某行代码有错误。

3)贾扬清。

贾扬清是深度学习框架Caffe作者,TensorFlow作者,曾任Facebook AI架构部门总监,负责前沿AI平台的开发、Facebook各产品部门AI平台的支持以及前沿机器学习系统研究。他拥有加州大学伯克利分校计算机科学博士学位、清华大学硕士学位和学士学位。2019年3月~2023年3月,他先后担任阿里巴巴技术副总裁、阿里云智能计算平台事业部总经理、阿里巴巴开源技术委员会负责人。

4)章文嵩。

1998年,还在读博期间,章文嵩仅花了两个星期就完成了初版LVS,而这是我国最早出现的自由软件项目之一。章文嵩在加入淘宝并任核心系统负责人后,不仅在阿里巴巴沉淀了CDN、TFS、Tair、Tengine、MySQL、JVM、Linux内核、图像搜索等技术和产品,很好地满足了淘宝的海量业务对基础核心软件的需求,还在后来投身于云计算事业时,为云计算打造了稳定、易用、低成本的云平台和组件。同时,他还活跃在开源领域的一线,历任淘宝技术委员会主席、阿里集团开源委员会主席,引入了开源文化,使得阿里巴巴因开源而受益,同时也提高了阿里巴巴的技术品牌影响力。

5)吴云洋。

吴云洋,网名“云风”,刚毕业的时候就被丁磊邀请至网易。后来,他作为网易游戏的核心成员,开发了《大话西游》《梦幻西游》等游戏。

《游戏之旅:我的编程感悟》一书忠实地记录了他十余年来对游戏编程的所思、所感、所悟,从基础的计算机知识到高级的编程技术,从非常专业的汇编优化到非常实际的项目管理进行了一次游戏开发的全景探索。他还翻译过一本特别经典的书《程序员修炼之道:通向务实的最高境界(第2版)》,建议想要踏入程序员行业的读者买来阅读。

6)田春。

田春,号称中国“Lisp第一人”,网名“冰河”。他是网易杭州研究院前高级开发工程师和系统管理员。

田春是一个很有意思的人,他研究的范围从梵文、意大利语到Common Lisp、毽子、计算机基础理论、摄影、羽毛球。

7)于旸。

于旸,是腾讯玄武实验室的发起人。他是国内网络安全与黑客界响当当的人物。同时,他也是跨界“明星”,本科毕业于安徽医科大学临床医学专业。他才华横溢却行事低调、为人谦逊,从不显山露水,在网络安全领域卓有建树。

8)章亦春。

章亦春的OpenResty项目撑起了Nginx生态圈的大半边天,在OpenResty的group圈里,他几乎是有问必答,而且讲解清晰,待人耐心、谦和,让人如沐春风。

看到这里,你会发现一流的企业往往都离不开一流的人才。人才之间有“虹吸效应”,他们在一起能迸发出更大的能量。

除了在企业中发光、发热以外,程序员实现自我价值还有一个途径,即做一名好的技术博主,比如陈皓、阮一峰等。

9)陈皓。

陈皓,网名“左耳朵耗子”,从2002年开始写技术博客,从2009年左右开始,在CoolShell(酷壳)上分享技术观点和实践总结。陈皓通过一篇篇观点鲜明、文风犀利的文章吸引了大量IT从业人员的关注,影响了成千上万程序员在技术选型、求职就业、个人成长等方面的思考和发展。他曾任亚马逊高级研发经理、阿里云资深架构师、天猫开发总监等职务。

10)阮一峰。

博客型程序员的代表人物就是阮一峰,他是上海财经大学经济学博士,由于对网站制作感兴趣,于是依靠自己强大的逻辑思维能力和对技术的热爱,成为一名行业专家。他于2014年加入阿里巴巴。作为国内著名的博客作者,有人称他是经济学领域博客写得最好的,博客领域IT研究最透彻的人。

11)尤雨溪。

尤雨溪,英文名Evan You,在前端开发领域,他的大名如雷贯耳。他是前端框架Vue.js作者,独立开源开发者,曾就职于谷歌Creative Lab和Meteor Development Group。由于工作中大量接触开源的JavaScript项目,因此他也走上了开源之路,现在全职开发和维护Vue.js。

要特别提一下的是,尤雨溪的大学所学专业并非计算机,而是室内艺术和艺术史,后来获得了美术设计和技术硕士学位。正是在攻读硕士学位期间,他偶然接触到了JavaScript,从此被这门编程语言深深吸引,开启了自己的前端生涯。

(3)学术领域

在国内,除了商业领域、技术领域有杰出的程序员以外,学术领域也不乏“明星”。

1)钱华林。

钱华林,中国科学院计算机网络信息中心研究员、伏羲智库顾问委员会成员;早期从事计算机体系结构研究和整机的研制。1975年起从事计算机网络的研究与工程建设。他是中国互联网重要的开创者之一,是“中国互联网先驱”的“二钱”(另一位为钱天白)之一。

2)钱天白。

钱天白,中国科学院计算机网络信息中心客座研究员、CNNIC(中国互联网络信息中心)工作委员会副主任委员。他为中国的互联网建立做出过贡献。

3)姚期智。

姚期智是2000年计算机最高奖项图灵奖得主。他的学术贡献毫无疑问是极富开创性且影响深远的,主要集中在密码学基础、计算复杂性及量子计算方面。

准确来说,他已经不能算是普通程序员了,而是一名计算机科学家。

4)楼天成。

楼天成,姚期智的学生,算法专家,谷歌算法大赛得奖者,小马智行创始人。他是大学生计算机编程高手,经常以一人之力单挑一个队。在CEOI、ACM界,其大名无人不晓。

楼天成毕业后曾在谷歌总部工作,从事社交网络和机器学习相关问题的研究。2016年受邀加入百度美国研发中心,是百度当时最年轻的T10级员工。后创立小马智行,累计完成8轮十多亿美元融资。

5)戴文渊。

戴文渊,毕业于赫赫有名的上海交大ACM班。在大学就读期间,他就带领三人团队夺得了ACM世界冠军和三个亚洲冠军,后担任ACM竞赛教练,指导学生多次获得亚洲冠军。他凭借优秀的信息学算法基础,在人工智能研究领域的顶级会议上发表了多篇论文。

本节用较多的篇幅介绍了国内一批优秀的程序员,这里的每一个人及他们的故事,都能单独拎出来写成一本传记了。希望读者能从他们的经历中得到启发。

程序员是一份上限很高的职业,也是一份了不起的职业。用计算机思维去训练自己,客观辩证、理性严谨的气质会熏陶着你。

1.3.2 国外优秀程序员

介绍完国内一些程序员,现在介绍一些国外程序员,他们同样卓越,很多人都是现在常用技术的创始人、发明者。

1)蒂姆·伯纳斯·李(Tim Berners-Lee)是万维网发明者之一、2016年图灵奖得主。他是一位英国人,在2012年伦敦奥运会上发了一条著名的推文——“This is for Everyone”(万维网是献给每个人的)。他被《时代》周刊列为“时代100人:20世纪最重要的人物”。

2)罗伯特·卡里奥(Robert Cailliau)和蒂姆·伯纳斯·李联合创建了万维网,并为苹果Mac计算机开发了第一款Web浏览器。

3)保罗·莫卡派乔斯(Paul V. Mockapetris)开发了互联网分布式及动态域名系统,即DNS。

4)雷·汤姆林森(Ray Tomlinson)是电子邮件的发明者;电子邮件地址中使用的@符号就是他发明的。

5)林纳斯·托瓦兹(Linus Torvalds),他是当今世界最著名的计算机程序员之一,是Linux内核与Git的作者。他说过一句著名的话:“Talk is cheap,show me the code”(说的话很廉价,不如给我看看你的代码)。

6)理查德·斯托曼(Richard Stallman)是通用GNU计划以及自由软件基金会的创立者,还是Emacs、GCC的开发者。毫不夸张地说,没有他,开源软件也许不会存在。

7)吉米·威尔士(Jimmy Wales),维基百科创始人之一。2006年5月,他被《时代》周刊选为当年世界100个最具影响力人物之一。

8)埃里克·比纳(Eric Bina),网景公司联合创始人,担任程序员时开发了Mosaic首个版本。

9)保罗·维克西(Paul Vixie),美国计算机科学家,他的技术贡献包括域名系统协议设计和过程,以及实现DNS实现的操作稳定性的机制。另外,对开源软件原理和方法有重大贡献。

10)艾伦·埃姆塔格(Alan Emtage),现代搜索引擎鼻祖;构思并实施了第一版Archie,一个可以以文件名查找文件的系统,这个系统被广泛认为是世界上第一个互联网搜索引擎。

身处互联网时代的我们,每日所用的计算机设备、手机设备,以及在它们之上的软件都离不开这些先驱的智慧和贡献。

用榜样的力量激励我们,认知榜样、学习榜样、成为榜样、超越榜样。

1.3.3 程序员的视野

作者一直坚定地认为:“程序员只有拓宽视野,多看、多听、多想,才不至于闭目塞听,故步自封”。

“打开认知”也是本书想强调的。关于如何打开认知、拓宽视野,本节将给出如下几点建议。

(1)提高阅读量

程序员要多看书。看书相对于浏览网站、工作实战、提问讨论这些方式的显著好处:学习更加系统。比如数据结构、算法、编译原理、操作系统、软件架构、计算机网络、编程语言这些方面,每个方面至少要看一本。当遇到问题,或需要深入、具体了解某项技术时,才知道如何去搜索、提问,并且,这样和同行能有更多共同话题。

除了书本阅读以外,程序员很多时候会通过阅读大量的开发文档,或者案例代码来完成技术的学习。现如今,互联网上有很多优质的技术文档,在看的同时,还能方便地进行技术交流;除此之外,还包括在一些活跃的开发社区中交流新技术。通过大量的阅读,可学习新技术、寻找问题解决方案。

提高阅读量,不仅能锻炼信息提取的能力,还能提升思考总结的能力。

(2)使用优质的学习网站

程序员每天与网络相伴,如果能找到一些优质的学习网站,则可借助它们提升自己。优秀的学习网站包括搜索引擎、软件官网、技术论坛等。

例如,可以在谷歌上检索任何信息,可以在Stack Overflow官网上找到开发中遇到的问题的解决方案,可以在GitHub上找到很“酷”的开源项目等。

(3)加入技术圈子

技术人也有技术人自己的圈子,加入圈子很重要。在圈子内,你可以听到很多来自同行的观点,看到很多感兴趣的技术,也能和大家充分地沟通、交流。有时候,技术的成功就是通过交流与思维“碰撞”实现的。

很多平台都提供了程序员圈子,比如谷歌+、豆瓣小组、新浪微博小组、微信群、QQ群、技术社区的社群等。可以在这些地方及时获取信息。不夸张地说,信息差就是财富。

(4)写作或开源

优秀的程序员不会放弃写作或开源这样绝佳的提升途径。

坚持技术写作或者代码项目开源,能让你更加清晰地认识技术、理解技术,同时,它们也是绝佳的交流方式。

输出是最好的输入,养成写作或开源的习惯,对技术提升和个人成长都有很大的帮助。时间一久,你会遇到很多志同道合的朋友,他们会关注你、激发你的想象,这个过程就是认知成长的过程。

(5)关注前沿技术

程序员每天都应该花一些时间来关注前沿技术、行业最新动态,因为拥有灵敏的技术嗅觉是很重要的。

IT行业变化很快,需要逻辑清晰、思维活跃,但并非鼓励盲目追求新技术,要有自己的“判断准则”,即使遇到一些新事物,也能举一反三。而“判断准则”就是在技术圈中不断地观察而形成的。

这里推荐一些可拓宽程序员视野的网站,比如V2EX、CSDN、掘金技术社区、InfoQ技术社区、SegmentFault(思否社区)、博客园、51CTO社区、GitHub等。

通过重新认识程序员这个职业,就会发现,高薪的背后并非想象的那么简单。逐渐了解IT行业的独特之处,学习优秀程序员的闪光之处,当认识提升的时候,成长便从这里开始了。