微软研发致胜策略-第10章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
你无法让每个人都满意
身为主管,您一定会面临各种要求,为了工作的效能,
90
微软研发
致胜策略下载
您得学会在适当的时机,适当地说“不”。无论您说得多
么委婉,对方都不会喜欢被拒绝,他们可能会认为你错了,
然而,您必须了解自己无法让每个人都满意的事实,您要
做的是协调,而不是完成每一件事,那是做不完的。
如果您负责做共享函数库,某天某个小组要求增加一
些函数,这些是只有他们需要的,如果您说“不”,他们
会很难过,如果您说“好”,其他的小组群起抱怨函数库
怎么体积变这么大。这是永远无解的矛盾问题,谁教您负
责的是共享函数库呢。
当您碰到互相冲突的需求时该怎么办?有没有比较有
效的办法?这就是我在前面强调详列项目目标的用意之一
了。您的目标既然是提供对每个小组都有用的函数,不符
原则的需求就应该婉拒。当然您一定会受到抱怨,您不妨
向需求小组解释原因,万一您今天破例做了“专用”的函
数,大家都会来这样的要求,最后函数库成了大杂烩,就
失去了函数库的意义,这不花您太多时间的,对方再怎么
不悦,您还是要耐心解释,问题总得交代清楚。
每个人都不愿意被别人讨厌,这是人类的本性。但是
身为软件开发的主管,您就必须掌握这个道理:如果您希
望每个人都满意,最后您会焦头烂额,什么事都做不成。
91
微软研发·致胜策略
保持进度下载
以我的经验,人们虽然不喜欢自己的需求被拒绝,但
如果您有充分的理由,他们还是会了解的,并且感谢您的
用心。
不要为了讨好别人而伤害双方的工作进程,您永
远要根据自己的目标,做适当的决策。
如果不是函数库项目
我以函数库的实例讨论互相冲突的需求,您可能不是
负责开发函数库的,无论您负责的是什么项目,我们所讨
论的观念和做法几乎都可适用。基本上,您难免会遇到外
部的要求,提出需求的人甚至可能是行销小组,或是来自
使用者的反应,即使是极端机密的软件开发项目都可能有
人来插上一手,您必须学会摆平冲突。
上级的建议
一位主管在做任何决策时应该以项目目标为最大的考
虑,不要企图讨好别人,尤其不要盲从上级提出的建议。
92
微软研发
致胜策略下载
我不是主张反抗权威,而是强调上级也是人,一样可能犯
错,他们的建议不一定是好的,尤其是他们可能不了解您
的目标、决策优先级,以及您所必须面对的技术挑战。如
果您想做一位出色的主管,您必须非常认真地衡量所有的
建议,不论是谁提出的,您都得确定其符合项目目标才能
采纳。
如果上级要求您做一件事,而您认为不妥,那您应该
在着手进行之前向上级说明您的想法。也许,上级会同意
您的想法而放弃他的建议,也许,上级会赞许您的想法,
但仍请您考虑他的意见。不论结果如何,起码经过沟通对
彼此都有帮助。
有一次,我查阅一位资深程序设计师的程序。对其中
有一些很明显属于设计上的缺点我很惊讶,我不太相信这
么一位优秀的程序员会写出此等程序,于是我问他为什么
这样设计。
“是柯比设计的,我只是照做而已。”柯比是他的项目
经理。
我觉得好奇的是他自己的看法:“你自己觉得这样设
计好吗?”
“如果是我设计,不会用这种方式。”
93
微软研发·致胜策略
保持进度下载
“你在写程序的时候,应该能感觉到这一点吧?”
他轻描淡写地说是的,并且耸耸肩道:“但我刚到微
软不久,柯比是我上司,我认为他应该比我有经验,他这
样设计也许有特别的用意。我可不想把事情搞砸。”
事实上,柯比并没有比这位程序设计师有经验,他只
是比较幸运,在微软待得比较久罢了。
对于这个观念,我还有另一个很有意义的实例。当时
我领导Microsoft 680x0 的交叉发展系统(在Macintosh 和
PC 之间使用),我的顶头上司,也就是有权变动我计划的
人,名叫莫特。每隔一段时间,莫特就会到我的办公室来
问我有关680x0 的C/C++ 编译器项目进展的问题。他每
次来必定会问一个问题:
“FORTRAN 进行得怎么样了?”
莫特很清楚我们根本不做F O RTRAN 的编译器,但
是他喜欢F O RT R A N,而且他相信一个好的M a c i n t o s h版
F O RTRAN 编译器一定很有销路。事实上,如果把我们做
好的C/C++ 编译器修改成F O RTRAN 编译器并不太难,
我和莫特都知道,微软开发编译器都是遵循大部分教科书
所描述的三阶段方式:
1 。前端处理(front end) :把高级语言(如C / C + +,
94
微软研发
致胜策略下载
FORTRAN 等) 解析成中间代码。
2。 优化( o p t i m i z e r ):对中间代码做执行时间的优化
处理,诸如程序代码搬移、调整,同次表示式消去等
等。
3。 后端处理(back end):从经过优化的中间代码,产
生最佳的执行代码。
当然,实际工作比这三点略述要复杂得多。但是由这
些您可以看出来,要推出一个Macintosh 用的编译器,只
要重新写一个后端处理,就可以把英特尔80x86 的编译器
转成摩托罗拉680x0 的编译器。
从理论上说,一旦我们完成了680x0 的后端程序,我
们就可以用它来把所有的英特尔80x86 的C / C + +、
F O RT R A N、Pascal 的后端处理替换掉,这样就做出摩托
罗拉680x0 的C / C + +、F O RT R A N、Pascal 的编译器了。
这就是莫特对F O RTRAN 特别有兴趣的原因。然而事实
上,我们要做F O RTRAN 编译器的话,必须把后端处理
完全做好才行,当时我们只完成了95% 的C / C + +编译器
后端处理。
每一次莫特问我有关F O RTRAN 的问题时,我的回
答也是千篇一律:“我们还没有开始。”然后再补充道:
95
微软研发·致胜策略
保持进度下载
“主要是因为F O RT R A N编译器的关键组件—后端处理,
尚未完成的缘故。”
莫特也许是对的, F O RTRAN 编译器在M a c i n t o s h上
也许会有很好的市场,但是他忽略了项目最优先的目标。
就算是有再好的市场,也实在没道理要把做了一半的项目
停掉,更何况他自己也认为C/C++ 编译器的市场潜力应
该比F O RTRAN 更好。要不是莫特的个人兴趣,我不会
和他讨论这么多次,他的个人兴趣已经蒙蔽了他身为主管
的智能。
您必须保护项目不受外界的左右,尤其是当这种操控
来自特权人物之手。像莫特这样,想法明明是错的,您却
得服从上意。如果是我刚开始担任主管时,我会向压力低
头,服从上级的意思,现在我学会了独立判断,不论是谁
的建议或要求,我一定会先问自己:“这样做对产品有没
有帮助?对于目标的完成有没有策略上的价值?这样做是
否会使我忽略了更重要的事情?这样做的成本和风险会不
会太高?”您必须好好想这些问题,答案如果对项目无益,
您就不应该照做。
96
微软研发
致胜策略下载
是您在为项目负责。
不要让任何人的建议阻碍项目的进行,包括上级
的建议。
真正的成本
为什么莫特会认为M a c i n t o s h上的F O RTRAN 编译器
值得开发呢?是因为很多人想买吗?还是因为F O RT R A N
对Macintosh 有特殊意义呢?其实都不是,真正的原因是
他自己对F O RTRAN 情有独钟,他希望能够得到一份免
费的Macintosh FORTRAN 编译器,如此而已。
我对能附送那些副产品的兴趣,绝不下于任何人。那
是一种欣慰的感觉,因为自己是一位优秀的软件开发专家,
才能有这么多精彩的创意,额外做出这些副产品。但是这
些副产品对公司或产品都没有策略上的价值,充其量只是
一种消费者回馈。如果它们有策略上的重要性,早就放在
产品设计的计划里面了。
有趣的是,我们也可以把C/C++ 编译器的前端处理
换成Pascal 的,那么我们又多了一个M a c i n t o s h的P a s c a l
97
微软研发·致胜策略
保持进度下载
编译器了。但我从来没打算这么做,虽然我们都知道
M a c i n t o s h曾经有很长的一段时间只有Pascal 程序,苹果
计算机所有的手册和范例程序都是采用P a s c a l,而且苹果
计算机的Pascal 编译器市场并没有太大的竞争。现在的情
况则完全改观了,苹果计算机如今已是C/C++ 语言的天
下。但是如果我们要在C/C++ 编译器产品之外附送一种
语言的编译器,那Pascal 绝对比F O RTRAN 要适当。
莫特对F O RTRAN 编译器有兴趣,纯粹因为它免费,
而不是基于任何策略性的考虑。但是F O RTRAN 编译器
真正的成本可未必那么便宜,如果我们要把F O RT R A N
编译器引进市场,我们要做的事情是:
◆ 完成后端处理,目前剩下5% 尚未完成,这大概要
花几个月的时间。
◆ 想办法让F O RTRAN 和M a c i n t o s h的操作系统交谈,
因为M a c i n t o s h向来是用Pascal 写的,而Pascal 的
记录,FORTRAN 无法支持,所以这方面有个鸿沟,
需要另外设法跨越。
◆ 撰写手册和线上求助的文档。
◆ 完整地测试F O RTRAN 编译器,包括它的链接能
力,除错工具,以及其他的各种辅助工具。
98
微软研发
致胜策略下载
其实还有一些额外的行政工作也是不可或缺,例如训
练产品支持小组等等,以上只是几项开发性质的工作。现
在您觉得F O RTRAN 编译器很便宜吗?好吧,即使前面
三项可以利用C/C++ 编译器的东西过来改一改,但测试
工作没有快捷方式,它可是完全无法打折扣的,任何产品
都要有同样严谨的测试工作,F O RTRAN 编译器必须通过
和C/C++ 编译器同样一丝不苟的测试程序。
所以F O RTRAN 编译器绝对不是白吃的午餐,虽然
比起完全从头开始的C/C++ 编译器,成本低廉得多,但
是“便宜”可能仍然是高价—只要问问最近买过二手波
音747飞机的人就知道了。
免费的软件或功能其实并不存在。想想看,您每次听
到广告中的“免费”,内心的反应恐怕是抗拒多于接受吧,
感觉上,这就像是听到“参观某工地表演就可以免费参加
夏威夷六日游大抽奖”一样。大部分时候,这类的免费软
件都没什么重要性,只有极少极少的例外会中大奖,如果
您希望确实掌握项目朝正确的方向进行,就请专注在有策
略价值的工作上,不要被一些花俏的噱头分心。
99
微软研发·致胜策略
保持进度下载
天下没有真正免费的软件
炒鱿鱼宏
不只是上级会提出不合理的请求,行销人员也可能会。
有时候为了争取一张大订单,行销人员会为这位大客户要
求一些匪夷所思的修改。您必须捍卫您的产品,避免被这
些不正常的杂音所扭曲。
当我负责Microsoft Excel 时,行销人员要求开发一个
炒鱿鱼宏( L AYOFF macro),而这个宏的内容您大概已经
猜到了,就是一份名单,用随机的方式挑出