在微软的成长过程中,一直伴随着对梦想的不懈追求。本书展现了微软的天才团队追梦过程里的精彩片断----他们付出了艰苦卓绝的努力,经历了犹疑、冲突和痛苦,但他们的成就今天仍然在影响世界。合上这本书的时候你会发现,软件不仅是智慧的结晶,也是信仰、尊严和魅力的代名词。
张亚勤博士现任微软公司全球资深副总裁、微软(中国)研发集团主席, 微软(中国)有限公司董事长。微软(中国)研发集团拥有3000多名顶尖科学家和工程师。是跨国公司在华规模最大的综合性研发机构,也是微软公司在美国之外最大基础研究、技术孵化、产品研发及产业合作的研发基地。
很多人都知道微软公司,它依靠软件变得非常富有。关于微软是如何从一个只有十来个人的小公司成长起来的故事,很多人都听过。听了后,不少人都觉得它很幸运。那么除了幸运之外,微软还有什么过人之处么?很基本的问题,它是如何开发软件的呢?这个问题容易回答,很多人都能讲上几句。但如果只是讲讲有哪些“工种”,立哪些规矩,也很乏味。要是能从头到尾的讲讲一个很大的产品是怎么从无到有开发出来的,该多有趣。
微软的软件产品很多,但是在其产品线中,起着中流砥柱作用的当属操作系统,即Windows,中文称视窗。Windows有众多版本,但不论是Windows 2000、Windows XP、Windows Vista,还是即将问世的Windows 7,都是基于经典的Windows NT内核。NT内核从1988年开始酝酿,1989年开始编码,历时将近五年,于1993年7月正式发布,即Windows NT 3.1(在本书中简称NT)。通常,软件的版本号是从1.0开始的,但NT的第一个版本就是3.1。
NT的最初开发计划是18个月,但实际用了快5年,是计划的好几倍。软件项目延迟是常有的事,但延迟了这么久还没有被枪毙掉也是有些不寻常的。在行业外的人看来,编写软件的人,特别是所谓的高手,大多有些古怪之处。NT团队最初只有几个人,结束时发展到两百多人,其中一定不乏特立独行或者离经叛道之士。这些人聚到一起,吃顿饭都可能争吵起来,何况要像绣花一样合作写软件呢,而且是写操作系统这样的复杂软件。
弹指一挥间,距NT团队成立的日子差不多20年了。亲历过那段“美好的旧日时光(the good ole days)”的人,都早已声名显赫、腰缠万贯了。请他们讲一下从前的故事,不是一件容易的事。
那么如何满足一下好奇心,或者冠冕堂皇一些,“师夷长技”呢?幸运的是,有一本书很好的记录了开发NT的全过程,它是用英文写的,名字叫《Showstopper》。
“Showstopper”这个英文单词很有趣,在观看戏剧或者其它演出时,人们使用这个词来形容节目格外精彩,让人拍手叫绝,以至于被观众的掌声和喝彩声所打断,不得不等人们安静下来后才能继续。在日常用语方面,它也是一个很好的词,人们用它来形容超乎寻常的美丽和迷人……
但当这个词被引入到计算机特别是软件领域后,它的含义发生了根本性的变化,它代表的是最严重的问题。因为在软件领域,人们经常使用臭虫(英文为BUG)这个词来称呼软件中的瑕疵或者问题,并根据严重程度,将臭虫分成若干个等级,而“Showstopper”用来指最严重的那类臭虫,它如此严重,以至于影响了产品的核心功能,不解决它产品就不能用。如果是在开发阶段,Showstopper的存在会导致产品就不能发布,其它很多工作也无法进展,整个项目不得不延期……
《Showstopper》一书以时间为主线,生动了描述了开发NT的整个过程,讲述了5年中的很多精彩故事,特别是NT团队如何解决开发中的Showstopper类问题的动人情节。开发软件不是一件简单的事。分析需求、定义功能、设计架构、编写代码、测试集成……,每个环节都不容易做。但难度最大的,最难以控制进度的,其难度又经常被低估的,就是定位和去除臭虫,也就是所谓的软件调试。如果把计算机系统中的每一个比特位看作是一个水滴,那么今天的典型计算机系统就都是一片海洋,定位臭虫的过程就好像是在这个海洋中捞针。而去除Showstopper类型的臭虫,更是难上加难,因为这样的问题往往关系着整个产品或项目的成败,关系着很多人的事业和命运。
在介绍紧张的开发过程的同时,作者用简炼的笔法,为我们描绘了一大批个性鲜明的人物,包括他们的学习工作经历、性格、家庭、婚恋,以及他们面对困难和压力时的反应。在作者的妙笔之下,几十个人物跃然纸上。他们有些是公司的管理者,有些是项目经理,有些是团队的技术首领、小组长,有些是普通的程序员、测试员、构建员和技术编辑。他们各司其职,为共同的目标努力,尽管也有争执、摩擦、甚至冲突……
我在四年前买了这本书,放在案头,有空的时候就拿起来读一读,有些内容读了很多遍,但是每一次都有新的感受,能受到不同的启发,有技术方面的,有项目管理方面的,也有处世和人生方面的。
2005年的时候,我开始写一本软件调试方面的书,旨在帮助人们提高去除软件臭虫的效率。在写作过程中,我还经常拿起《Showstopper》,有时是为了小憩一下,有时是为了汲取灵感。有一天,我突然冒出一个想法,为什么不把这么好的一本书翻译成中文,让更多国内的读者可以看到呢?于是我开始想办法联系书的作者。费了些周折后,终于找到了两个邮件地址。于是便写了一封简单的邮件,发了出去,时间是在2007年的5月8日。信写的不是很长,因为担心作者收不到,白费功夫。没想到,第二天一早我就收到了回信。信落款处的署名是Gregg,也就是作者全名G. Pascal Zachary中G的完整形式。Gregg格说,他很高兴收到我的信,愿意让他的书在中国出版,末尾他还说:
Plus, Chinese readers are keen on books about management of tech projects.(此外,中国的读者很喜欢如何管理科技项目的书。)
是啊,这何尝不是一本软件工程管理方面的好书呢?尽管大多时候我是将其当作报告文学来读的。
接下来的问题就是找一家国内的出版社。这并不像我预想的那样顺利。前两次尝试都很快就失败了。过了几个月后,又有了第三次机会,为了让这次机会成功的可能性大些,我特意邀请了两位编辑见面来谈。我先是花了些时间告诉他们这不是一本专门介绍技术的书。然后我讲了书中的一些精彩内容和这本书对于程序员、测试员、项目经理、公司老板以及历史爱好者的意义.在我滔滔不绝、激情澎湃的讲了一个多小时后,两位编辑有兴趣了,想看一下这本书,然后推荐给社里的领导来审判。过了几周后,我得到了答复:社里的领导不同意。这时已经是2007年底了。当时,我自己写的书已经完成了大半,在写第5篇——“软件的可调试性”时,我很自然地想到了《Showstopper》中的故事是一个很好的案例,征得了Gregg的同意后,在我的书中有了“Showstopper和未雨绸缪”这一节。
2008年初,我又向另一家出版社推荐。这次很顺利,出版社很快决定购买版权。2008年3月,Gregg很高兴地发邮件告诉我他已经和中国的一家出版社签约了。之后的一些细节又花了些时间。2008年秋,《Showstopper》的翻译工作开始了。
翻译难。尽管在打算翻译这本书的时候就预计了这个任务会很难,但是实际感受到的难度还是超出了预料。这本书的作者是《华尔街杂志》的著名记者,也许是因为写惯了针砭时弊的新闻稿,他的文笔很是犀利,用词泼辣,豪放不羁。不管是书中的小人物,还是大人物,作者都不加任何粉饰,直言其原貌,甚至缺点,毫不留情。另外,为了力求生动,作者在很多地方使用了口语化的描述方式,用了很多俚语和固定用法的短语。这些特点,使这本书让人读起来感觉很是过瘾,但是却给翻译带了很大的挑战。很多俚语和短语是词典里查找不到的,有些即使能查到,但是词典上给出的词意看起来也不符。更何况,如果完全照搬词典上的解释,翻译出来的东西就会失去原作的风采。
就拿书名为例吧。作者使用Showstopper这个词作为书名,是有一语双关之妙的。一方面是使用了这个词在计算机领域的含义,即最严重的臭虫,这是对这本书主要内容的一种直白表达;另一方面当然还是使用了这个词的传统含义,把打造NT的过程比喻成一场“戏”;一场虽没有刀光剑影,但也绝对堪称紧张激烈的戏;一场发生在高科技领域,但也处处彰显人性光芒的戏;一场有欢乐,也有悲伤的戏;一场让人拍手叫绝的戏……
如何翻译这个书名呢?从打算翻译这本书的时候,我就开始考虑这个问题,也与一些朋友一起探讨过,希望用“头脑风暴”激发出一个好的中文名字。关于这个词在计算机领域的用法,在我们尝试过的词典中,都没有包含这种用法。关于传统用法,词典中一般也只是一句说明,没有给出中文的对应词汇。在想出的很多种译法都被否决后,我们想到了保留这个词不译,这是最省事和稳妥的做法,但还是觉得那样做有些不好,特别是对于那些不太熟悉这个英文单词的人来说。
最近几年,我越来越喜欢阅读古代的文学作品,尤其是当写作或者翻译中遇到困难时,我经常会翻看古人的作品寻找答案或者灵感。这一次,在翻看了几本书都没什么收获后,有一天,当我在书柜中搜索其它可看的书时,我看到了一本小小的书,128开本,大约一寸多厚,是典型的“口袋书”。拿起来一看,是上海古籍出版社出的袖珍本《古文观止》。在我很小的时候,就听说过这本书,但是当时还不知道这个书名的含义。后来慢慢明白,观止是“好到极致”的意思,出自著名的历史典籍《左传》。原文是说,吴国公子季札到鲁国访问,请求观赏一下周朝的音乐,于是鲁国派了乐队为他演奏,季札一边观赏,一边称赞。当看到歌舞《韶箾》时,他发出由衷的赞叹:“德至矣哉,大矣!如天之无不帱也,如地之无不载也!虽有盛德,其蔑以加于此矣。观止矣!若有他乐,吾不敢请已!”成语叹为观止就出自于此。
看来汉语中的观止本来也是用来形容精彩的演出,“观”意为观赏、欣赏,“止”即停止。这与SHOWSTOPPER这个词何其相似,SHOW即表演,STOP即停止,二者加到一起就是令演出停止,后面的ER是英文中名词的常用后缀。看来,中国的古人和西方的圣贤不约而同的使用了同一种方式来表达他们对美好事物的终极赞叹,最由衷的情感和最美丽的语言是跨越地域差异的。想到这里,我如获至宝,决定将“SHOWSTOPPER”翻译为“观止”。
除了封面上列出的译者外,还有很多人为翻译这本书倾注了智慧和汗水。刘颖翻译了第6章,王宇翻译了第1章的前半部分(初稿)。本书原作者Gregg在百忙中回答了我提出的很多问题。我的英文老师Barry October帮助我消除了很多疑问。高端调试网站(ADVDBG.ORG)的很多网友(KernelPanic、neilshu、dos、applepwc、merryzhao等)为翻译这本书提出了很多宝贵的意见,是与他们讨论后,才决定了本书中人名和地名的翻译方式(译为中文,但是在每章第一次出现时在中文后标注英文)。在此向上面的各位朋友以及曾关心过这本书的引进和翻译工作的所有人表示衷心的感谢!
因为译者的水平有限,书中定有错误和不当之处,敬请读者批评指正。
译者序
引言
1. 编码勇士
2. 代码之王
3. 部落
4.死胡同
5. 嗥叫的熊
6. 狗粮
7. 交付模式
8. 死亡行军
9. 臭虫缠身
10. 观止
后记
致谢