友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
合租小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

微软研发致胜策略-第5部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!


程序设计师应该把找错虫当成一件很重大的事,必须
立即采取相应的行动,不为任何理由而耽误,就像咖啡壶
里的水位一般。要求错虫随时发现随时改,等于是在开发
过程中引进一个小小的质量管理机制,多方的防微杜渐,
保护产品的正确性,这种策略还有其他的好处:
◆ 以事实向程序设计师耳提面命,错虫是一件严重的
51
微软研发·致胜策略
策略性的作业方式下载
事情,不可轻视忽略,也无法逃避,还是勇敢面对
它、尽早解决它最好。
◆ 自己的错虫,自己负责清除。不该是小心翼翼的人
去帮助散漫随便的人收拾残局。老是出错虫的程序
设计师,会因为必须清除错虫而十分辛苦,而没有
错虫的程序设计师则进度稳定,这样才公平。一方
面也是鼓励程序设计师,要非常小心谨慎,一个错
虫的代价常常是很高昂的。
◆ 如果一发现错虫就立刻清除,就不会漏掉重要的
错虫,也不会到头来赫然发现好长一串错误清单,
以致到了期限前才发现项目的延误。也就是说,打
击恶魔要趁早,趁它还没有长大到无法收拾以前就
把它消灭掉。
◆ 最后,也是最重要的一点,如果您要求程序出现
错虫时立刻清除,那么程序设计师的功力高下便可
立见分晓,如果有人的进度一直落后,这等于是警
告您—他需要加强训练了。
软件开发过程中,有非常多的小事情会影响整体项目
进行的顺利与否,以及产品的品质,绝对不可因为事情
“小”就不予重视。咖啡壶上的那一条小小横线就是例子,
52
微软研发
致胜策略下载
您可以看出来它的影响有多大。您可以想出更多让项目顺
利进行的方法,抓对要点的小小改变可以带来大效益,好
好运用这个原理,您会受用无穷。
妥善运用可以促进开发成效的策略性工作方式。
电子邮件的陷阱
e…mail 实在是个很棒的工具,我简直无法想像没有它
的话,工作效率会变成什么样子。但是我不得不说,水能
载舟亦能覆舟,如果e…mail 被不当使用,它也会伤害生产
力。
我常发现新进的程序设计师喜欢让e…mail 打断他们
的工作,我不是指他们发了太多的e … m a i l,而是只要有新
的e…mail 进来,他们就停下手边的工作,看看有什么新鲜
大事发生了。新进人员一般不会有太多e…mail 必须回复,
大部分的e…mail 都是被动性的信息,像微软股票的收盘价、
同业的重大讯息、当天的头条要闻等等。
新进人员常常每隔5 分钟就看看e…mail 信箱,这样
53
微软研发·致胜策略
策略性的作业方式下载
他们一天下来可能一件事也做不成,因为写程序的工作是
无法分割成n个5 分钟的片段去完成的。为了解决这个问
题,我只能不断告诫新进人员,回复e…mail 要分批做,不
需要实时就做:早上一进公司时看、中午休息时看或是下
班前看一下,都可以。e…mail 的目的就是要让程序设计师
思绪不被打断,所以不必有事没事就瞧瞧它。
每一位程序设计师看的信息数量都是相同的,这是固
定的。您可以把e…mail 处理得很有效率,也可以让工作进
行得更有效率。
学习前人的经验
我经常用很多例子,向程序设计师或主管们说明策略
性工作方式的重要,小小的要领可以带来重大的益处,有
些人总是不相信,他们认为工作方式是拐杖:“你是在欺
骗那些人去倚赖经验,一旦他们换个角色,他们就没有学
习能力了。”
由于我深信策略性工作方式的好处,故而我也非常
在乎这些人的反应。我相信心存怀疑的人在读完本书之
后,也会迫不及待地想要运用更好的技巧来改进工作效
能。我认为本书和书中的经验法则并不会阻碍一个人的
54
微软研发
致胜策略下载
学习潜力。
最美妙的是,如果有完整设计的工作方式,任何小组
成员(不论他是新进人员或由他组调来的人) 都能立刻用最
有效的方式工作,不必费神去了解或摸索这种工作方式背
后的意义。我的建议是,对于每一项工作方式都详细解释
它的用意,您为什么如此规定,您期望组员做到什么。适
当的时候,组员自然会明白并感激您的巧妙安排,而且更
服膺这些道理,甚至自己也开始思考如何改进工作效能。
因此,您应该鼓励您的团队成员用心了解与改进工作方式。
不要把策略性工作方式当作训练的教条,应该向
组员解释这些工作方式的内涵与用意。
好方法要让大家分享
设计完善的工作方式是很有价值的,因为它很自然地
促使人们做对产品最有贡献的事情。策略也是非常重要
的,因为它是许多经验和思维浓缩而成的计划,让每个人
都了解它,并且付诸行动。将这样的策略或方法集合起来,
55
微软研发·致胜策略
策略性的作业方式下载
能够让个人的生产力和工作质量提升到更高的境界。
身为一位主管,您应该鼓励组员提出改进工作效能的
建议。以我来说,我对于软件的第一优先考虑点是没有错
虫,当然,我们都知道这是说来容易做来难的。即便如此,
我还是认真观察那些较少出错虫的程序设计师,研究他们
为什么比较能避免错误,我的结论是他们比较懂得在容易
出错虫的地方特别小心,懂得避开程序设计时常见的盲点
或陷阱,也比较懂得用有效的方法抓虫。换言之,他们懂
得写出无错虫程序的方法。
为了鼓励程序设计师学到避免错虫的策略,每次他们
在追查错误原因时,我都会问这两个问题:
如何避免这个错误?
我如何以更简单(或自动) 的方法发现这个
错误?
如果程序设计师经常思考这两个问题的答案,他渐渐
就能学会更高明的程序设计技巧。有些程序设计师是同样
的错误一再地出现,显然就是主管没有鼓励他认真思考这
两个问题,从错误中汲取教训。
当然,您的询问是否切中要害,也引导着组员的思考
56
微软研发
致胜策略下载
方法是不是问题的要害。您可以经常问自己这类的问题:
为什么进度总是一再落后?
有什么办法可以避免将来再发生进度落后?
虽然这两个问题很类似,都在问进度,但我想您的答
案不会相同吧。第一个问题着重在原因:互赖性的工作太多,
工具太难用,老板是个白痴,老在阻碍工作的推动等等。第
二个问题在问未来的预防方法:减少互赖性的工作,请购更
好的工具,与老板加强沟通,争取他的配合等等。这两个问
题的方向不同,第一个是探究原因,第二个是未来的改进方
法,因此,这两个问题的回答也一定不同,第一个导引出抱
怨,第二个才导引出解决方法(attack plan)。
即使您的问题非常好,完全正中核心,也未必能导出
正确的策略。项目的目标会因为定义精确而获得更好的效
果,问题也是一样,问得愈精确、问题愈有力,让我们来
看看这个问题:
如何保持每次都如期完成软件?
有些主管问这个问题的后果是逼迫组员加班;有些则
是以分红或主管掏腰包买晚餐,或是安排一场热门的夜场
57
微软研发·致胜策略
策略性的作业方式下载
电影外加爆米花(别只管笑,真有这样的事儿)来贿赂组员
加班。
但是,主管可以把问题问得更精确、更有建设性:
如何在不加班的前提下,而能如期交差?
这回的答案可不能一样了,因为逼迫加班和利诱加班
都被排除在外,既然不能增加工作时数,于是主管不得不
想法子加强效率,去找寻更有效的解决方案。为了不加班,
也许得雇用更多的人手,这是解决方案之一,但公司绝对
不会喜欢,至少这个方案会摆在最后再来考虑。这样吧,
我干脆再把问题说得更精确些:
如何在不加班、也不增加人手的前提下,
依然如期完成软件?
这可就真的迫使主管来点真正有创意的思考和认真检
讨工作本身值得改进的地方了。也许主管不认为所有的程
序一定要自行开发,他可以雇用一位短期的顾问,或是运
用公司内别的小组已完成的程序代码,或是买一套文件完
整的函数库,这都能够大幅减少开发程序的时间。也许,
可以把产品中较无价值的功能特色从目标中删除,这也是
58
微软研发
致胜策略下载
个办法。
理想的问题
您读完本书之后,会发现不必每周工作8 0小时就能如
期完成项目的方法还真是不少。当您用自问自答的方式来
引导策略性思考时,请不要忘了第1章所提的重点:“我到
底要完成什么?”没有一位主管喜欢自己的组员成天加班,
事实上,大部分的主管都希望大家能在愈短的时间内完成
愈多的任务。要提出最佳问题最简单的技巧是:想像一下
您理想中的项目应该如何运作,然后在您的问题中反映您
的理想。您理想中的项目,应该是对进程估计准确、每一
个里程碑都准时到达、没有人需要加班、每个人都乐于工
作,不是吗?有太多值得自我检讨的问题,同一个问题有
太多问法,您必须记得,在问题中反映您所希望的理想项
目,就比较容易得到接近理想的答案。
我们要强调的是,愈精确的问题,愈能促使人们朝向
更接近理想的答案思考,剔除那些不够好的答案,因为第
一个想到的往往是最简单、不够理想的解决方案,我们不
能这样就算了。一次比一次更精确的问题,可以刺激思考
过程,激发出更有创意的答案。
59
微软研发·致胜策略
策略性的作业方式下载
提出精确详尽的问题,可以引导出真正有效的策
略性工作方式,帮助项目目标顺利完成。
不要死守规则
当您提出并推动策略时,同时也要提醒开发团队,不
见得要1 0 0 %地遵循策略,最重要的是灵活运用。做事情
要用脑筋思考,理性判断,而不是盲目地人云亦云,一味
地死守规则。规则也有不太适用的时候。
有一项几乎是铁定的程序设计策略,就是不要使用
g o t o。但是,有经验的程序设计师一般都认为,在某些特
殊情况下—大部分是复杂的错误处理,用goto 反而使
程序代码清楚明晰。如果我看到程序设计师在写错误处理
程序时,极力避免使用goto,我通常会拿着程序代码和他
一起讨论,我会问道:
“你有没有想过用goto 来写这段程序?”
“什么?当然没有!goto 是程序设计的祸源,会使程
序既不稳定又难读懂,只有低能的程序设计师才用g o t o
吧。”
60
微软研发
致胜策略下载
我解释道:“嗯,说得对,不过在某些情况下goto 是
合理的,复杂的错误处理就是。让我们拿用goto 做的程
序和你的程序作个比较,你觉得哪一个的程序代码比较清
楚?”我拿用goto 做错误处理的程序代码给他看。
通常程序设计师都会不太情愿地承认是goto 版比较
好。
“那么,你将来打算用哪种方式来写程序?”
“我自己的,因为它不用goto。”
“等等,我以为你刚才同意了goto 是比较好的方式,
程序会比较好读,不是吗?”
“它是比较好读,但是用goto 的话,编译器会无法产
生最优的执行码。”
“让我们假设你的论点是对的,编译器所产生的执行
码的确差些。你想,执行这一段程序机率大不大呢?”
“很少会执行到,我想,因为它是错误处理。”
“既然不常执行到,那么对于这段程序而言,执行速
度和程序代码的可读性,那个比较重要呢?”
“程序代码的可读性。”
“所以,哪种方式是比较符合项目的优先考虑的顺序
呢?”
61
微软研发·致胜策略
策略性的作业方式下载
这时候通常会有一段较长的沉默。然后程序设计师终
于勉强吐出了一句痛苦的抗议:
“但是,用goto 不好嘛。”
首先我得说明,该用goto 的情况其实是很少的,大
部分的时候只要一看到goto 我就有点紧张,生怕这里有
问题。我虽不会对所有的goto 去之而后快,但我个人绝
不赞成用g o t o;大部分的goto 都是散漫的程序设计师,
一边哼哼唱唱、一边在键盘上随意敲打的低劣程序。然而,
我虽反对使用goto,我更反对的是对规则盲从,产品才是
最重要的。
这就是策略性工作方式的主要缺点,规则太明确了,
有时候反而让组员把它视为不容打破的定律,而不去活用
策略。僵化地死守策略无异于做傻事。
我知道学校里的老师在教程序语言时强调不要用
g o t o,基本上是出于善意;他们是对的,但我希望程序设
计师必须明白,尽量少用goto 并不表示绝对不要用。我
更希望学校里会示范少数应该使用goto 的时机,证明在
那些情况下使用goto 是合理的,因为不该用goto 的实例
已经看得太多了。我想这是因为很多老师自己主张绝对不
该使用g o t o,在教学时自然特别强调goto 不可用,只要
62
微软研发
致胜策略下载
一看到学生的作业中有goto 就认为这是可怕的程序,使
得很多毕业出来的程序设计师畏goto 如蛇蝎,就好像电
影中只要有裸露镜头就判定这是不道德的一样。
程序设计中,只有很少数的策略应该被视为规则,规
则该被遵循,但不是死守,主管必须教育组员明白这一点,
并教导组员应该如何灵活运用策略,否则属下若是只晓得
盲从,就是主管的危机。策略不是死的定律,要灵活运用,
不要死守,这是采用任何策略时都应该注意的,当然包括
本书中所提的所有策略。
策略不是死的定律,要把它当作指导原则来活用。
大部分的时候都应该遵循,但也有例外的时候。
给我看原始程序代码
关于是否该用g o t o,教科书、参考书、杂志等已经都
讲烂了。所有关于赞成和反对使用goto 的文章中,麦康
奈尔(McConnell) 所著的《代码完成》(Code plete)一
书中第16章可以说是最完整的了。他除了举出许多
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!