微软研发致胜策略-第3节
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
为了强调进度报告的正式性,而把它弄成一件沉重不
堪的工作,这就是主管过度重视进度而忘了自己真正的目
标。结果陷入了流程的陷阱,倒把产品丢在一边了。
只有当您非常清楚您和您的团队该做的是什么,您才能
用最少的时间和最少的挫折去完成项目目标。回头检讨一下
遭遇过的困难; 有没有办法可以改善?有没有更好的方法,
让工作愉快些?至于那些对产品没有帮助的杂务,如果可能
的话,还是免了吧—至少不要把它丢给程序设计师。
永远记得自己真正的目标,然后让团队用最有效
又最愉快的方法把它完成。
23
微软研发·致胜策略
奠定基础下载
被成功的喜讯围攻了?
您可能会有这样的疑问,如果每个人都把自己完成某
件事的讯息发给大家,会不会塞满了每个人的电子信箱。
实际的情形是,每天的e…mail 并不多,因为信息不会送给
每个人,而是只送给同一组的四到五位程序设计师而已。
微软比较大的团队可能有多达50 位的程序设计师,
但是都会分成小组,每一个小组大约有五到六人。每一个
小组负责项目的一部分,有一个明确定义的目标,有一位
组长,也有自己的进程。小组内的程序设计师当然也属于
整个团队,但是以每天的程序开发工作而言,只与四五位
程序设计师有关而已。
事实上,即使是50 位程序设计师的大型团队,每个
人收到的“完成XX”的e…mail 也不多,数量稳定,刚好
够让每个人感觉到工作的进行,绝无爆炸之虞。
明白说出目标
您所认识的人中,有多少位一早起来突然发现奇迹,
选了几门神奇的课程就拿到了计算机硕士学位?有多少人
随便收拾一下东西就搬到了您的隔壁?听起来不太可能
吧。没错,一般人不会兴之所至就去修个学位或搬家,这
24
微软研发
致胜策略下载
些都是计划过的,他们会决定:“我要成为程序设计师”
或是“我要住在迪士尼乐园旁”,然后筹划一番,再采取
行动,才会达到目的。
可是,生活中的确有些事情是不经意就发生了,您可
能靠运气就得到一份好工作,或是福星高照在股市捞了一
笔。很不幸,推出一套软件的目标,并不比“我们要完成
WordSmasher”具体。
不错,大部分的时候您都可以完成目标,但问题是,
在这之前,有多少时间被浪费掉了?虽然您运气好,得到
了一份理想的工作,但之前也许有好几年频频跳槽;或者
您先细细思量自己适合什么样的工作,然后找到符合自己
条件的几家公司寄履历、面谈,会比较稳当?
我所辅导过的案例中,有六个总是在失败边缘挣扎的
团队,他们都有一个共同的特征,就是目标太模糊。其中
一个案例的情况是,小组的任务是做出使用者界面的函数
库,给2 0个左右的其他小组使用,他们做得人仰马翻,还
被别的小组抱怨函数库既笨重,错虫又多,很不好用。
当我和这位组长共同检讨工作清单时,我问他项目的
目标是什么。“为MS…DOS 的应用程序提供像Windows 环
境的使用者界面函数库。”我问他还有什么。
25
微软研发·致胜策略
奠定基础下载
“您的意思是?”
我说,他刚才的答案太模糊,能不能说得更具体些?
“嗯,函数库应该做到零缺点。”
我点点头,再问:“还有呢?”
他想了一下,耸耸肩,答道:“我想不出来了。”
接着,我说明任何函数库的主要目的是存放每位需求
者必要的公用程序,不是大家非得用到的东西是不该在里
面的。他很同意,认为这一点是显而易见的。但当我继续
下面的讨论,我开始不确定他是否真的懂得这一点。我指
着工作清单上的一项,问道:“这是做什么用的?”
“那是Works 小组要求的,是用来。。”
“对其他小组有用处吗?”
“没有,只有Works 小组会用到。”
我指着清单上的另一项,问道:“这个呢?”
“那是给CodeView 小组的。”
“那,这边这一项呢?”
“是Word 小组要的。”
我们一路看下去,我发现他对任何要求都来者不拒。
我想他也知道函数库中应该只有大家都要用的程序,但他
在做决策的同时并没有确实把握这个原则。他的目标只是
26
微软研发
致胜策略下载
“为MS…DOS 的应用程序提供像Windows 环境的使用者界
面函数库”,有没有办法说得更详细些?
目标是为MS…DOS 的应用程序提供像
Windows 环境的使用者界面函数库,只包含对
每个小组都有用的程序。
如果把目标定义精确些,就可以发现很多程序其实是
不应该放在函数库中的。在我们检讨完工作清单后,我开
始研究另一个问题:“很多小组抱怨,函数库中每次一放
入新版的程序,就会发生链接失败,这是怎么回事?”
“喔,那很简单,他们只是忘了修改自己程序中的函
数名称而已。”
这我就不太懂了,于是我请他给我一个实例。他的小
组修改过函数库中的b u g了,或是加强了该函数的功能,
然后就连名称也顺手改了,用另一个更能表达其功能的函
数名称;或者是做了一点小小的修改,然后把函数名称一
道改了,以强调所改的差异部分。
这位组长不了解其他小组怎么会如此大惊小怪,不过
是改个名字而已,非常简单啊。他从来没想过,有20 个
小组要因此检查所有的程序,把所有用到函数库的地方都
27
微软研发·致胜策略
奠定基础下载
改过来;他也没有想到,经常链接失败的函数库是很不好
用的,函数朝令夕改,别的小组会无所适从,根本不知道
程序应该是什么模样才对。
如果这位组长稍微花点时间,从别的组的角度来看看
这个函数库,他就会明白放入新版程序时,与旧版能兼容
是多么重要。大家都希望既用到新的程序代码,希望所有
的程序都能链接成功,没有任何失败。
于是,我们把项目的目标再更具体化一些,那是:
目标是为MS…DOS 的应用程序提供像
Windows 环境的使用者界面函数库,只包含对
每个小组都有用的程序,而且必须和其他部分
的程序版本一致。
现在我们理清了影响这个函数库的重要相关因素,我
和组长一起定出了清楚而明确的项目目标。我们发现,只
要用心考虑各因素之间的关系,考虑一项行动会造成什么
影响,很多细节就会变得显而易见,而且是可以事先建立
正确的规范,避免事后再来花更多时间收拾残局。只要在
做出决定之前想一想,“我要这个函数库能做到什么?项
目的目标是什么?”很多问题都能迎刃而解,组长可以轻
28
微软研发
致胜策略下载
易决定什么是该做的,以及该如何做。
如果做得更彻底一些,组长可以花几个小时,甚至几
天来订出详细的项目目标,这些目标不一定要博大精深,
只要目标能够写下来贴在容易看见的地方,随时提醒、随
时指引,让项目朝着正确的方向进行就可以。
如果函数库中都是全部小组需要用到的,函数库就会
体积小些、精简而标准化,新增的功能特色就比较容易做
出来,开发小组就不必拼命加班做一大堆只有少数人用得
到的函数。想想看,只要把目标稍微理得清楚些,整个项
目的方向就会有惊人的改变。
理清详细的项目目标,可以避免在不必要的工作
上浪费时间。
相互依赖
项目失控最有可能的原因是小组之间工作上的相互依
赖:一方必须依赖另一方把工作做完才能进行自己的工作,
而且若是彼此的配合或沟通不够好,整体工作必然受到不
29
微软研发·致胜策略
奠定基础下载
利的影响,依赖愈多,愈容易失控。使用共享函数库有很
多好处,这是人尽皆知的事。但是身为组长的人,必须衡
量是否该把这部分的程序代码放进函数库,所获得的好处
与必须忍受的缺点—让其他的工作依赖于它,孰轻孰重。
任何领导者,必须牢记并且实践以下的座右铭:
尽可能减少项目中小组彼此间的依赖。
想想看,万一函数库的开发工作进度落后了,又未能
及时采取改善措施,对其他的小组有多大的伤害!负责函
数库开发的小组会拖累大家的进程,使大家不由自主地一
起延误,若不能及时挽救,项目就真的失控了。
另一方面,如果依赖函数库的小组听说开发函数库
的小组无法在规定时间内完成要求的工作,也不该强迫
他们。因为函数库的开发是很多其他工作的基础,绝不
容许发生丝毫错误。如果强迫开发函数库的小组必须在
某个期限内完成过多的工作,等于是不恰当地依赖开发
函数库的小组。
以上所谈的道理似乎简单浅显,但是做起来可不然,
我看过很多重复发生的错误,有许多小组真的耗费了大量
时间在函数库的依赖性问题上纠缠。
30
微软研发
致胜策略下载
努力要有代价
有些管理学的书喜欢把设定目标看成一种神秘的哲
学,让您读起来会有这样的感想:“我不知道究竟为何要
设定目标,只知道经过研究证实,有明确目标的团队,会
比目标模糊的团队更有生产力。”
我不知道这些管理学书籍为什么把设定目标这件事
弄得这么玄,设定目标只不过是把“你要完成的事”用
清晰的语言描述出来,让每个人都有明确的概念。如果
您的目标是买一栋这样的房子: 2 0世纪初期的维多利亚
式三彩建筑,有四间卧室两间浴室,后院还要一尊法兰
西斯雕像,您大概会先看过一大堆的房子,然后才确定
自己想要的是哪一栋。目标越是明确,达成目标的过程
就会越有效率,因为您能马上拒绝不符合脑中未来景像
的事物;明确的目标之所以带来效率,正是由于它能帮
助您挡掉别的项目丢过来的不相干的垃圾,让您专注在
本项目的策略性事项上。
不幸的是,在软件开发过程中,没有任何事件能迫使
领导者停下来想一想,却有庞大的压力迫使领导者没有时
间思考,反而忽略了设定目标这么重要的事。当项目已经
落后了一大截,都快失控了,谁还有时间去设定详细目标
31
微软研发·致胜策略
奠定基础下载
呢?有些主管不设定目标则是基于完全不同的理由:别人
都没有设定目标,我们为什么要这样做?不论理由是什么,
凡是没有明确目标的小组,必定遭遇额外的挫折。
如果您希望项目进行顺利,就一定要花点时间设定详
细的目标,这不是什么有趣的事,但这一两天的功夫让您
的项目不会偏离方向,相对的报酬是非常值得的。组员的
努力应该有代价,而长期加班、饱受压力的小组,多半是
工作漫无目标的后果。
不要因为制定目标需要花很多时间,或是别人
都没有做,就省略了目标的制定。制定明确详
尽的目标所花的时间,绝对会让团队得到更大
的好处。
程序设计的优先考虑
如果您请三位朋友顺路到超级市场帮您买些芦笋、绿
豆、玉米,结果其中一位买了罐头蔬菜因为最便宜,第二
位买了冷冻蔬菜因为最容易煮,第三位买了新鲜蔬菜因为
32
微软研发
致胜策略下载
最健康也最美味,您会觉得惊讶吗?至少,您觉得这样的
事情会发生吗?
这三位朋友买了不同的蔬菜,因为在他们心目中,强
调的优先考虑不同,程序设计也是一样的道理:即使同一
个程序,由三位程序设计师写出来的程序代码必定不同,
第一位程序设计师强调程序代码应该越简炼越好,第二位
认为容易使用最重要,第三位则喜欢追求执行速度。
假若您的产品必须快得让人目不暇给,而程序设计师
却认为写程序的第一要点是轻薄短小,那么做出来的成品
不太可能会使用特别的加速方法,执行速度也不太可能令
人惊喜。假若您的主要目的是在最短的时间内做出高稳定
性的软件,但是您的程序设计师却喜欢追求执行速度,而
不太在乎稳定性,结果一定无法令人满意。如果程序设计
师心目中理想的考虑顺序和项目目标并不一致,想得到满
意的产品就好比缘木求鱼。
项目目标和程序设计的优先考虑并不相同,但二者常
会发生部分重叠,主要是因为项目目标能帮助考虑顺序的
确立,以下是重要的基本观念:
◆ 项目目标引导项目进行的方向。
◆ 程序的考虑顺序影响程序设计的过程。
33
微软研发·致胜策略
奠定基础下载
假定项目的目标是做出世界上最快的M a n d e l b r o t
plotter (一种画几何图形的程序),效率就�