求助于旧ງ代码。新一代的“,开员常常会重蹈旧辙,他们学会从各个角度全。在重写代码以修改数不胜数的错误
中,代码的具体内容
大多,但遗憾的是。
他们知道了他们所编写的代,并且其测试资源一定是
有限度的他:
人们得到เ消息说他们实际上把事情弄得一团糟他们像驾着一辆
飞驰的赛车,不时地撞到เ墙上,不过现在他们总算知道墙在哪儿了
人们认识到เ不管程序是多么地充满想象力或创造力,如果不实用,也只
能忍痛割爱。或者其作者已不知去向。8微软的测
试主管罗格·舍曼,向我们回忆微软历史上这一段黯然无光的日子。可以说,从omega和opus
的反面教训中ณ,并逐渐,人们获益非浅。我认为他们
从aess而不是9๗ord的教训中学到เ了更多的东西。“臭虫”数据库是
如此的硕大无比,而“活性臭
虫”多如牛毛。以至于几乎不可能ม存放在一个服务器,使测试小组几乎无事可干:“急什么?开部门必须处
理完2年的积压待办事项才能ม赶上咱们现在的进度。”测试员几乎ๆ把全
部时间都放在开自动化工ื具上。终于,有人得出结论,说所谓的出品
时间统统都是不现实的,项目也凌乱不堪,我们永远不可能及时推出产
品。这大概意味着所有产品的定义แ也是虚假的。开员不得不专注
于一小部分产品使之ใ性能稳定他们削减了许多开计划,转而务
实,力求产品具有稳定的代码基础并且可能继续开。
部时间都放在开自动化工具上。终于,有人得出结论,说所谓的出品
时间统统都是不现实的,项目也凌乱不堪,我们永远不可能及时推出产
品。这大概意味着所有产品的定义也是虚假的。开员不得不专注
于一小部ຖ分产品使之性能稳定他们削减了许多开计划,转而务
实,力求产品具有稳定的代码基础并且可能ม继续开。
9๗具有
讽刺๐意味的是,微软员工们经常对ibຘm的一些现象冷嘲热讽。比如,ibm聘
用太多的非熟练开员充任程序员微软员工戏称之为ฦ“蠢驴编程”,开
过程过于连贯且封闭等。10微软经理们十分自信地认为微软集中几百个高
级开员所取得的成就ibm得汇合成千上万个员工才可能完成。不过,梅普
尔斯ั看起来与众不同,很有天份,而且盖茨希望开过程安排更为ฦ合理,使
微软能ม有效地构造、推出产品并控制ๆ其质量。所以梅普尔斯理所当然地被
重用了。1้9๗89๗年的一份重要备忘录总结了五月份“休假会”以来的讨论
由戴夫·穆尔组织,使各产品小组勇于采取正确的行动。这份名为“零
缺陷代码”的备忘录,由9๗ord组的一位开经理克里斯·梅森撰写,主要记
录了公司现状及即将采用的新开过程。
在操作系统领域,微软的9indo9๗s同样步履艰难。就如同盖茨的传记作
者在1990年9๗indo9s的第三个版本问世以后所观察到的那样,产品依然显得
粗制滥造:“又一次,微软的测试者们未曾根除问题,留แ下了无穷后患。比
如说,无法将程序安装于某一类型的机器上,网络老是出错,鼠标无法使用,
一种第三方แ磁盘管理软件的数据被破坏,还有普通的假信号收集和文档错
误软件行业中流传着这么一则笑话,说微软产品直至第三版本才开始进
行β测试。”11
盖茨及其他微软员工ื还有另外的隐忧。股票期权已成为公司资金来源的
一个不可或缺的组成部分,但是经常性的产品迟延上市,使微软股票价格狂
跌不止,回升乏็力。产品的迟延与反复也使用户,包括oem与零售商在内,
都疑惧不安,大失所望。有一位股东甚至因微软未能及时推出9๗ord该产品
占微软总销售额的20%而对微软起诉,欲与之对簿公堂。最后,公司在1990
年耗费15๓0万美元才了结此案。该案件控告微软经理人员故意隐匿迟延交
货的消เ息。至于数据库项目,当梅普尔斯198๖8๖年到เ任时,原假定3个月即
告完成。而在一年半以后,他与盖茨取消了这个ฐ项目。12๐
微软备忘录
送达:应用软件开员和测试员
作者:克里斯·梅森
日期:89๗620
主题:零缺陷代码
主ว管:麦克·梅普尔斯,史蒂夫·鲍尔莫,应用业务单位经理和部门领导在5月
12๐日和13日,应用软件开部的经理们与他们的项目领导、麦克·梅普尔斯以及
其他的应用和语言的代表们一起开展了“休假会”活动。我的讨论小组对零缺陷
编写代码的技巧进行了深入调查与研究。这个备忘录就记载了我们大家所达成的
共识导致我们产品错误越来越多的原因是多方แ面的,不知诸位注意到了没
有,事实上,我们的产品正越来越趋于复杂化,但我们并未曾相应地改变我们的
经营管理方法列举ะ出一大堆问题只是为ฦ了让大家更清楚地看到,是我们现行
的管理制度,而不是我们的员工,导致这一系列问题的生我们的时间表设
计和长期以来形成的企业文化鼓励我们花最少的时间来完成一项特性,从不要求
精益求精。只要它能被很好地演示,我们就觉得可以了,所有的人也都这么认为。
于是这项特性就算是按照计划ฐ圆满完成。几个月以后“臭虫”不可避免地出现了,
而我们却认定它与原来的工作毫无关联当不能按时完成时间表规定的任务
时,我们便想走终南捷径产品的日趋复杂怎么会成为培育“臭虫”的温床呢?
许多人也许会大惑不解。很简单,因为ฦ我们不懂得怎么样协调各部ຖ分来进行新产
品的生产,或者修改旧产品我真正的意思是:你们的目标应该是每天生产那
种能产业化的、易于推出的产品人无完人,人类自身的缺点都无法克服,又
怎么能强求代码中没有故障呢?当出现“臭虫”以后,你必须ี仔细分析并立即着
手解决我们每天主ว要的工ื作就是编写代码,而出现“臭虫”就意味我们努力
的失败。有一些质量保证人员,不过没有微软这儿的多,并且它起
着更大的审计监督作用。每每开部ຖ门进行测试之后,质量保证人员总
是说他们弄得很糟糕,全无可取之ใ处。微软不像
ibm这样互相之ใ间对抗
性如此之强。ibm似乎故意采用冲突性管理制ๆ度:如果你让员工显露其
真实偏好,他们各自所代表的利益便也能一览无余,这样你就可以获得
比较全面的信息进行最佳决策。在一定程度上,这可以说是一种很有效