按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
重复就是浪费
前两节中我提过的那位程序设计师,在为Excel 开发
“键盘驱动菜单” (keyboard…driven menu) 时,另一位程序
设计师也正在为Macintosh 版的Word 写同样的程序,两
者相距仅十步之遥。虽然我向Excel 的程序设计师提过这
件事,也分别向Excel 和Word 的项目经理商讨过,希望
避免性质重复的开发工作,但是没有实际效果。两边的
程序设计师仍然分别写自己的键盘驱动菜单,且都正确
执行,两个都很完美,但使用者界面就是截然不同。我
认为这是非常可惜的,我觉得我们错失了一个让Excel 和
Word 的使用者界面互相整合的机会,这样可以减少一半
的开发时间,也可以建立起一套菜单的函数库,顺便可
224
微软研发
致胜策略下载
供其他的应用软件小组使用。因为他们的态度是“这东
西不是本组写的”,所以一定不适用,以致没有人在意我
们的程序设计师在做重复的工作,结果是无法产生标准
的微软菜单惯例。
我个人对开发工作有一个原则:凡是别人写好、测试
通过,而我可以使用的程序,我一定二话不说就把他的程
序抓过来用。基于这样的态度,我在开发自己的程序时,
总是尽可能为潜在的使用者设想,写出一个别人可以使用
的程序。我虽不能把程序做到完全的可移植性,但我尽量
做到“让程序代码可以重复使用” (reuse),在其他条件相
同时,我永远选择让别人分享我程序的做法。
在Excel 的最早期版本中,有一位程序设计师做出了
一个很棒的功能:打印预览(print preview),让使用者在
打印之前,预先瞧瞧一下大概的样子。这个功能设计得非
常具有直效性,可以一页页往前或往后翻,而且连图形也
能显示出来,还有整份文件的预览。
这个打印预览受到使用者的极大好评,因此M a c i n t o s h
版的Word 小组奉命在Word 里也做一个打印预览的功能。
他们做得比Excel 的打印预览精致得多,相形之下,Excel
的打印预览反而显得粗糙,不够精良。所以我也奉命将
225
微软研发·致胜策略
态度问题下载
Excel 的打印预览改得更完美,要像Word 一样好得令人
刮目相看。
我的第一个想法是放弃Excel 的打印预览程序,而把
Word 那一套拿过来用,这样不但减少开发的人时,而且
可以使Excel 和Word 两种产品的使用者界面更统一。当
我把这个想法告诉一位Word 的程序设计师,他告诉我他
们的打印预览程序与Word 主程序是紧密结合的,只适用
于Wo r d,别的产品恐怕很难引用;他说他可以修改这个
打印预览程序,但是他从来没想过我们会想要这个程序,
毕竟Excel 已经有了另一个打印预览程序。真是令人伤心,
我不能用他们做得这么棒的打印预览程序。
最后虽然我把Excel 的打印预览修改得更精致,功能
更强,但还是Word 的效果比较好。更令我沮丧的事情是,
由于Excel 的打印预览具有可移植性,反而其他的应用软
件都是使用Excel 的打印预览程序,而非Word 的打印预
览程序。
我曾说过,撰写新功能最好的方法是引用别人已经写
好又测试过的程序,也就是程序代码的重复使用( c o d e …
r e u s e )。虽然大部分的程序设计师都很认同这一点,但是
他们潜意识里觉得别人写的程序很难拿来使用。
226
微软研发
致胜策略下载
为了增加程序代码的价值,程序设计师应该培养新的
态度,注意自己写的程序是否具有“可再利用性”,要满
足这一点,程序设计师就会尽量减少子程序与主程序之间
的关连性,让子程序独立,才能被别人使用。这个问题就
和避免直接使用global 变量一样,有时候的确无法避免,
但还是有技巧可以排除这个问题。
程序设计师应该随时自问:
这段程序代码是否对别的(或是未来的) 程
序有用?
或是反过来问:
这段程序代码是否确实只有我一个人需要,
别人不太可能引用?
如果“可再利用性”的答案是肯定的,这个程序就应
该写成很独立的方式。像键盘驱动菜单或打印预览这类的
程序,当初就应该做成独立的、可再利用的程序。也就不
会造成现在Word 和Excel 得做重复的工作,但没有双倍
的效果。
227
微软研发·致胜策略
态度问题下载
将程序的可共享性当作优先考虑的目标之一,
否则程序设计师将经常做重复的工作。
杠杆的效应
如果您的部门想要比别人更成功,就得学会善用“杠
杆原理”,就是设法使投入的有限力量得到更大的报酬,
也就是事半功倍的意思。每位组员都应该牢记这个原则:
充分利用现有资源或创造新资源,以便从
每一项工作中获得更大的价值。程序代码的再
利用,就是很好的例子,当然,还有其他的地
方可以运用“杠杆原理”。
我在第6 章提过训练新兵的原则就是一种“杠杆原理”
的运用,您让新加入的程序设计师优先学习公司内使用最
广的技术,最后再让他接触只有本项目会用到的技术,如
此一来,这位程序设计师对公司的价值就会被提升了。对
您的项目来说,新加入的程序设计师学习的先后顺序都无
228
微软研发
致胜策略下载
所谓,但是万一这位程序设计师被调到其他的小组,这个
顺序就很重要了,因为结局只有两种:程序设计师很快进
入状况、或是完全重头开始学习。
只要您用心发掘,大部分的工作里都有杠杆存在的。
举例来说吧,有一回,我在审核使用者界面函数库时,技
术经理拿了一份加强该函数库功能的提案列表,这些功能
几乎涵盖了所有小组的需求,看起来很不错。我对他说:
“这看起来很不错,但是某些函数库的界面似乎和
Windows 的不太一样,你有没有参考过Windows 手册所
列的函数库?”
技术经理似乎有点冒火:“马魁尔,这个函数库可不
是给Windows 用的,只要我们的函数库好用,谁在乎
Windows 怎么呼叫函数库,我觉得要我去看Windows 参
考手册是在浪费时间。”
他说得很对,我这才明白我根本没有向他解释过,为
什么我认为我们的函数库界面应该和Windows 的一样。
于是我说:
“对不起,我想我懂了。你的意思是说,只要我们的
函数库做得好就行了,至于函数库的界面是怎么样似乎是
次要的,可以和Windows 的函数库界面相同,也可以不
229
微软研发·致胜策略
态度问题下载
同,对吧?”
他点点头:“对呀。”
“请让我问你一个问题,现在有2 0个小组在用你的函
数库,你想他们会不会调去做Windows 的软件呢?”
“没错,是有可能。”
“我想也是。那么请你告诉我,那些程序设计师被调
去Windows 的项目时,会很容易学会使用Windows 的函
数库吗?”
他脸上露出恍然大悟的表情:“只要我们把函数库的
界面做得和Windows 的一样,那就非常容易了!等等,
你的意思是说,我们顺便教他们Windows 的程序设计?”
“完全正确,而且你想,这样做公司会需要付出什么
额外成本吗?”他想了一下。
“我想,什么都不用,只要我去读Wi n d o w s参考手册
就行了。”
“没错。另外有件事也请你回去时顺便想想:你会永
远做当这个函数库的技术经理吗?包括你,也可能调到
Windows 的项目呢?”
您可能从来没想过,像“为函数命名”这样简单的事
情竟然也能有杠杆原理,虽然是这样小的事情,却也能导
230
微软研发
致胜策略下载
出不少连带的利益。
人们之所以无法创造出新的杠杆,是由于这需要对未
来有洞烛先机的远见和很大的信心,相信我,现在您所创
造的价值,将来必定有所回报。即使您现在创造的资源未
必能在预料中的将来派上用场,但是现在的世界变化这么
快,所以,您应该保持乐观和健康的心态,随时为未来做
好准备,如果您有各项齐备的资源,需要时便立即可用。
我一向相信这个真理:
如果您创造了一项资源,并且让别人知道,
那么总有一天会派上用场。
当我开始做Macintosh 的交叉发展项目( M a c i n t o s h
cross development project) 时,应用软件和程序语言这两个
主要的需求部门都将这个项目视为仅限内部使用,但我的
目标却希望将这个发展系统架构在微软已上市的8 0 x 8 6
MASM 产品上,也就是拿80x86 版的软件来修改,这样做
的好处是,我们交叉发展系统就能随着80x86 MASM 做同
步改良。这又是一个杠杆的实例,而我打算把它发挥得更
淋漓尽致,因为我相信其他公司的程序设计师如果有了我
的交叉发展系统,就可以一边写Windows 的应用软件,一
231
微软研发·致胜策略
态度问题下载
边顺便做出Macintosh 版。当时大部分的人都认为我疯了,
但是我非常地肯定,交叉发展系统不应该只限微软内部使
用,而应该是个可以上市的产品,如果我们不在一开始时
就认清这一点,将来我们的决策都很可能方向错误。
所以我在设计会议中常常主张,某个方法确实适合内
部使用,但如果我们想把交叉发展系统当作正式的产品,
就不应该这么做。
“但是我们本来就没把它当成正式产品啊。”有人会这
么说。
我会说:“没错,如果你从来没想把它当成正式产品,
它就永远不会是。但是如果它的设计和品质够好,市场上
有需要,为什么它不能既当作内部使用、也同时被当成产
品卖?”
事实证明,大部分的情况是我们不但能够想出一举两
得的方法,还能做出更好的设计、花更少的时间去开发。
目标提高迫使我们必须思考得多一点、难一点,有时候反
而想出了更好的设计方式。也有些时候,我们会发现如果
仅供内部使用的话比较容易开发,坚持把它做成产品的话
时间上会花得太多,那我们就暂时做个内部使用版,等将
来要将它商品化时再来修改这一部分。
232
微软研发
致胜策略下载
每当上级主管关心我们的项目状况,我除了演示文稿
项目进度外,都会向他们说明我的策略是尽量以将来要商
品化为目标。上级主管唯一关心的,也是我所认同的,就
是不要花时间去做将来用不到的东西。
没有人相信交叉发展系统终有一天会商品化。但这一
天还是来了,微软宣布了“四海之内皆视窗” ( Wi n d o w s
Everywhere) 的计划,就在刹那间,我的项目就成了微软
在非80x86 平台的Windows 解决方案,Macintosh 的交叉
发展系统正式宣布将成为一项产品,并列入非常优先的地
位,公司加派更多的程序设计师进来。
从您的每件工作中创造最大的资源,
不管是利用现有的杠杆,或是创造新的杠杆。
善用资源的态度
我一直鼓励您在任何时候,都尽量以创造资源的态度
做事,这是我在本章中所倡导的观念。只要稍微改变一下
态度:不是把上头交办的工作完成就算了,而是去思考哪
233
微软研发·致胜策略
态度问题下载
里可�