按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
执行步骤、确实执行单位测试,因为如果让任何一个错虫
留到整体测试时才被发现,那不知道要花多少倍的时间才
能找到它并清除它。
202
微软研发
致胜策略下载
一旦错虫进了产品,不只是伤害产品的质量,还会赔
上大量的人力和时间。负责除错的程序设计师一时不能投
入开发工作,要追踪到错虫的藏身之处、加以修正、重新
测试(找错的话再重来) 。。测试结果正确之后,报告错
虫已经清除,再做一次整体测试,确定清除错虫的动作没
有伤害到其他正常的程序代码,然后再来一次回归测试
(regression test),回归测试是不能自动化的,必须由人工
执行并核对所有的功能,完全正确才算真正过关。清除错
虫是多么浩大的工程!
比较起来,在写程序的时候就确定没有任何一个小错
虫,已经是相当单纯的事了。如果程序设计师认真使用除
错工具、如果在严格的单元测试之后,才把程序置入系统,
我上面所说的浩大工程都可以避免。所以,怎么说都是愈
早除错愈划算。
凡是经验丰富、甚少出错的程序设计师都知道,那怕
赌注再高,他们也不敢赌自己的程序毫无错虫。和笨蛋不
同的是,他们绝对不会觉得自己的程序没有错虫了,即使
再熟练,他们还是要经过测试才相信程序的质量,他们会
认为:
203
微软研发·致胜策略
态度问题下载
除非我已经完全测试过,没有错虫了,否
则程序不能算完工。
有这种态度的程序设计师会不会测试过度?我从来没
见过这种事发生,因为是自己写的程序,一定知道什么样
的测试是不必要的。能当程序设计师的人,一定聪明到知
道什么样的行动是浪费时间,但常常没有聪明到知道什么
样的测试才够彻底。其实,不做重复的测试,这很容易,
反而是要保证测试工作毫无疏漏、每一种情况都测到,颇
为困难。
要让每一位程序设计师都明白,写出零错误程序
是很不容易的,所以应该多花功夫用各种方法做
最彻底的测试。
不愿下功夫
每当我审核产品设计和原始程序代码时,我总是自问:
“这个设计或程序出错的机率有多少?”我找出缺点,并
试着评估修改的代价有多大,一旦发现缺点,要么修正它,
204
微软研发
致胜策略下载
要么就是在程序中加入除错码(debug code) 来特别监视这
一部分的程序。
有一次我在审查一个利用一组庞大的数字矩阵来控制
的功能,其实用数字矩阵来执行这个功能是一个很好的主
意,但是我恐怕它容易出错,因为数字矩阵的内容可能根
本就是错的,这个程序恐怕经不起这种错误,所以我要求
程序设计师加入除错码来防止。程序设计师想也没想,脱
口而出道:“写除错码太浪费时间了。”
听到这句话的刹那间,我脑中警铃大响。。
因为这位程序设计师完全没有想到“写除错码的要求
是否合理”,也没有想到“这样做能否符合项目的目标及
工作的优先级”,而只想到要花太多时间,或者是他要付
出多少辛苦。
等这位程序设计师冷静下来后,我告诉他我反对他这
种态度,并解释我的理由,然后请他依次以下列问题来评
估我的要求:
◆ 在程序中加入除错码有没有道理?
◆ 如果有,增加除错码是否符合项目的目标与工作的
优先级?
205
微软研发·致胜策略
态度问题下载
◆ 最后,增加除错码的重要性是否值得花时间去做?
在我们依序讨论过这三个问题后,程序设计师同意加
入除错码,不过还是不太情愿。
3 0分钟后,他拿着加了除错码的程序到我办公室来,
给我看被除错码突显出来的三个潜在的错虫,其中两个很
明显是程序的错虫,只是没有除错码的话看不太出来,第
三个则令人一头雾水,我们两人都看不出来怎么会有这个
错虫。一开始我们猜测也许是除错码本身错了,使得除错
码产生的错误报告也不正确,但如果是这样,那前面两个
错虫就无法解释了,错误的除错码怎么能正确地找出错虫
来呢?我们研究了半天,终于发现原来是数字矩阵中的资
料有错,这个错虫实在太难找了!如果不是利用除错码,
我们几乎不可能找到它。
这位程序设计师学到了宝贵的一课:第一,即使您已
经觉得程序不可能有错,还是值得加上除错码,第二,对
于加上除错码这件事,永远不能认为“太花时间”或是
“太困难了”,这都是借口。
206
微软研发
致胜策略下载
纠正程序设计师以为加除错码会花太多时间的观
念,应该训练程序设计师第一个反应是考虑加上
除错码是否有道理,第二是考虑加除错码是否符
合项目的目标与工作的优先级。
凡事不能的态度
我和很多程序设计师、程序设计师的小组长、项目经
理共事过,他们甚少想出新点子或尝试新的开发策略,因
为他们的想像力在还没开始以前就先封闭了。您有没有看
过那种可怜虫,提出一个新点子但是遭到众人们的重炮攻
击:行不通、上级不会同意,甚至直叱道:“你不能这么
做!从来没有人这么做过!”
这就是“凡是不能的态度”—对于解决问题与创造
力是极大的伤害,我总是尽一切的可能消灭这种消极的态
度。我的部门里有一个不成文规矩,所有的人都不准说
“某件事不可能做到”,他们可以说很难或很花时间,但是
不准说“不能做到”,我的理由是:
207
微软研发·致胜策略
态度问题下载
当某人说“某件事不可能做到”时,他往
往是错的。
很久以前我就学会了不去管别人说什么“不可能做到”
之类的话,说这种话的人大都没仔细想过究竟可能不可能。
当然,您可以举出各种千奇百怪的“做不到”:明天中午
以前修正2704 个错虫。。之类。但是一般人说“做不到”
时,说的通常是正常的事情,千奇百怪的事情不会有人当
问题来问吧?
当您听到别人说“某件事不可能做到”时,请注意他
有没有仔细思考过您的问题,如果他有,考虑一下现在的
状况是否和他所想像的不同,因为世界在变,尤其是软件
产业的世界,也许去年做不到的事情现在只要动几下手就
行了─特别是在内存空间和速度方面,变化更是惊人。
几年前也许有人会认为图形界面行不通,因为太占内存,
会拖垮整个执行速度,在过去这话是对的,但现在早已完
全被推翻了。
有的时候会有政策上或管理上的规则是您“不可能”
打破的。微软的管理者一定会告诉您,不可能有人连续升
级或加薪超过最大限度,但是两项我都例外地做到了,当
208
微软研发
致胜策略下载
然非常不容易,我必须能够证明我的要求是为了公司的最
大利益;因为我的要求合理,所以公司的规则才能为我例
外。这并不是“不可能”,只不过“很困难”罢了。
我认为,人们之所以会说“某件事不可能做到”,只
是由于这件事超出了他们的经验范围。
在1 9 8 8年,我们即将完成Macintosh 版的M i c r o s o f t
Excel 1。5 产品时,高层管理者已经在计划2。0 版了,他们
的目标是凡是Windows 版Excel 能做到的,Macintosh 的
Excel 2。0 版也要完全做到,尽可能沿用Windows 版的程
序代码,不能抓来用的就另外写,但是要看起来都一样。
已经在Excel 项目做过两年的我并不害怕这个任务,我只
是觉得这个计划本身有很多问题。除了外观上的相似性之
外,Windows 的Excel 和Macintosh 的Excel 基本上是完
全不同的软件,同时我也觉得Macintosh 的Excel 其实比
不上Windows 家族的软件,当然后者的团队也比较庞大,
增加的功能也比较多。
微软的Macintosh 版软件还有一个很严重的问题,就
是它无法利用1MB 以上的内存,这是由于最初在设计时
的一项决策所致。因此,软件必须加载到最前面1MB 的
内存才能正常运作,使用者非常抱怨,我明明还有7 M B
209
微软研发·致胜策略
态度问题下载
的内存,为什么它偏偏只肯用最前面那1 M B?这算哪门
子道理嘛!
苹果计算机公司的程序设计师在开发名叫
MultiFinder 的多任务操作系统时,发现Excel 只认得那最
前面1MB (低地址) 的内存。当时的苹果计算机操作系统
对于软件的加载是采用从高地址到低地址的做法,但是他
们发现除非把Excel 放在内存的最底部,否则无法执行,
最后只得来个削足适履:为Excel 保留“特别座位”,刻
意安排操作系统把Excel 加载时放到内存的最底部,所以
他们就笑Excel 是“有恐高症的软件”。他们也要求微软
改善,尽快治好Excel 的恐高症。事实上,微软已经在彻
底翻修Windows 版的Excel,程序几乎是逐行地重写,所
以不论在质量、功能或是维护上,都远胜过Macintosh 版
的Excel。
当我看到Macintosh 版的Excel 2。0 开发计划:大刀阔
斧地修改原始程序代码,解决它的“恐高症”,并且把
Windows 版Excel 上所有的功能和特色统统做出来。我觉
得要我的组员重做一遍Windows 的Excel 小组早已做过的
事,这是重复的工作,况且依照这个计划来看,做好的程
序代码与Windows 小组的并不会兼容,对我来说这是时
210
微软研发
致胜策略下载
间的浪费。
我的看法是,我们何不从现有的Windows 版E x c e l
中修改,开发出跨平台的Excel 呢?在我加入微软以前,
我已经做过好几年跨平台的软件,所以我知道挑战会在哪
里,而且我也确信为Excel 软件撰写跨平台程序代码是可
行的。如果我们让Windows 版的Excel 可以跨平台,那么
M a c i n t o s h中自然就有Excel for Windows 的一切功能,不
必为这些功能重复地写程序,而且1MB 内存的问题也会
消失,将来的维护与更新也不必做两套,这样不是太完美
了吗?
我向上级主管提报了我的建议:放弃2。0 版的设计计
划,改为采用跨平台的设计方案,上级要我花一个星期的
时间评估Windows 版和Macintosh 版的Excel 原始程序代
码,并且就此写出一个规划草案。
一个星期以后,我向上级主管与两组Excel 的部门报
告我的计划,使我惊讶的是,大家都持强烈反对的意见,
一致表示这是不可能做到的事情,虽然我的报告相当简单
明了,但是大家都只去看必须克服的困难,我就在那里被
他们用“凡事不能”的态度(can’t attitude) 围攻。
“马魁尔在作梦。”“Windows 版和Macintosh 版差异
211
微软研发·致胜策略
态度问题下载
那么大,怎么可能跨平台?”“即使我们做成了跨平台的
E x c e l,那也会毁了E x c e l,程序代码会太大、太慢,最后
Excel 的每一项优点都发挥不出来。”“我们没有足够的时
间了,要做也是下一版再做。”难道下一版就会比较有时
间吗?甚至有一位同仁表示,如果有人威胁他非这么做不
可,他就辞职。
我本来预期大家会热烈拥抱这个计划,结果我却是踢
到铁板了,这件事给我一个宝贵的教训:即使是最优秀的
团队,也会对未知的事情恐惧和排斥。
几天之后,Excel 小组与高级主管开会,他们做了微软
内部有史以来第一次的投票表决—我的计划被否决了,
不做跨平台的E x c e l,原来的2。0 版设计计划照旧进行。
不过事情终于有了转折,微软总裁比尔·盖茨看过我
的规划草案后,认为跨平台的观念很有道理,所以我们最
后—就像各位读者如今看到的决定要做跨平台的E x c e l
产品。
接下来的八个月,全体小组的努力有了成绩,跨平台
的Excel 出炉了,原本反对者所持的理由和顾虑,没有一
件发生。跨平台的Excel 的确比较慢,但那是为了突破
1MB 限制的结果,并不是跨平台的罪过。
212
微软研发
致胜策略下载
Excel 小组非常以跨平台的成就为荣,并且与微软的
其他应用软件小组分享跨平台的经验,协助其他的小组开
发跨平台的软件。
不要让凡事不能的态度阻碍了创新。
别给我找问题,给我解决方案
“凡事不能”的态度本身就是问题,它会阻碍人们创
新,或者更糟的是当他们听到某一个需要解决的问题时只
会觉得很烦,非但不去想如何解决,反而怨恨那些提出问
题的智者。您是否有过这样的开会经验,提出建议的人被
老板吼回去:“不要提出你解决不了的