(本文发表于
《程序员》2007年第2期,发表时有删节。)
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)">
<meta name="AUTHOR" content="Jeff Xiong">
<meta name="CREATED" content="20070108;21224700">
<meta name="CHANGED" content="16010101;8042600">
<style type="text/css">
<!--
@page { size: 8.5in 11in; margin: 0.79in }
P { margin-bottom: 0.08in }
H1 { margin-bottom: 0.08in }
H1.western { font-family: "AR PL ShanHeiSun Uni", sans-serif; font-size: 16pt }
H1.cjk { font-family: "AR PL ShanHeiSun Uni"; font-size: 16pt }
H1.ctl { font-family: "Lucidasans"; font-size: 16pt }
H3 { margin-bottom: 0.08in }
H3.western { font-family: "AR PL ShanHeiSun Uni", sans-serif }
H3.cjk { font-family: "AR PL ShanHeiSun Uni" }
H3.ctl { font-family: "Lucidasans" }
-->
</style>
用五年时间跨越鸿沟
——“大学未毕业程序员”的流水帐
禅宗说学佛有渐修顿悟之分。说到“跨越鸿沟”,总让人觉得像是习武之人一夜间打通任督二脉,霎时间神清气爽身轻如燕,原本百思不得其解的大难题突然就迎刃而解。这般境界着实令人神往,可惜我从参加工作以来五年有余,回想起来竟然没有这么一个天人合一的顿悟时刻。遗憾之余,只能安慰自己说:这就是所谓“资质”吧。没有当下开悟的聪颖天资,所以也难以体会跨越鸿沟的愉悦了。
不过想想五年前的自己,却也不是全无变化——不管技术、写作还是待人接物,就连头顶冒出的几根白发,都见证着自己的成长。不过最大的变化还是在自己心里:当年背着书包和无法完成的学业黯然离开校园的男孩,现在已经可以淡然地拿自己这段经历打趣了。能够坦然面对自己心中最不堪回首的往事,这也算是跨过一道鸿沟了吧。
北京理工大学,我的母校,是一所有着严谨学风的高校。在受她严格的理工科基础训练而获益匪浅的同时,我终于也没能达到她期望的标准。2001年,在学业还剩下一年尚未完成时,我不得不选择了离开母校——以一个失败者的身份。从那时候开始,我常常会做一个梦,梦见自己正在高三的教室里复习准备高考,一边还鼓励自己说“这次终于有机会把大学读完了”。能够顺理成章地拿到本科文凭的大多数人,恐怕是体会不到这种怅然若失的缺憾感的。
如果说梦中的缺憾感只是令人心绪不宁的话,白天需要面对的就是更加现实的问题了:一个机械工程系的肄业生要如何找到一份工作来养活自己?虽然一直热衷于编程,在学校里也有些小小的实践经验,但我实在没有自信能靠这样的背景留在IT圈里。好在当时供职联想的孟岩热心相助、《程序员》杂志蒋涛总编不拘一格、再加上当时创刊刚一年的杂志正需要青壮劳力,我的提前退学反倒成了因祸得福,早早地就给自己找到了一份工作。
这“因祸得福”之说并不纯是发扬阿Q精神:虽说薪水不高加班不少,但《程序员》杂志编辑部仍然是一个难得的优秀团队;更重要的是,在这里可以接触到前沿的技术和高端的视野,这对于正在渴求知识的我来说无疑是天赐良机。而且做杂志编辑还能近水楼台先得月地接触到图书出版机构,我的《重构》、《最后期限》、《与熊共舞》等几本译作都是在这段时间里完成的——对我而言,从事翻译工作最大的受益者还是我自己,因为翻译的过程让我真正将一本书读得通通透透。试想一下,这些书籍都是Martin Fowler、Tom DeMarco等前辈的心血凝粹,能将它们读懂又怎会不大有裨益?
但作为杂志编辑的一个缺陷也逐渐显露出来:虽然能够看到到很多技术文章和案例分析,但毕竟没有机会亲手开发一个真正的软件。每天只是高谈阔论,毕竟站着说话不腰疼,一来二去就成了个眼高手低的毛病。就算自己尝试写些程序,但一如温伯格所说,不从事专业的软件开发,就永远只是业余选手,对于“专业”的问题终归想不明白。况且媒介传播——纵令是关于“软件开发”的媒介传播——与软件开发始终是两码事,所需的心理状态和技能是截然不同的。于是在2003年初非典肆虐的日子里,我那颗程序员的心又开始躁动起来。要去做一些真正的软件,我才会知道软件究竟应该怎么做,模模糊糊中这就是我对自己说的话。
想要去做真正的软件也不是那么容易的,我的学历问题仍然是求职路上的拦路虎——我甚至不知道该如何在简历里写自己的教育背景,只好含糊其词地写上“曾就读于北京理工大学机械工程学院”。这样一份简历铁定入不了HR主管们的法眼,我这样告诉自己,所以还得另辟蹊径。这时候一位老友,在BBS上认识的石一楹成了我的贵人:此人经验丰富,技术精湛,做着某公司的技术总监和好几家公司的顾问,而且正好还在我素来向往的人间天堂杭州。于是几番电话之后,我便定下了前往杭州的机票。
石一楹给我第二大的帮助——最大的帮助自然是帮我在杭州找到一份工作——是教给我敏捷开发的理念。尚在北京时,我曾经通过电话问他:需要准备哪些背景知识。他既没有叫我去学J2EE,也没有让我补习SQL,只是要我把《解析极限编程》再读一遍。(当然我是刻苦的好学生,我把整套XP丛书都买来重读了一遍。)到了杭州以后,除了西湖的迷人风光之外,他的工作方式同样令我震惊:测试驱动、持续集成、故事卡、结对编程……这些似乎只有在书里、在老外的办公室里才可能出现的东西,就这么活生生地出现在我眼前。这让我第一次产生了一种朦胧的感觉:我们也可以用正确的方式做优秀的软件。
后来由于种种原因,这些敏捷的因素在我们的项目中出现得越来越少。到最后,除了一套尽管谈不上完备、但至少还频繁执行的测试和时常进行的重构之外,我们的项目已经基本回到大家更熟悉的、“普通”的工作方式了。这个现象引发了我的很多思考:为什么明明知道敏捷是更好的方式,我们却无法做到呢?说来有趣,最后解开我这个疑惑的竟然是《坛经》中一段禅宗典故。
五祖弘忍座下大弟子神秀偈云:
身是菩提树
心如明镜台
时时勤拂拭
勿使惹尘埃
更多人记得的是六祖慧能与之针锋相对的那一偈。但很多人似乎忘记,以一目不识丁的獦獠之身,能听人颂《金刚经》而有所悟,六祖的根性不是常人能比的。这世上有圣人能凭过人灵性而顿悟成佛,但更多凡夫俗子做不到这一点。这根性愚钝的凡夫俗子,难道就不用修行、无须上进了么?别忘了,五祖读了神秀的偈,也说“依此偈修,免堕恶道;依此偈修,有大利益”呢。
于是我开始观察,观察身边的同事,也观察自己。我观察到一个有趣的现象:很多同行(也包括我自己)想要偷懒、想要逃避那些严格的纪律时常用两个借口。其一曰“但求顿悟”——“Stallman/Linus/Gates……写emacs/Linux/Basic……的时候做单元测试了吗?”(所以我也不用做单元测试。)其二曰“不耐渐修”——“昨天就有一块代码没有单元测试了。”(所以今天这块代码不写测试也不算太糟。)亲爱的读者,不妨和我一道来摸着胸口拷问一下自己,这是不是我们常用的两套说词?
回答其实很简单:第一我们不是Stallman/Linus/Gates,他们是天才而我们不是;第二我们的工作还得继续做下去,而且我们希望把它做得出色。熵增加是宇宙的定律,为了让我们的程序、我们的项目、我们的团队、我们的工作环境有序而不混乱,我们就必须不断地向其中注入能量——既然还做不到“菩提本无树,明镜亦非台”,我们就必须“时时勤拂拭,勿使惹尘埃”。(两年后,当我成为一名ThoughtWorker之后,我才真正明白了这件事。这是后话,暂且按下不表。)
在杭州的日子里,除了与软件开发的技术和经验之外,我的另一大收获是开始信佛。照着佛经所说“观身如身,观心如心”的修行方法,我学会了如何去观察——当然包括观察别人、观察外界,但更重要的是观察自己。观察自己的身体感受和心理活动,并时时调节身体与心理状态,使自己身心平和安定。(除了别的好处之外,这种练习让我近两年很少生病,偶染小恙也心知肚明该如何调理痊愈,这算是信佛之后的一个意外收获。)就这样带着一些经验、一些思索和一些收获,2004年,在离开学校正好三年的那一天,我再次拨通了蒋涛的电话。
这次回到北京、回到传媒的原因有二。其一,我已经亲眼见到好的经验能够如何有效地帮助软件开发,我希望创造条件让更多好的经验被传递给更多的人;其二,除了软件开发之外,我仍然对麦克卢汉的大众传播理论怀着一份向往——有些事,你知道自己不会一直去做,但如果没有过足瘾就会一直惦念。媒体工作于我,就是这样的一件事。此时蒋涛的工作重心已经从《程序员》杂志转到了CSDN网站,我也就成了网站的技术主编——在Web 2.0热潮到来之时为一个拥有超过100万用户的网站工作,谁又能说这不是一种幸运呢?
在他的代表作《理解媒介》中,麦克卢汉提出了一个影响整个大众传播领域的理论:媒介即是内容。从一个非常狭窄的意义上来说,这就意味着经营媒体的重点不是制造内容,而是打造一个传播平台,让内容的生产者与消费者在这个平台上互通有无、各取所需。在根源上,这正是我重新回到传媒领域的原因:除了开发软件、享受编程的乐趣之外,我一直向往成为一名“技术传播者”——通过我的工作让更多人了解软件开发的知识和最佳实践,用我的思想去帮助别人获得成功,这给我带来的满足感丝毫不亚于解决一个技术难题。但与此同时,我也越来越清楚自己的个性并不适于从事媒体工作:对技术的热爱使我无法中立地对待各种不同观点,而“中立”却是媒体的一大要素;而且我喜欢解决具体问题胜于人际交往,这也决定了我无法成为一个优秀的记者或主编。就在不断努力和认识自我的过程中,又是半年时间过去了。Martin Fowler来了。
直到现在,每当被问到“最尴尬的事”时,我总会讲这个故事。我们跟上海交大借了一间大教室,我们拉出了醒目的横幅和招贴,我们邀请了三百位客人和十多位知名专家,这全都是冲着Martin的面子。但就在讲座开始前4个小时,Sidney Pinney(时任ThoughtWorks中国公司总经理)在电话里告诉我:“Martin因病不能来现场,我很抱歉……”尽管事后有各种关于我当时如何镇定自若的传言,不过说实话,我脑子里冒出的第一个念头是“赶快刮台风全城戒严吧……”也许又是一次因祸得福,这桩倒霉事让我和ThoughtWorks一下子对彼此有了更多的认识。回到北京以后,郭晓(现任ThoughtWorks中国公司总经理)告诉我:也许我真正想做的是咨询。那么好吧,还能有比ThoughtWorks更让我心仪的咨询公司么?
但即便如此,当时的我其实也没想到,自己究竟会有多么心仪ThoughtWorks这家公司——也来不及想,唯一的想法就是“终于可以尽享编程的快乐了”。第一个项目对我来说熟稔多过生疏:卡片墙、大白板、圆桌和随意滑动的椅子、免费的可乐、两人一台电脑……正是我寤寐以求的工作环境啊。2006年春节刚过,公司又派我去印度参加了ThoughtWorks University的学习。拿到毕业证的那一刻,泪都几乎要下来——好歹是张文凭啊,哪怕并不是真正的大学呢。
在ThoughtWorks的时间稍长,特别是先后拜访了印度班加罗尔和澳大利亚墨尔本两处办公室之后,我渐渐明白了一件事:这世界上的天才比我们通常想象的要少得多,但凡人所能达到的成就却也比我们通常想象的要伟大得多。没错,我的意思就是:ThoughtWorks并不是“天才幼儿园”,这里的800多名员工都是有七情六欲、食人间烟火的凡人。这些凡人做出了令人刮目相看的事情、营造了令人向往的环境,仅仅是因为他们保持着自己向上的心。
拿ThoughtWorkers常用的一个比喻,每个人都是一个热气球,在地心引力的作用下总想往下掉——累了,病了,心情不好了,打球受伤了……无数的理由让我们想躺在沙发上度过又一个无所事事的安闲夜晚。要让气球越飞越高,唯一的办法就是不断地给它加火。个人是如此,项目的运转、企业的环境也莫不如此。良好的项目不会自然而然地永远良好下去,它要靠每个人不断改进它的质量;振奋人心的工作环境不是从天而降的,它是靠每个人从一张贴纸、一个玩具开始积累出来的。有些热气球飞得那么高,也许只是因为它们一直没有放弃向上飞。
于是我真正释然了。五年的时间,我已经走到了这里。尽管自己还是那么微不足道——我学习新技术总是很笨,我到现在还不懂编译原理,我的英文口语结结巴巴……但我知道自己会一直向上飞。哪怕只有一点点进步,只要每天都比前一天更好一点点,我就不会再让自己失望。不过生活总是这么充满戏剧性:当我为自己的学历问题担忧时,其实从来没有人因此歧视过我;而当我能够坦然地拿这个话题开玩笑时,却着实被歧视了一把——因为没有本科学历,美国大使馆根本不考虑给我发放工作签证。在未来的若干年里,这也会是我的一个有趣谈资吧。
回想这五年来的经历,曾经有过好多次的因祸得福、好多次的贵人相助。我很愿意说这是因为自己命好,不过另一种解释也多少有些意思:每件事情的“意义”,其实是我们在事后给它加上的;如果用平和的眼光看待已经发生的事实,用积极的态度迎接即将到来的明天,也许所有的塞翁失马都可以变成焉知非福。是的,这似乎与因果律不符,但宗教信仰原本就不同于因果律。我信所有的事情都是神祗的安排,所以我欣然接受。
但听天命并非无须尽人力。神会给你祈求的一切,前提是你知道自己想要什么。关于“发现自己的兴趣和特长”,已经有无数人讲过无数次,实在不必再作强调。我想说的是,仅仅知道“了解自己”的重要性还是远远不够的,我们需要做更细致的工作来真正了解自己。借助一些专业而全面的心理、性格测试,你可以找到自己的性格特质和缺陷;然后你可以制订出具有可操作性的计划,充分发挥自己的长处,同时避免性格缺陷造成严重损失——举例来说,假如你害怕演讲,你不必费心(也不太可能)把自己培养成口若悬河的天才演说家,但可以(并且应该)想办法避免因为紧张而忘词;而且你还可以发挥自己善于收集资料的特长来帮别人准备讲稿,让别人替你去演讲。当然,最重要的还是自己的感受:花一点时间让自己静下来,然后问自己到底喜欢什么、想要什么。做自己喜欢的事情更容易做出成绩;而每天浪费8小时来做自己深恶痛绝的工作,不啻是在慢性自杀。
尽管辍学这件事困扰了我数年,但我并不因此而愤恨——甚至有些感激。因为没有文凭,让我比别人少了一道可以依靠的墙,因此也逼迫着我不断努力前进,不敢须臾懈怠。虽说自认为已经跨过了这条鸿沟,但我并不想忘记那种害怕一觉醒来一无所有的危机感。就让那个怅然若失的梦一直伴随着我吧,做一个“大学未毕业程序员”,我已经习惯了这种状态,感觉还真不错。
分享到:
相关推荐
车联网如何跨越双向碎片化的鸿沟——继车载多媒体之后OBD欲扮演入口角色(二).pdf
只有最初级的逻辑电路才使用单一的时钟。大多数与数据传输相关的应用都有与生俱来的挑战,即跨越多个时钟域的数据移动,例如磁盘控制器、CDROM/DVD 控制器、调制解调器、网卡以及网络处理器等。当信号从一个时钟域...
车联网如何跨出双向越碎片化的鸿沟——继车载多媒体之后OBD欲扮演入口角色(一).pdf
标题中的“创业产品必须迈过的鸿沟——Product_Market_Fit”指的是创业公司在产品开发过程中必须达到的一个关键里程碑,即Product-Market Fit(产品-市场契合度)。这个概念由Marc Andreessen提出,它强调的是产品...
### 跨越鸿沟:同步世界中的异步信号——深入解析 #### 一、引言 在复杂的电子系统设计中,尤其是集成电路(IC)、专用集成电路(ASIC)以及现场可编程门阵列(FPGA)的设计过程中,跨越不同时钟域的数据传输是一...
标题“跨越鸿沟:同步世界中的异步信号”揭示了设计者面临的挑战,即如何在不同时钟域之间有效地传递数据,同时避免由于时钟不同步引发的问题。 同步和异步的概念是数字系统的基础。同步系统通常使用单一的时钟信号...
《跨越鸿沟》这本书主要探讨的是高科技产品在市场营销中遇到的重大挑战,即“鸿沟理论”。这个理论指出,高科技产品在从早期市场向主流市场的过渡过程中会遇到一道难以逾越的鸿沟。早期市场主要由早期采取者和内行...
藏经阁-跨越鸿沟-工业大数据的实践思考 工业大数据是指在工业生产过程中产生的海量数据,包括设备运行状态、生产过程参数、产品质量检测结果、供应链管理信息等。这些数据可以被用于提高生产效率、降低生产成本、...
跨越“数字鸿沟”,发展我国电子贸易——“电子东盟”对我国对外贸易的启示.pdf
智能电动汽车时代新用户报告:洞察高价值用户,跨越增长鸿沟.pdf 智能电动汽车时代新用户报告:洞察高价值用户,跨越增长鸿沟.pdf 智能电动汽车时代新用户报告:洞察高价值用户,跨越增长鸿沟.pdf 智能电动汽车时代...
该PPT的主要内容围绕如何在FPGA(现场可编程门阵列)或ASIC(应用特定集成电路)上用硬件描述语言实现复杂的算法展开。 首先,了解硬件描述语言(HDL)是不可或缺的。HDL使得设计者能够用类似于编程语言的形式对...
在电子设计领域,尤其是FPGA开发中,跨越鸿沟指的是信号在不同时钟域之间的传输。随着技术的进步,时钟频率和数据传输速率的提高,处理异步信号的问题变得日益重要。时钟域是数字系统中由同一个时钟源控制的逻辑单元...
2015年秋八年级政治上册第一单元跨越鸿沟学案无答案教科版.doc
总结起来,跨越“数字鸿沟”,发展我国电子贸易,需要借鉴“电子东盟”的经验,强化信息技术的应用,提升信息要素在国际贸易中的作用,优化贸易流程,提高交易效率,以适应全球化和信息化带来的挑战。同时,建立和...
民法典中对个人信息权的表述并不明确,导致司法实践中,民事案件与刑事案件中个人信息的保护往往呈现出两种不同的“场域”,暴露出技术鸿沟带来的民事权利维权困境。 个人信息的保护在法律上存在两个主要的难题:一...
跨越分析与设计的鸿沟如何把分析转化为设计,又如何把设计模式跟域模型结合? 这里边如何还操作,总有章可循.
2019-老年人网络信息交流中的获益阻力研究——基于数字鸿沟视角_杨曜宇.caj