友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
微软研发致胜策略-第6部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
奈尔(McConnell) 所著的《代码完成》(Code plete)一
书中第16章可以说是最完整的了。他除了举出许多用goto
63
微软研发·致胜策略
策略性的作业方式下载
确实可以增加执行效率的实例之外,更进一步告诉读者他
赞同goto 的理由,也证明了部分反对goto 的理由是太牵
强了些;麦康奈尔也整理出很多参考资料,包括爱兹
格·迪杰克斯拉(Edsger Dijkstra) 引发这场世纪大论战的
信件,以及大师唐纳·克努斯(Donald Knuth) 那篇举证繁
多的“ 用goto 的结构化程序设计” ( S t r u c t u r e d
Programming with gotoStatements)。正如麦康奈尔所言,
虽然是否使用goto 的千古难题至今依然在程序设计师的
生活中一再上演,但教科书上的争论,也都还是2 0年前的
东西吵来吵去罢了。
反馈回路
电子工程师会利用一种“反馈回路” (feedback loop)
的电路系统,将输出的讯号再当成输入讯号,反馈给系统
本身。图标如下:
64
微软研发
致胜策略下载
反馈
电路系统
4 输入
1 输出
由于输出不断反馈给输入,这样的电路系统会产生两
种结果:反馈讯号与输入讯号相加,称为正反馈,输出讯
号愈强,得到的反馈愈强,因而导致输出再放大、再放
大;第二种结果正好相反,称作负反馈,反馈讯号会与输
入讯号相减,不断相减的结果,最后会达成一个较稳定的
输出值。从这样相当简单的描述看来,似乎正反馈很了不
起,因为它会自我加强能量,而负反馈则不好,因为无论
它输出的起始值多大,最后都会缩小。事实呢?正好相反,
负反馈远比正回馈有用。
您在听演讲时,可曾听过麦克风尖锐的叫声?足以吓
醒所有的瞌睡虫,这就是正反馈的现象(译注又称作“反
受放大”,在唱KTV 时麦克风绝对不可指向喇叭,就是这
个道理)。麦克风除了接收演讲者的声音外,还接收到喇
叭的放音,不断地反馈循环,最后使喇叭负荷超载,发出
尖锐刺耳的声音,而且频率还愈来愈高。负荷超载
(overload) 就是正反馈常有的问题。
相反地,负反馈则是以输出来抑制回路未来的输出。
其实我们开车就是一种负反馈的系统,先踩点油门,慢慢
加油,发现太快了就带点刹车来减速,如果刚起步就是油
门一踩到底,那就得重踩刹车才能达到正确的速度。也就
65
微软研发·致胜策略
策略性的作业方式下载
是说,输出愈强,需要负反馈的抑制力就要愈大,但也不
是让反馈的力量决定一切,负反馈只是调整用的,好让输
出维持稳定。停车只是刹车踏板的作用之一,让车速保持
稳定也是刹车(负反馈) 的作用。
除了电子工程,您还可以发现有很多各式各样的反馈
回路,包括人际关系和软件开发。有些反馈回路是刻意设
计的,有些则是无意间自然形成的,不论是有意无意的回
馈,都有助于加强对项目的控制,所以,您必须明白反馈
回路的道理,并且善用它。
错虫,就是程序设计的输出产物之一,我们把软件开
发当成电路系统,如果有个负回路可以让错虫导回去抵销
下一个潜在的错虫,那有多好!我们前面谈过的立即除错
就是一个负回路的观念:
要求程序设计师一发现错虫就立即清除。
如果一发现错虫就立即消灭它,它就没有机会影响到
程序设计师的心情,大家可以高枕无忧地继续做下一项工
作。但是如果有个伤脑筋的扩散型错虫,清了这里却错了
那里,再去修改那里却发现还有某处情况不妙,就得坚持
要求这位程序设计师除错到底,把所有的错虫都确实清除
66
微软研发
致胜策略下载
干净了,才可以继续开发工作,否则会造成野火燎原之势,
错虫一发不可收拾。错虫愈多的程序设计师,愈要加强督
促。“立即除错”就是一个最好的负反馈系统,让软件永
远保持无错状态。当然,还有我们前面提过的种种立即除
错的好处—刚生成的错虫比较容易清除、让程序设计师
学习速度加倍、更能准确估算项目的完成日期等等。
反馈回路有利亦有弊,运用不当的话也是会有问题的。
记得我在第1章中谈过的实例吧,那个项目经理总是要求
他的组员写进度报告、开进度检讨会、再做后续报告,没
完没了。这位主管是希望藉此获得项目进度的信息,很不
幸,他的负回路却阻碍了他真正需要的产出,他想了解组
员对于如何解决问题的见解,可惜方法不对,他要求组员
写报告,结果让组员心生反感,根本不想发表意见,他的
制度使人噤声—讲得愈多,你必须写的报告就愈长,没
有人想写报告,所以只好闭上嘴。这正所谓适得其反。
负反馈不是惩罚
惩罚是一种心理上的负向强化作用( n e g a t i v e
r e i n f o r c e m e n t ),惩罚是对员工责骂、训斥与威胁,就像鞭
打马匹使它服从主人的命令。发现有一位组员进度落后了,
67
微软研发·致胜策略
策略性的作业方式下载
不得了!叫过来骂一顿,这就等于是给了他一帖重剂量药
物,逼使他以后不敢对进程掉以轻心。
这种管理手段是该受谴责的,我绝对不鼓励任何人这
么做。想一想我们前面刚讨论过的负回馈的观念,要求程序
设计师立即除错,但程序设计师不需要对除错感到焦虑不安。
由于立即除错的策略,他必须花费好几天的时间解决这个问
题,当然不是他所喜欢的结果,但主管不应该让他因此而感
受到威胁。我们希望任何事情都很自然,没有必要加重组员
的苦恼,绝不是强调谁是老板谁是奴才,谁必须服从谁。
在微软曾经有几位主管,每次一遇到项目进行不顺利,
就把组员叫出来骂,说他们是最差劲的程序设计师,不配
自称是微软的程序设计师,以及等等之类的无聊话。我不
能确定这几位主管究竟用意何在,但是如果他们的目的是
让组员工作更努力的话,那他们的方法可就大错特错了。
我相信您完全可以想像,这种责骂只会激起组员心中的愤
恨、羞恼和沮丧。更糟的是,就我所知这些项目的问题事
实上都出在管理方面,目标不够明确或是野心太大,这些
项目的程序设计师只是倒霉遇上了差劲的主管,其实他们
的能力并不比公司内其他的程序设计师差,因此责骂他们
只会让项目更糟,绝对没有改善的效果。
68
微软研发
致胜策略下载
您必须小心注意,别设置了不当的负回路系统,例如
以程序新增的行数、或新加入程序的数目来决定组员的奖
金,把程序改好则不记入功劳,那么,程序员肯定只爱写
拼拼凑凑的初稿,程序不求精巧,而且不愿认真改善现有
的程序。您原本希望奖励的是生产效率,结果却造成公司
里大而无当的拼凑程序到处泛滥。
我希望您能从以上的讨论中,体会到两点原则,第一,
当您设计一个新系统时,利用负回路的观念来帮助项目进
行顺利;第二,要考虑这种回馈对员工的长期影响,确定
不会造成不良的副作用。
在您的软件开发活动中,小心谨慎地运用负回路
的观念,让项目顺利进行;但务必要注意避免反
馈回路的不良副作用。
愈简单愈好
最后,请您确定您的策略性工作方式够简单明白,让
69
微软研发·致胜策略
策略性的作业方式下载
人容易了解和遵循。
请回想一下我刚才举过的实例:用纸笔写的稿子、咖
啡的浓度、整批阅读e … m a i l、立即除错,这些都是细微的
小事,不会对作业流程发生重大的影响。
人都希望用简单的方式解决复杂又耗时的问题,因为
人们常常被工作之外的程序性事情绊住。如果问一位程序
设计师:“如何避免错虫?”这个简单,但若是要求所有
的程序设计师针对他所遇到过的每一个错虫写出一份报
告,说明如何避免这只虫,那就是另外一回事了,简单的
事情立刻变成大麻烦;如何避免错误的报告应该是主管去
汇总撰写的,组员只要口述检讨就好。这种麻烦像荆棘一
般,会自动蔓延生长,您必须时常大力扫荡一番。
请切记,我们的目的是整体生产力的提升,而不是去
填满繁杂行政程序的各步骤。我们要获得工作方式的好处,
丢弃它的缺点;妥善的策略性工作方式可以达到这个目的。
重点提示
小小的改变可能产生惊人的效果,所以,
请仔细观察您现有的作业方式,会很容易
70
微软研发
致胜策略下载
发生问题吗?耗费很多时间吗?矫枉过正
或防弊重于兴利吗?会不会让人员心生挫
败,而造成生产力低下?如果是的话,请
找出一种简单又有效的方式改善这些情
况。
当您决定采用任何一种策略性作业方式,
请解释您的用意,让组员充分了解是什么
方面应该改善。这种开放的做法会在无形
中教育组员,让组员学会思考,也许,时
间久了之后,他也能想出很不错的点子。
当您针对问题寻求解决方案时,一遍又一
遍地修正您问自己的问题,培养自己能够
提出精确的问题,想出更好的答案。但光
是精确还不够,精确的问题也可能是错的
问题,让您得到没有帮助的答案。您必须
注意,问题是否切中要害,是否是您真正
想达到的目的,是否是您的理想状况。不
要自问:“如何叫程序设计师加班?”要
问:“如何增强工作效率?”
71
微软研发·致胜策略
策略性的作业方式下载
策略愈是吸引人,愈会有多人认同它,甚
至把它当成牢不可破的定律。请提醒您的
组员,再好的策略也不能应付每一种情况,
“避免用g o t o”是公认的好的程序设计策
略,它让程序可读性提高,但是当不用
goto 的结果是可读性反而更低时,您得教
程序设计师如何权衡取舍。
每当您建立一个反馈回路时,请务必考虑
它的副作用和长期使用的效果。最好的反
馈回路不但可以随着时间增强效益,也能
同时减少负面的作用。
72
微软研发
致胜策略下载
下载
第3 章
保持进度
3
Chapter Three
我们都会希望项目按照事先规划好的进程来进行,
但是事实总是无法尽如人愿,有时候项目会有一
点超前,有时候会落后些,但不会与计划差太多。项目的
进行大都是以迂回的方式前进。
即使是进行最顺利的项目,也无法完全按照计划执行。
但是如果您放任项目随意进行,有一天您猛然发现项目脱
轨太远,无法把方向扭过来,剩下的时间也不够,也就是
说,项目完蛋了。项目就像是一枚瞄准月球的火箭,只要
有一点点不够精确,到时候就无法命中目标,差之毫厘,
失之千里,实在不可不慎。所以,绝对不要让项目有一点
点脱轨,不论是多么小的偏差,倘若您没有立即修正错误,
它很快就会愈跑愈远、无法抓回。
聪明的主管懂得这个道理,他们会经常注意项目的进
度,随时修正方向,保持项目不偏离计划进行。本章将介
绍一些很有效的策略,帮助项目保持进度。
高架道路
我一直相信,项目之所以脱轨,主要的原因在于人们
并未认真思考如何使项目保持进度、顺利前进。如果没有
未雨绸缪,只是坐待问题发生,到那时候就太迟了。一个
74
微软研发
致胜策略下载
月前没有花3 0分钟思考这个问题,现在得浪费几小时或几
天的时间去修正。这就是所谓的“被动式行动” ( w o r k i n g
on reaction),而很多主管都是如此。
解决这种被动式行动的方法,就是化被动为主动,发
掘潜在的问题,并设法避免。以我们在第一章的搬移房子
的比喻来说吧,假定拖车原本缓慢而稳定的行驶,突然在
转角边上动弹不得了,原来是有个高架道路拦住了去路,
这下子只好掉头绕道行驶,结果前方又多了一些电话线,
真是气死人了。本来在地图上看来都是平路,上路了才发
现是这么崎岖,不仅要爬坡,还加上坑洞,怎么办呢?事
先没有勘察好路况,没有准备好应付路况的辅助工具,临
时手忙脚乱不说,还得老天保佑车子别翻了。要是主管用
心做好“向前看”的工作,事先把路铺好,把障碍扫除掉,
这些麻烦都不会发生。
主管不愿意认真地“向前看”,因为不看似乎比较轻
松。您可曾听说过某个主管在面临一个始料未及的障碍时
说:“啊,要是我事先多花点时间想想,就可以避免这件
事了。”以我的经验,很少有主管会这样承认的,反而是
在意外出现时不以为意,他们认为,意外难免发生,很正
常嘛。
75
微软研发·致胜策略
保持进度下载
您得驱逐这种被动式的想法,要积极防范意外才行。
有很多方法和技巧可以训练自己“向前看” ( w o r k
proactively),但总结起来不过是一句简单的要诀:
定期暂停手边的工作,然后往前思考,随
时做必要的修正,以避免未来的大障碍。
只要您懂得向前看,要事先避免大障碍并不困难。比
方说, Windows 版的软件完成后,自然得继续开发
Windows NT 版,或是准备一些示范用的软件。这些事看
似小,但是如果不及早做出相应措施,后面的事情就很难
收拾。就好像开车进入山区之前先把油箱加满是一样的道
理,小小的动作可以避免在山区里加不到油而必须跋山涉
水的窘况。
我已有十年以上的习惯,每天花1 0到1 5分钟思考下面
的问题,并且列出答案:
有什么事情是我今天能做,而且可以帮助
项目在未来几个月内顺利进行的?
这是一个十分简单的问题,但是如果主管定期用它来
检讨、思考,必定能想到许多保护项目不受意外打击的妙
76
微软研发
致胜策略下载
方。请不要把这个问题的答案想得太复杂,事实上,答案
应该简单到能在几分钟之内写完,通常是这样的:
◆ 订购MIPS 和Alpha 处理器
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!