第21节:驽马的自白(1)

作者: 邹欣

我是2005年10月份加入MSRA的,在这之前,我在微软的Outlook, Product Studio , Visual Studio 部门已经工作了8、9个年头。 到研究院后,我和其他同事一起从事“技术转化”(Technology Transfer)的工作,同时也进行一些技术创新方面的研究。由于我在产品部门进行一线开发的时间比较长,我在研究院也负责给实习生和员工进行软件开发方面的培训。我把我的一些开发经验写到了《移山之道——VSTS 软件开发指南》这本书里面。在我的职业生涯中,我作为求职者参加过一些面试,也面试了不少求职者,我和其他同事合作,把微软编程和技术面试的一些经验写到了《编程之美——微软技术面试心得》这本书里面。

很多人很好奇地问我:“微软工作这么忙,你怎么还有时间写书?”

我想很多人都有“写一点东西”的能力和想法,我以前也写过一些零散的博客,但是从“一点东西”到一本两三百页的书,中间要有一个质变的过程。我写第一本书《移山之道》花了将近三年时间,从2004年秋天开始构思,到2007年初夏完稿,中间经历了产品延期 、换工作、举家回国、买房子、装修等等事情。这本书在前面的两年时间里,都是一些断断续续的“一点东西”——初看上去有些意思 ,仔细分析,则有点像鸡肋。有时忙完了一天的事,半夜三更坐在电脑前看着自己的书稿,乐观的时候,觉得“已经写了一半……”, 悲观的时候,觉得“忙了两年多,还有一半都没写,有必要再继续下去么?……”

我知道市面上已经有不少关于“软件工程”的书;计算机的大学生们认为“软件工程”是最乏味的课程;你往海淀区五道口上下班的人潮中扔一块砖,十有八九能打中一个正在琢磨“我也可以写软件工程的书”的人……说到底,我相信自己能写一些有独特价值的东西,在中国文化的背景下,用轻松活泼的方式,向中国IT行业介绍微软的软件开发工具和方法论,我想还是有道理的;而且我就是这个 VSTS 开发团队的成员,我不写,谁能比我更合适写这本书呢?于是我还是硬着头皮往下写。

微软工作的确比较繁忙,我回到家里还要照顾两个小孩,自己的业余时间不多。听说有牛人可以一边打麻将一边写报纸的社论,我没有这个本事,只好不打麻将,不看电视,少应酬,每天坚持写一些东西,周末有时还跑到公司干活 – 周末在公司会碰到不少的同事 ,大家互相点点头,就忙各自的事情去了。第一本书的30多万字,都是我用微软拼音输入法一个一个敲出来的,在这个过程中,还发现了输入法的一些bug;同时Word 这个软件也崩溃了一两次,让我丢失了好几天的工作。后来我把书稿发给了当时研究院的院长沈向洋博士征求意见,他很快给我回邮件,说 - 这是我看过的最有趣的软件开发的书!并答应给这本书写序言。他还希望能给我以后的每一本书都写序言。 在领导的鼓励下,我最后终于完成了这本书。

第二本书《编程之美》在2008年3月上市之后就卖得不错,在几个月的时间里,它在计算机类图书销量一直是第一名。2008年6月份 ,繁体字版也在台湾上市,很快也成为销量第一名。很多读者喜欢这本书,也有些旁观者觉得这本书也不过如此——依仗微软的名声, 搜罗一些题目,吸引眼球罢了。不过,这本书的持续畅销还是说明书的内容的确有过人之处,不是昙花一现的炒作。

我想贴一幅图展示《编程之美》这本书的创作过程,图中的两条按月变化的曲线,一条是我和其他作者交流的email数量;另一条则是我和编辑们就这本书交流的email数量。

谚语说,一幅图胜过一千句话,不同的人有不同的一千句话来解读这些曲线。《编程之美》从2007年2月构思,到2008年2月完稿, 花了1年时间。我想说明一下为什么曲线在2007年10月左右会有大幅度的下降。一个原因是,那时候,我们写了不少题目,自己觉得该写的都写了,但是题目中很难看出来“美”,大家得喘口气,从“审美疲劳”中恢复出来。另一个原因是,编辑们也看出来书稿的质量并不像原来想象的那么好,有人建议干脆去掉“美”,封面大书“面试秘籍”或“我是如何打入微软的”即可——市面上质量一般的面试书也卖得很好,我们不如乘势也赚一笔算了;我们原定2007年11月份出版,如果这时,大家扛不住,稀里糊涂出了书,或者大家就此散伙,我想这一定不是一件美事。这段时间是项目比较黑暗的时期,后来责任编辑之一也离开了。

后来呢?从图上可以看出来,我们经过10月份的喘息后,增加了人手,开始了一个新的里程碑(milestone),大家针对一些难题紧咬不放,从办公桌讨论到餐桌上;砍掉一些不够“美”的题目;请了三位同事给我们专门挑错;我的“drive”也升级到“hard drive” ——以请吃午饭为名,和每一位作者逐句复审,如果email 没有回复,就打电话敦促,在这个过程中,所有作者的信念都没有动摇—— 我们要把程序中的“美”介绍给读者。

第22节:驽马的自白(2)

当年大家背诵的古文里有“骐骥一跃,不能十步,驽马十驾,功在不舍”这样的话,也许开始大家都自以为是骐骥(千里马),蹦跶蹦跶,搜罗一些题目,辅以伪代码,并掺杂若干幽默,就大功告成。没想到后来发现我们自己都是一群驽马,一匹马蹦跶不出什么名堂,要大伙儿团结协作,长途跋涉,中途还要歇息几次,才能达到目的地。世上骐骥罕见,而驽马满大街,有些驽马能跑出一些好成绩 ,我看关键在于“功在不舍”这一句话。IT业界不少人嘲讽某公司的软件只有到了3.0版才好用,看来这也是一群“功在不舍”的驽马在干活。

软件开发有一个阶段很少有人提及,叫“death march” 。就像军队攻城,一队队士兵冒着炮火出击,伤亡无数,但是敌人的城堡仍旧岿然不动,火力看似依旧那么猛。硝烟中,焦头烂额的指挥官还是下令新的士兵继续出发,开始又一轮的march。在软件开发中也有类似的情形,就是你每天都加班写程序,改bug,但是bug不见少,第二天,第三天,下一周,下一个月……还是这样。有军事家说过, 最后的胜利往往产生于“再坚持一下”的努力之中。经过无数大大小小的“再坚持一下”和“death march”,最后,有些军队破城而入 ;最后,有些软件成功发布;最后,有些书出版了。

也许可以这样说,微软亚洲研究院这十年来的成绩,来源于领导的鼓励和自由的环境,更重要的,还是来自于每个员工坚持不懈的努力,和“再坚持一下”的决心。

作者介绍:

邹欣,现任微软亚洲研究院技术创新中心项目主管,主要负责研究成果向产品的转化。他于1996年加入微软公司,前后参与了 Outlook, Product Studio, Visual Studio等产品的开发工作。他利用业余时间写了《移山之道—— VSTS软件开发指南》(2007年),《 编程之美——微软技术面试心得》(合作,2008年)。他还在清华大学软件科学试验班讲授 《现代软件工程》课程。邹欣于1991 年获北大计算机软件专业学士学位;于1996 年获美国韦恩州立大学计算机软件专业硕士学位。