原文:http://www.mypm.net/journal/pmwt/20031112/Notices&papers&Reports_1.htm
MW: 人们自愿花时间完成的记录他们实践经验的文档,往往是非常有价值的。注意,我强调的是“实践”。
JB: 软件是一种与众不同的东西。软件和其他种类项目的成果最大的区别是: 它不是物理的。软件由想法、设计、指令和公式构成。创造软件的过程几乎都是感知活动。我们只能从代码文件中看到并衡量它(用一系列机器能够读懂的随机符号来代表相对真实的东西,这多惊奇啊)。他们通过另外一种方式代替着现实世界。但是,软件只有在看起来象某些真实的东西时才有价值,即使它仅仅只是一条在电脑屏幕上的彩色波浪线那样真实。软件的独特挑战之一就是维持思想存在与现实存在的联系。
MW: 是的,我们都愿意认为自己独有的特性是“与众不同”。事实上,在很多方面,它们确实与众不同的,否则它们就不会被称为“特性”。但是,对于项目经理来说,相对于其他类型的项目例如JIM提到的那些,软件项目真的那么与众不同吗?让我们更深入的探讨一番。
人们容易掉进的第一个陷阱就是他们 没有区分技术的管理和项目进度的管理。其实,管理如何放置水泥板和在软件开发中如何在计算机屏幕上放置接口模块是有很大的不同。但是就项目范围、质量、时间、费用、风险等来说,这些不同对项目的管理有多大的影响呢?你可以看到两者,即使你可能无法看到两者后面隐藏的技术过程(从来有谁坐在那里看着水泥如何硬化呢?)。反过来说,即使确实存在差别,但是这些是同所使用技术的复杂性和工程所需的人员相关的。比如,当软件开发是 “最新的、技术先进的”时候,人们就认为构架已经建好了。但是,从这方面说,这不是独特的。
下面让我们对Jim的观点逐一探讨。
JB:1-通常,软件项目的成果不像其他项目那样可见或者容易理解。由于你不能像踢一捆砖头那处理一堆软件,你必须想方设法去确定软件的存在。在软件项目中最困难的工作通常是进度跟踪。有些大型软件项目的失败是由于初期工作比如设计不是按照预想的方式进行。比起软件设计,我们更清楚一个工厂的蓝图是否正确、完备和有用甚至时髦。一些所谓的脆弱项目的失败是因为它们没有一个仓库或者临时凑合的东西。软件项目的生产透明性需要我们拥有与建筑项目所没有的两样东西。 第一,我们需要不可见的思维的替代品,然后,需要对替代品的状态进行监控。也就是说,使进行中的东西一致并可见。为每一个子项设定一个客户,并检查每块“砖”都满足操作标准(Donesss?)。增量提交和早期测试可以加强对项目进行过程中的模块和蓝图状态的可见性。
MW: 恩,第一部分都是关于技术而不是关于项目管理的。如果我们将软件项目同建筑项目进行比较,也是出于脑力工作的需要而不是劳动的需要。而且,人的管理需要使用特别的方法。但是,我要说,对于研发而言两者都是同样重要的。
JB: 2 – 与其它项目相比,软件项目的最终状态通常更具有不确定性。有时候我们对我们想要的东西最多有个朦胧的概念。有时候,我们的概念很清楚但是我们忘记告诉其它人(通常是隐含的需求)。在项目进行的过程中我们经常改变主意。因为软件是一个相对较新的领域,软件项目几乎总包含着新艺术
- 不可见性(不够直接,不易感知进度,不易监控)
- 不确定性(范围不确定,目标模糊)
- 多样性(很难有通用方法和最佳实践可复制)
- 在修订中计划(渐进的计划)
- 丰富多彩的开发方法(条条大路通罗马)
- 额外的工作(方法,工具和技术)
- 没有纯粹的软件项目(不要忘记了目标)
- 积累和运用(技术积累和复用)
- 工具的制作和改造(方法,工具和技术)
- 聘用软件项目经理
MW: 人们自愿花时间完成的记录他们实践经验的文档,往往是非常有价值的。注意,我强调的是“实践”。
JB: 软件是一种与众不同的东西。软件和其他种类项目的成果最大的区别是: 它不是物理的。软件由想法、设计、指令和公式构成。创造软件的过程几乎都是感知活动。我们只能从代码文件中看到并衡量它(用一系列机器能够读懂的随机符号来代表相对真实的东西,这多惊奇啊)。他们通过另外一种方式代替着现实世界。但是,软件只有在看起来象某些真实的东西时才有价值,即使它仅仅只是一条在电脑屏幕上的彩色波浪线那样真实。软件的独特挑战之一就是维持思想存在与现实存在的联系。
MW: 是的,我们都愿意认为自己独有的特性是“与众不同”。事实上,在很多方面,它们确实与众不同的,否则它们就不会被称为“特性”。但是,对于项目经理来说,相对于其他类型的项目例如JIM提到的那些,软件项目真的那么与众不同吗?让我们更深入的探讨一番。
人们容易掉进的第一个陷阱就是他们 没有区分技术的管理和项目进度的管理。其实,管理如何放置水泥板和在软件开发中如何在计算机屏幕上放置接口模块是有很大的不同。但是就项目范围、质量、时间、费用、风险等来说,这些不同对项目的管理有多大的影响呢?你可以看到两者,即使你可能无法看到两者后面隐藏的技术过程(从来有谁坐在那里看着水泥如何硬化呢?)。反过来说,即使确实存在差别,但是这些是同所使用技术的复杂性和工程所需的人员相关的。比如,当软件开发是 “最新的、技术先进的”时候,人们就认为构架已经建好了。但是,从这方面说,这不是独特的。
下面让我们对Jim的观点逐一探讨。
JB:1-通常,软件项目的成果不像其他项目那样可见或者容易理解。由于你不能像踢一捆砖头那处理一堆软件,你必须想方设法去确定软件的存在。在软件项目中最困难的工作通常是进度跟踪。有些大型软件项目的失败是由于初期工作比如设计不是按照预想的方式进行。比起软件设计,我们更清楚一个工厂的蓝图是否正确、完备和有用甚至时髦。一些所谓的脆弱项目的失败是因为它们没有一个仓库或者临时凑合的东西。软件项目的生产透明性需要我们拥有与建筑项目所没有的两样东西。 第一,我们需要不可见的思维的替代品,然后,需要对替代品的状态进行监控。也就是说,使进行中的东西一致并可见。为每一个子项设定一个客户,并检查每块“砖”都满足操作标准(Donesss?)。增量提交和早期测试可以加强对项目进行过程中的模块和蓝图状态的可见性。
MW: 恩,第一部分都是关于技术而不是关于项目管理的。如果我们将软件项目同建筑项目进行比较,也是出于脑力工作的需要而不是劳动的需要。而且,人的管理需要使用特别的方法。但是,我要说,对于研发而言两者都是同样重要的。
JB: 2 – 与其它项目相比,软件项目的最终状态通常更具有不确定性。有时候我们对我们想要的东西最多有个朦胧的概念。有时候,我们的概念很清楚但是我们忘记告诉其它人(通常是隐含的需求)。在项目进行的过程中我们经常改变主意。因为软件是一个相对较新的领域,软件项目几乎总包含着新艺术
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15027599/viewspace-421173/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15027599/viewspace-421173/