代码之道(china-pub 10.22日首发)
基本信息
- 原书名: I. M. Wright's Hard Code
- 原出版社: Microsoft Press
- 作者: (美)Eric Brechner [作译者介绍]
- 译者: 陆其明
- 丛书名: Microsoft核心技术丛书
- 出版社:机械工业出版社
- ISBN:9787111251675
- 上架时间:2008-10-22
- 出版日期:2009 年1月
- 开本:16开
- 页码:192
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > 综合 > 程序(设计)理论
编辑推荐
购买本书前200单,均可免运费。(邮政EMS,特快专递除外)活动结束后将及时公布名单。
《代码大全》姊妹篇!
微软公司内部所有工程师的必读之书!
推荐阅读
内容简介回到顶部↑
本书以一位微软内部人士的视角,揭示了关于软件编码、软件测试和项目管理中的方方面面问题。作者文笔犀利,见解独到,对软件行业内的很多常见问题提出了解决方案,并提供了最佳实践。本书详细介绍怎样提高软件的质量和价值;切合实际地管理项目的时间表、风险和规范书;为常见的低效率开发瘦身;应用过程改进方法,避免固执盲从;规划一个成功的、令人满意的职业生涯;发展并管理一个欣欣向荣的团队等。
本书是作者对过去在软件行业6个不同的公司、28年的工作经验的一次总结。
本书不仅是微软内部员工的必读之书,也同样适合于软件行业内其他所有工程师和管理者阅读。
本书是作者对过去在软件行业6个不同的公司、28年的工作经验的一次总结。
本书不仅是微软内部员工的必读之书,也同样适合于软件行业内其他所有工程师和管理者阅读。
作译者回到顶部↑
本书提供作译者介绍
Eric Brechner,微软公司“卓越开发”部门的总监,在软件行业已经积累了20多年的经验。他从2001年开始写“Hard Code”栏目,作为一种资源提供给微软的员工。自那以后,其观点栏目在微软内部成千上万的软件开发者之间,激起了无休无止的关于最佳实践的讨论——如今,这些观点走出了微软,走向了整个开发社区。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
序
简介
第1章 项目的不当管理
2001年6月1日:“开发时间表、飞猪和其他幻想”
里氏震级估计
风险管理
客户赢了
2001年10月1日:“竭尽所能:再论开发时间表”
软件工程绝对是含糊的
相信一半你看到的,别信你听到的
激励:不能光靠比萨和啤酒
在日期上沉沦
2002年5月1日:“我们还开心吗?分诊的乐趣”
战争是地狱
这不是个人的事情
分诊的5条黄金法则
魔鬼藏在细节里面
很难进行下去,不是吗?
谨小慎微
2004年12月1日:“向死亡进军”
简介
第1章 项目的不当管理
2001年6月1日:“开发时间表、飞猪和其他幻想”
里氏震级估计
风险管理
客户赢了
2001年10月1日:“竭尽所能:再论开发时间表”
软件工程绝对是含糊的
相信一半你看到的,别信你听到的
激励:不能光靠比萨和啤酒
在日期上沉沦
2002年5月1日:“我们还开心吗?分诊的乐趣”
战争是地狱
这不是个人的事情
分诊的5条黄金法则
魔鬼藏在细节里面
很难进行下去,不是吗?
谨小慎微
2004年12月1日:“向死亡进军”
前言回到顶部↑
献给当初对我说“为什么不由你来写?”的人:Bill Bowlus
你手上拿着的是一本关于最佳实务的书。它会比较乏味。但也许会比较有意义,你能从中得到知识,读后甚至对你产生些许影响,但读起来肯定还是干巴巴而无趣的。为什么这么说呢?
最佳实务的书是乏味的,因为这个“最佳”是跟具体的项目、具体的人、他们的目标以及偏好紧密相关的。一个实务是不是“最佳”,大家可能看法不一。作者必须把实务列举出来让读者自己来选,并分析在什么时候、因为什么原因作出最佳选择。虽然这种做法是现实的、负责任的,但也是令人厌烦的,最终无法取悦读者。为释疑而设计的案例研究会使文字有味一些,但作者仍必须把选择的机会留给读者,否则作者就会显得傲慢、教条并且死板。
然而人们喜欢看到傲慢、教条、死板的学者之间的针锋相对。大家喜欢引用学者们的观点片段,与朋友和同事一起讨论。为什么不把这些最佳实务当作观点栏来争论呢?惟一的条件,就是要有人愿意将自己扮演成一个思想保守的傻瓜。
本书的由来
2001年4月,在我历经了Bank Leumi、Jet Propulsion Laboratory、GRAFTEK、Silicon Graphics、Boeing等公司总共16年的职业程序员生涯,再在微软做了6年的程序员和经理之后,我转入了微软内部的一个以在公司范围内传播最佳实务为职责的团队。当时这个组正在运作发行名叫《Interface》月刊网络杂志的一个项目。它很有意义,且富有知识性,但同样也是干巴巴而无趣的。我那时建议增加一个观点栏目。
我的上司Bill Bowlus建议由我来写。我拒绝了。作为一个半大孩子,我努力成为一个协调员,撮合多方产生成果。成为一个爱唠叨的实务学者会毁掉我的名誉和效力。因此,我当时的想法是说服一个大家公认的小心眼的工程师来写,他可能是我在微软以前6年工作经历中接触过的一位固执的开发经理。
但Bill指出,我有22年的开发经验,4年的开发管理经验,写作技巧也还行,而且有足够的态度来做这件事。我只需要放下自身的心理包袱。另外,其他的开发经理都忙于常规的工作,不可能每个月来为我们写观点。最后Bill和我想出了一个用假名撰稿的点子,于是I. M. Wright的“Hard Code”栏目诞生了。
从2001年6月开始,我使用“I. M. Wright,微软逍遥的开发经理”这个署名为微软的开发者和他们的经理写了49个“Hard Code”观点栏。这些栏目的标签行都打上了“绝对诚实,重拳出击”的标语。每个月,成千上万的微软工程师和经理都在读这些栏目。
前16个栏目在《Interface》内部网络杂志上发表了。随后同事(Mark Ashley和Liza White)给我分配了更多的主题。我和《Interface》的美工Todd Timmcke还一起制作了作者的很多搞怪照片。当网络杂志停刊的时候,我才得以喘息的机会,但也停止了写作。
你手上拿着的是一本关于最佳实务的书。它会比较乏味。但也许会比较有意义,你能从中得到知识,读后甚至对你产生些许影响,但读起来肯定还是干巴巴而无趣的。为什么这么说呢?
最佳实务的书是乏味的,因为这个“最佳”是跟具体的项目、具体的人、他们的目标以及偏好紧密相关的。一个实务是不是“最佳”,大家可能看法不一。作者必须把实务列举出来让读者自己来选,并分析在什么时候、因为什么原因作出最佳选择。虽然这种做法是现实的、负责任的,但也是令人厌烦的,最终无法取悦读者。为释疑而设计的案例研究会使文字有味一些,但作者仍必须把选择的机会留给读者,否则作者就会显得傲慢、教条并且死板。
然而人们喜欢看到傲慢、教条、死板的学者之间的针锋相对。大家喜欢引用学者们的观点片段,与朋友和同事一起讨论。为什么不把这些最佳实务当作观点栏来争论呢?惟一的条件,就是要有人愿意将自己扮演成一个思想保守的傻瓜。
本书的由来
2001年4月,在我历经了Bank Leumi、Jet Propulsion Laboratory、GRAFTEK、Silicon Graphics、Boeing等公司总共16年的职业程序员生涯,再在微软做了6年的程序员和经理之后,我转入了微软内部的一个以在公司范围内传播最佳实务为职责的团队。当时这个组正在运作发行名叫《Interface》月刊网络杂志的一个项目。它很有意义,且富有知识性,但同样也是干巴巴而无趣的。我那时建议增加一个观点栏目。
我的上司Bill Bowlus建议由我来写。我拒绝了。作为一个半大孩子,我努力成为一个协调员,撮合多方产生成果。成为一个爱唠叨的实务学者会毁掉我的名誉和效力。因此,我当时的想法是说服一个大家公认的小心眼的工程师来写,他可能是我在微软以前6年工作经历中接触过的一位固执的开发经理。
但Bill指出,我有22年的开发经验,4年的开发管理经验,写作技巧也还行,而且有足够的态度来做这件事。我只需要放下自身的心理包袱。另外,其他的开发经理都忙于常规的工作,不可能每个月来为我们写观点。最后Bill和我想出了一个用假名撰稿的点子,于是I. M. Wright的“Hard Code”栏目诞生了。
从2001年6月开始,我使用“I. M. Wright,微软逍遥的开发经理”这个署名为微软的开发者和他们的经理写了49个“Hard Code”观点栏。这些栏目的标签行都打上了“绝对诚实,重拳出击”的标语。每个月,成千上万的微软工程师和经理都在读这些栏目。
前16个栏目在《Interface》内部网络杂志上发表了。随后同事(Mark Ashley和Liza White)给我分配了更多的主题。我和《Interface》的美工Todd Timmcke还一起制作了作者的很多搞怪照片。当网络杂志停刊的时候,我才得以喘息的机会,但也停止了写作。
序言回到顶部↑
序
长期以来,我一直在阅读Eric Brechner以I. M. Wright为笔名撰写的栏目。当我第一次见到作者本人的时候,我费了好大的劲才让自己相信,我是在跟同一个人说话。Wright先生非常地自以为是,然而站在我面前说话的人却那么谦虚、彬彬有礼、非常友好,他看起来更像Clark Kent。(译者注:Clark Kent是“超人”的名字,他具有超强的本领,是一个虚构的超级英雄,美国漫画中的经典人物。)
我很关注微软内部团队在软件开发的过程中,他们是如何去处理技术与人际交流之间的关系的;这类栏目总是我的最爱。看到大量的公司内幕被写了出来,我常常会感到吃惊——我不知道还有多少不为人知的故事没有说出来。
大型项目中的软件工程管理者面临着3个基本的问题。第一个是,程序代码太容易被改变了。跟机械或土木工程不一样,它们在现有系统上做一次改变总是要付出实实在在地拆毁某些东西的代价,而软件程序的改变只需要敲敲键盘就行了。如果对一座桥的桥墩或一架飞机的引擎做一个错误的结构性更改,由此产生的后果,即使不是专家也很容易就能看出来。然而,如果在一个现有程序上做修改,对于其风险,即使经验丰富的软件开发者进行了充分的讨论,其结果常常还是错的。
建筑隐喻实际上可以很好地适用于软件。基于程序代码在系统中所处的层次,它们可以被比作为“基础、框架和装饰”。“基础”代码具有高度的杠杆作用,它们的改动常常会引起严重的连锁反应。“装饰”代码比较容易改动,而且也需要被经常改动。问题是,累积了几年的改变之后,复杂的程序就跟历经过几次装修的房子差不多了——电源插座躲到了橱柜的后面,浴室风扇的出风口通向了厨房。再做任何改变的话,其副作用或最终的代价都是很难预知的。
第二个基本问题是,软件行业还太年轻,关于可复用组件的正确标准实际上还没有被发现或建立起来。大头钉是否应该放在离开16英寸的地方,以同时适应水平或垂直的4x8英尺的干垒墙或夹板?我们不仅在这类问题上还没有取得一致意见,甚至我们还没有决定,是否像大头钉、干垒墙和夹板这样的组合更可取,还是我们要去发明像泥浆、稻草、石头、钢铁和碳化纤维这样的组合。
最后一个问题实际上是第二个问题的另一种表现形式。每个项目中重复发明的软件组件,它们也被重复命名了。软件行业里对现有的概念发明新的名字是很常见的,即使用的名字相同,这些名字也以新的方式被重用。行业里有一个心照不宣的秘密:关于软件开发最佳方法的相当多的讨论,参与的实际上都是同一群人,只不过他们用了不同的名字,他们甚至对彼此正在说的东西都没有一个哪怕是很朦胧的想法。
表面上看来,这些都是很简单的问题。建立一些标准,然后强制实行它们。在快速进步的大容量、高价值、低成本的软件世界里,这可是一个让你的业务落败的捷径。实际情况是,软件最大的工程障碍,同时也是它最大的优势。无处不在的软件(运行在低成本的个人电脑和互联网上),已经使得以惊人的步伐去创新成为可能。
随着微软的成长,公司已经不再能在最佳工程实践的研究方面大量地投入,然后经过深思熟虑,挑选出其中具有最好质量的方法。个人电脑和Windows的成功,已经把公司从按传统方式做些小项目的形态转变出来,转而要去谱写开发有史以来最庞大、最复杂软件的新篇章。
为了能够创建出平衡风险与效率、创新的最佳系统,微软面临着持续不断的挣扎。考虑到我们的一些项目有着极度的复杂性,这些努力甚至可以称得上“英勇无畏”。在过去的一段时间以来,我们已经设置了专员、建立了专门的组织,他们都一心一意、致力于这个行业里最困难的事情——“软件发布”。我们已经学会了很多的民间传说、风俗、文化、工具、过程和大拇指规则(译者注:Rules of Thumb,是指没有经过科学实验、直接从实践中总结出来的方法和规则;它们在很多情况下都有用,但并不是放之四海皆准),那些都有助于我们建造和发布这个世界上最复杂的软件。但与此同时,每天都处理这些问题难免也让人心惊胆战、士气受挫。Eric的栏目正是大家跟我们一起分享和学习的极好方式。
长期以来,我一直在阅读Eric Brechner以I. M. Wright为笔名撰写的栏目。当我第一次见到作者本人的时候,我费了好大的劲才让自己相信,我是在跟同一个人说话。Wright先生非常地自以为是,然而站在我面前说话的人却那么谦虚、彬彬有礼、非常友好,他看起来更像Clark Kent。(译者注:Clark Kent是“超人”的名字,他具有超强的本领,是一个虚构的超级英雄,美国漫画中的经典人物。)
我很关注微软内部团队在软件开发的过程中,他们是如何去处理技术与人际交流之间的关系的;这类栏目总是我的最爱。看到大量的公司内幕被写了出来,我常常会感到吃惊——我不知道还有多少不为人知的故事没有说出来。
大型项目中的软件工程管理者面临着3个基本的问题。第一个是,程序代码太容易被改变了。跟机械或土木工程不一样,它们在现有系统上做一次改变总是要付出实实在在地拆毁某些东西的代价,而软件程序的改变只需要敲敲键盘就行了。如果对一座桥的桥墩或一架飞机的引擎做一个错误的结构性更改,由此产生的后果,即使不是专家也很容易就能看出来。然而,如果在一个现有程序上做修改,对于其风险,即使经验丰富的软件开发者进行了充分的讨论,其结果常常还是错的。
建筑隐喻实际上可以很好地适用于软件。基于程序代码在系统中所处的层次,它们可以被比作为“基础、框架和装饰”。“基础”代码具有高度的杠杆作用,它们的改动常常会引起严重的连锁反应。“装饰”代码比较容易改动,而且也需要被经常改动。问题是,累积了几年的改变之后,复杂的程序就跟历经过几次装修的房子差不多了——电源插座躲到了橱柜的后面,浴室风扇的出风口通向了厨房。再做任何改变的话,其副作用或最终的代价都是很难预知的。
第二个基本问题是,软件行业还太年轻,关于可复用组件的正确标准实际上还没有被发现或建立起来。大头钉是否应该放在离开16英寸的地方,以同时适应水平或垂直的4x8英尺的干垒墙或夹板?我们不仅在这类问题上还没有取得一致意见,甚至我们还没有决定,是否像大头钉、干垒墙和夹板这样的组合更可取,还是我们要去发明像泥浆、稻草、石头、钢铁和碳化纤维这样的组合。
最后一个问题实际上是第二个问题的另一种表现形式。每个项目中重复发明的软件组件,它们也被重复命名了。软件行业里对现有的概念发明新的名字是很常见的,即使用的名字相同,这些名字也以新的方式被重用。行业里有一个心照不宣的秘密:关于软件开发最佳方法的相当多的讨论,参与的实际上都是同一群人,只不过他们用了不同的名字,他们甚至对彼此正在说的东西都没有一个哪怕是很朦胧的想法。
表面上看来,这些都是很简单的问题。建立一些标准,然后强制实行它们。在快速进步的大容量、高价值、低成本的软件世界里,这可是一个让你的业务落败的捷径。实际情况是,软件最大的工程障碍,同时也是它最大的优势。无处不在的软件(运行在低成本的个人电脑和互联网上),已经使得以惊人的步伐去创新成为可能。
随着微软的成长,公司已经不再能在最佳工程实践的研究方面大量地投入,然后经过深思熟虑,挑选出其中具有最好质量的方法。个人电脑和Windows的成功,已经把公司从按传统方式做些小项目的形态转变出来,转而要去谱写开发有史以来最庞大、最复杂软件的新篇章。
为了能够创建出平衡风险与效率、创新的最佳系统,微软面临着持续不断的挣扎。考虑到我们的一些项目有着极度的复杂性,这些努力甚至可以称得上“英勇无畏”。在过去的一段时间以来,我们已经设置了专员、建立了专门的组织,他们都一心一意、致力于这个行业里最困难的事情——“软件发布”。我们已经学会了很多的民间传说、风俗、文化、工具、过程和大拇指规则(译者注:Rules of Thumb,是指没有经过科学实验、直接从实践中总结出来的方法和规则;它们在很多情况下都有用,但并不是放之四海皆准),那些都有助于我们建造和发布这个世界上最复杂的软件。但与此同时,每天都处理这些问题难免也让人心惊胆战、士气受挫。Eric的栏目正是大家跟我们一起分享和学习的极好方式。
媒体评论回到顶部↑
专家评价:
“我能肯定,I. M. Wright不会听我的话,试都不用试。”.
——Jon DeVaan,微软公司高级副总裁
“尽管我绝不会从这家伙手里买二手车,但在软件开发方面,他确实也对他自己的东西知道得一清二楚。”
——Ian Ellison-Taylor,微软公司工程部总经理
“微软公司内部所有工程师的必读之书。”
——Peter Isensee,微软公司开发经理
揭示关于编码、测试和项目管理的残酷现实——一位微软的内部人士如实地向你述说。I. M. Wright的“Hard Code”故意煽情,几年来在微软内部成千上万的工程师之间引起了激烈的争论。现在(也顾不上“家丑不外扬”了),我们把他的观点向所有人公开。
本书收录了49个栏目。Eric Brechner重拳出击,对最令他苦恼的问题提出了最佳实践的解决方案,另外还加上了他坦诚的注解。他解剖了开发过程,审查了棘手的团队问题,批判了软件业务的运转方式——自始至终充斥着机灵的幽默和讥讽的风趣。他的想法并不总是很受欢迎(他也不关心那个),但它们的的确确激发起了人们的讨论和想象,推动着软件相关的活动走向卓越。
读者评价:
读者对I. M. Wright’s “Hard Code”栏目的喝彩
任何大型组织都有危险成为自身文化的牺牲品。关于世界应该是什么样子或者事情应该怎样去做的神话,最后证明都是一个个自圆其说的预言。任何组织都会有这种倾向,但它对于需要不断创新才能繁荣的技术公司来说,却是个致命杀手。Eric Brechner做了件难以置信的事——他亮出了手术刀,深深地切入了组织内部看似无关紧要的东西。他毫不吝啬地打出了重拳——偶尔也会故意玷污自己的名声。尽管有一些隐语和例子对于微软内部的员工更有吸引力,但他的智慧和至理名言,大都可以成为整个软件行业的财富。
——Clemens Szyperski,首要架构师
“I. M. Wright”写的关于开发时间表的文章真的是太棒了!它在我所属部门参与的基础设施项目上同样适用。
——Ian Puttergill,部门经理
你没有受到任何死亡威胁,是吗?..
——Tracey Meltzer,高级测试主管
这一定是个笑话——很坦率地说,这类纯粹的谬论危机四伏。
“我能肯定,I. M. Wright不会听我的话,试都不用试。”.
——Jon DeVaan,微软公司高级副总裁
“尽管我绝不会从这家伙手里买二手车,但在软件开发方面,他确实也对他自己的东西知道得一清二楚。”
——Ian Ellison-Taylor,微软公司工程部总经理
“微软公司内部所有工程师的必读之书。”
——Peter Isensee,微软公司开发经理
揭示关于编码、测试和项目管理的残酷现实——一位微软的内部人士如实地向你述说。I. M. Wright的“Hard Code”故意煽情,几年来在微软内部成千上万的工程师之间引起了激烈的争论。现在(也顾不上“家丑不外扬”了),我们把他的观点向所有人公开。
本书收录了49个栏目。Eric Brechner重拳出击,对最令他苦恼的问题提出了最佳实践的解决方案,另外还加上了他坦诚的注解。他解剖了开发过程,审查了棘手的团队问题,批判了软件业务的运转方式——自始至终充斥着机灵的幽默和讥讽的风趣。他的想法并不总是很受欢迎(他也不关心那个),但它们的的确确激发起了人们的讨论和想象,推动着软件相关的活动走向卓越。
读者评价:
读者对I. M. Wright’s “Hard Code”栏目的喝彩
任何大型组织都有危险成为自身文化的牺牲品。关于世界应该是什么样子或者事情应该怎样去做的神话,最后证明都是一个个自圆其说的预言。任何组织都会有这种倾向,但它对于需要不断创新才能繁荣的技术公司来说,却是个致命杀手。Eric Brechner做了件难以置信的事——他亮出了手术刀,深深地切入了组织内部看似无关紧要的东西。他毫不吝啬地打出了重拳——偶尔也会故意玷污自己的名声。尽管有一些隐语和例子对于微软内部的员工更有吸引力,但他的智慧和至理名言,大都可以成为整个软件行业的财富。
——Clemens Szyperski,首要架构师
“I. M. Wright”写的关于开发时间表的文章真的是太棒了!它在我所属部门参与的基础设施项目上同样适用。
——Ian Puttergill,部门经理
你没有受到任何死亡威胁,是吗?..
——Tracey Meltzer,高级测试主管
这一定是个笑话——很坦率地说,这类纯粹的谬论危机四伏。
书摘回到顶部↑
第1章项目的不当管理
本章内容:
2001年6月1日:“开发时间表、飞猪和其他幻想”
2001年10月1日:“竭尽所能:再论开发时间表”
2002年5月1日:“我们还开心吗?分诊的乐趣”
2004年12月1日:“向死亡进军”
2005年10月1日:“揭露真相”
我的第一个栏目是在2001年6月刊的微软内部网络杂志《Interface》上发表的。为了进入I.M.Wright的人物角色,我需要一个真正能让我伤脑筋的主题。而工作的时间安排和进度跟踪再好不过了。
项目管理的伟大神话至今都让我疯狂,它的威力远胜过其他任何主题。这些神话是:
1.人们能够按期交付被要求实现的功能(事实上,项目可以按期交付,但人们按期交付功能的概率不会高于击中曲棍球的概率)。
2.有经验的人估计日期比较准(事实上,他们能够较好地估计工作,但不是日期)
3.人们必须按照项目预定的日期按时交付项目(事实上,因为人们不能按期交付被要求实现的功能,而你若想你的项目能够按期交付的话,你必须进行管理风险、范围和通过沟通来减轻人性的弱点可能给项目带来的负面影响)。
在本章中,I.M.Wright讨论了如何通过管理风险、范围和进行沟通,来保障你的项目能够按时完成。前两个栏目专门讨论开发工作的时间安排,接着讨论善后事宜的管理(我们称之为“Bu9分诊”),最后是一篇对死亡行军的声讨,以及一个关于人们为什么要撒谎的哲学栏目。
不得不提的是:通过我在微软多年的工作经历,以及对我所在组织的观察,我发现,项目管理行为和方法在不同规模和抽象层次的组织中,其表现大不相同。这些层次包括:团队或功能层次(10人左右),项目层次(50~5000人,他们一起致力于某个特定的产品发布),以及产品层次(由高层人员主管的多次产品发布)。敏捷方法在团队这个层次能够很好地发挥作用,组织方法在项目这个层次比较适用,而长远的战略规划方法在产品这个层次功效显著。然而,一个人几乎不可能同时在多个层次上工作。时间长河为每个人将这些经历错开了。当一个人从一个层次转到另一个层次工作的时候,他可能会想,在以前那个层次上有效的方法在其他层次上应该也同样有效。灾难就这么产生了!原因很简单:小型、紧凑的群体跟大型、松散的机构在运转方式上是不同的。因此要因地制宜,选择最适合的方法。
——Eric
2001年6月1日:“开发时间表、飞猪和其他幻想”
一匹马走进酒吧,说道:“我能在两天内完成那个功能。”开发成本计算和时问安排是个玩笑。相信它的人,要么是傻瓜,要么是初出茅庐的项目经理。这不是模糊科学,纯粹是杜撰。不错,的确有人相信编码可以被分割成一个可预见进度和质量的可重复的过程,那我儿子至今还相信牙仙子呢!事实上,除非你只需编写10行那么长的代码,或者代码可以直接从以前的工作中复制过来,否则你不可能知道编码会花费你多久时间。
作者注:项目经理(Program Manager,PM)有很多职责,其中最主要的是负责说明最终用户体验和跟踪项目的整体进度。这种角色是必要的,但他们常常不讨开发者的喜欢,因而也很少得到开发者的尊重。真遗憾,项目经理是一份很难做好的工作。但是,对于Wright先生来说,做好项目经理仍然是一个有趣并且容易达到的目标。
里氏震级估计
当然,你可以估计,但估计出来的时间是成对数比例的。有些事情需要花费几个月,有些事情需要几周,有些需要几天,有些需要几个小时,有些则只需几分钟。而我跟我的部门项目经理(Group Program Manager,GPM)一起给一个项目做时间安排时,我们对每个功能使用“困难/中等/容易”3个等级来评估。“困难”意味着一个全职开发人员需要花费整个里程碑时间;“中等”意味着一个全职开发人员需要花费2~3周时间;“容易”意味着一个全职开发人员需要花费2~3天时间。这里没有中间等级,也不做精确的时间表。为什么呢?因为我们俩知道,我们已经不可能知道得再精确了。
本章内容:
2001年6月1日:“开发时间表、飞猪和其他幻想”
2001年10月1日:“竭尽所能:再论开发时间表”
2002年5月1日:“我们还开心吗?分诊的乐趣”
2004年12月1日:“向死亡进军”
2005年10月1日:“揭露真相”
我的第一个栏目是在2001年6月刊的微软内部网络杂志《Interface》上发表的。为了进入I.M.Wright的人物角色,我需要一个真正能让我伤脑筋的主题。而工作的时间安排和进度跟踪再好不过了。
项目管理的伟大神话至今都让我疯狂,它的威力远胜过其他任何主题。这些神话是:
1.人们能够按期交付被要求实现的功能(事实上,项目可以按期交付,但人们按期交付功能的概率不会高于击中曲棍球的概率)。
2.有经验的人估计日期比较准(事实上,他们能够较好地估计工作,但不是日期)
3.人们必须按照项目预定的日期按时交付项目(事实上,因为人们不能按期交付被要求实现的功能,而你若想你的项目能够按期交付的话,你必须进行管理风险、范围和通过沟通来减轻人性的弱点可能给项目带来的负面影响)。
在本章中,I.M.Wright讨论了如何通过管理风险、范围和进行沟通,来保障你的项目能够按时完成。前两个栏目专门讨论开发工作的时间安排,接着讨论善后事宜的管理(我们称之为“Bu9分诊”),最后是一篇对死亡行军的声讨,以及一个关于人们为什么要撒谎的哲学栏目。
不得不提的是:通过我在微软多年的工作经历,以及对我所在组织的观察,我发现,项目管理行为和方法在不同规模和抽象层次的组织中,其表现大不相同。这些层次包括:团队或功能层次(10人左右),项目层次(50~5000人,他们一起致力于某个特定的产品发布),以及产品层次(由高层人员主管的多次产品发布)。敏捷方法在团队这个层次能够很好地发挥作用,组织方法在项目这个层次比较适用,而长远的战略规划方法在产品这个层次功效显著。然而,一个人几乎不可能同时在多个层次上工作。时间长河为每个人将这些经历错开了。当一个人从一个层次转到另一个层次工作的时候,他可能会想,在以前那个层次上有效的方法在其他层次上应该也同样有效。灾难就这么产生了!原因很简单:小型、紧凑的群体跟大型、松散的机构在运转方式上是不同的。因此要因地制宜,选择最适合的方法。
——Eric
2001年6月1日:“开发时间表、飞猪和其他幻想”
一匹马走进酒吧,说道:“我能在两天内完成那个功能。”开发成本计算和时问安排是个玩笑。相信它的人,要么是傻瓜,要么是初出茅庐的项目经理。这不是模糊科学,纯粹是杜撰。不错,的确有人相信编码可以被分割成一个可预见进度和质量的可重复的过程,那我儿子至今还相信牙仙子呢!事实上,除非你只需编写10行那么长的代码,或者代码可以直接从以前的工作中复制过来,否则你不可能知道编码会花费你多久时间。
作者注:项目经理(Program Manager,PM)有很多职责,其中最主要的是负责说明最终用户体验和跟踪项目的整体进度。这种角色是必要的,但他们常常不讨开发者的喜欢,因而也很少得到开发者的尊重。真遗憾,项目经理是一份很难做好的工作。但是,对于Wright先生来说,做好项目经理仍然是一个有趣并且容易达到的目标。
里氏震级估计
当然,你可以估计,但估计出来的时间是成对数比例的。有些事情需要花费几个月,有些事情需要几周,有些需要几天,有些需要几个小时,有些则只需几分钟。而我跟我的部门项目经理(Group Program Manager,GPM)一起给一个项目做时间安排时,我们对每个功能使用“困难/中等/容易”3个等级来评估。“困难”意味着一个全职开发人员需要花费整个里程碑时间;“中等”意味着一个全职开发人员需要花费2~3周时间;“容易”意味着一个全职开发人员需要花费2~3天时间。这里没有中间等级,也不做精确的时间表。为什么呢?因为我们俩知道,我们已经不可能知道得再精确了。


点击看大图






加载中...
