|
不可见性(不够直接,不易感知进度,不易监控)PgMp.mypm.net
不确定性(范围不确定,目标模糊)转自项目管理者联盟
多样性(很难有通用方法和最佳实践可复制)www.mypm.net
在修订中计划(渐进的计划)项目管理者联盟
丰富多彩的开发方法(条条大路通罗马)转自项目管理者联盟
额外的工作(方法,工具和技术)blog.mypm.net
没有纯粹的软件项目(不要忘记了目标)PgMp.mypm.net
积累和运用(技术积累和复用)项目管理者联盟
工具的制作和改造(方法,工具和技术)项目管理培训
聘用软件项目经理项目管理培训
JB:我曾经用了很多时间向非软件专业人员:客户、支撑机构、项目发起人、有时候甚至是项目经理讲解什么是软件项目:。几年前,我曾经帮助一位受过PMI 培训的项目经理,并且从事工厂地板安装项目多年的机械工程师,拯救一个挣扎在失败边缘的关键的软件项目。该项目已经提交并经常名列Media Metrix前50名,这位项目经理现在管理着那家工厂的大部分软件开发项目。其实,她最需要的只是对软件项目和其他项目之间的不同有所领会。此外,一些软件专业词汇和偶尔对任务、技术和工作成果进行理智的检查,就是帮助她走向成功的一切。软件项目是有一点独特之处,但是差别并不悬殊。上个月,一位刚被委任为他公司软件项目管理办公室的资深项目经理在NewGrange讨论列表中提问道:“如何学习软件项目?”。很长时间以来我给非软件专业人士解释软件项目,但直到现在我才记录下我的答案。我的回答从最初的4项增加到10项。因此,就有了下面的对非软件项目经理眼中软件项目的10大不同之处。项目管理者联盟
MW: 人们自愿花时间完成的记录他们实践经验的文档,往往是非常有价值的。注意,我强调的是“实践”。项目管理者联盟
JB: 软件是一种与众不同的东西。软件和其他种类项目的成果最大的区别是:它不是物理的。软件由想法、设计、指令和公式构成。创造软件的过程几乎都是感知活动。我们只能从代码文件中看到并衡量它(用一系列机器能够读懂的随机符号来代表相对真实的东西,这多惊奇啊)。他们通过另外一种方式代替着现实世界。但是,软件只有在看起来象某些真实的东西时才有价值,即使它仅仅只是一条在电脑屏幕上的彩色波浪线那样真实。软件的独特挑战之一就是维持思想存在与现实存在的联系。training.mypm.net
MW: 是的,我们都愿意认为自己独有的特性是“与众不同”。事实上,在很多方面,它们确实与众不同的,否则它们就不会被称为“特性”。但是,对于项目经理来说,相对于其他类型的项目例如JIM提到的那些,软件项目真的那么与众不同吗?让我们更深入的探讨一番。项目管理者联盟
人们容易掉进的第一个陷阱就是他们没有区分技术的管理和项目进度的管理。其实,管理如何放置水泥板和在软件开发中如何在计算机屏幕上放置接口模块是有很大的不同。但是就项目范围、质量、时间、费用、风险等来说,这些不同对项目的管理有多大的影响呢?你可以看到两者,即使你可能无法看到两者后面隐藏的技术过程(从来有谁坐在那里看着水泥如何硬化呢?)。反过来说,即使确实存在差别,但是这些是同所使用技术的复杂性和工程所需的人员相关的。比如,当软件开发是 “最新的、技术先进的”时候,人们就认为构架已经建好了。但是,从这方面说,这不是独特的。项目管理者联盟
下面让我们对Jim的观点逐一探讨。项目经理圈子
JB:1-通常,软件项目的成果不像其他项目那样可见或者容易理解。由于你不能像踢一捆砖头那处理一堆软件,你必须想方设法去确定软件的存在。在软件项目中最困难的工作通常是进度跟踪。有些大型软件项目的失败是由于初期工作比如设计不是按照预想的方式进行。比起软件设计,我们更清楚一个工厂的蓝图是否正确、完备和有用甚至时髦。一些所谓的脆弱项目的失败是因为它们没有一个仓库或者临时凑合的东西。软件项目的生产透明性需要我们拥有与建筑项目所没有的两样东西。第一,我们需要不可见的思维的替代品,然后,需要对替代品的状态进行监控。也就是说,使进行中的东西一致并可见。为每一个子项设定一个客户,并检查每块“砖”都满足操作标准(Donesss?)。增量提交和早期测试可以加强对项目进行过程中的模块和蓝图状态的可见性。项目管理者联盟
MW: 恩,第一部分都是关于技术而不是关于项目管理的。如果我们将软件项目同建筑项目进行比较,也是出于脑力工作的需要而不是劳动的需要。而且,人的管理需要使用特别的方法。但是,我要说,对于研发而言两者都是同样重要的。项目管理论坛
JB: 2 – 与其它项目相比,软件项目的最终状态通常更具有不确定性。有时候我们对我们想要的东西最多有个朦胧的概念。有时候,我们的概念很清楚但是我们忘记告诉其它人(通常是隐含的需求)。在项目进行的过程中我们经常改变主意。因为软件是一个相对较新的领域,软件项目几乎总包含着新艺术—将软件应用于解决新的或扩充的难题。我们在创造的过程中学习我们要创造的东西。通过学习软件能做什么就可以提供一个的平台,来发掘软件的更多功用。有很多强有力的理由能够说明这一点。在项目进行的过程中,由于各种原因,软件项目的目标发生了变化。但与建好一半的墙相比,要意识到软件中的这些变化要困难一些。所以,软件项目应该采用渐进的方式来实现过程管理。渐进主义和沟通有助于项目包容在进行过程中发现的新价值和新挑战。它们也有助于凸显我们能够描述的隐含需求。而隐含需求可能会给项目带来巨大的冲击。除了渐进主义,测试也有助于发掘新功能、隐含需求和已有成果的变化。通常,在预定投zi和交付基线物的基础上开发和测试软件,以及基于我们所知道的情况考虑其他有限制的投zi都是有意义的。项目管理者联盟
MW: 我们还是在讨论技术的管理。确实,存在着一定的不确定因素,也可能是比建筑工程中能预料到的风险更大,虽然在建筑中工程保障要大得多。但是,同样的问题可以在电影制作中继续深入讨论。在拍摄某一幕并审核后就不得不返回进行调整。即使这样,除非在付费的观众面前播放,否则也不可能知道最后效果。项目管理者联盟
JB: 3 –在我们称之为“软件”和“软件开发”的项目中存在着很多的不确定性。设计一级方程式赛车同设计下一年的丰田佳美是有区别的,而丰田佳美和设计通用的新型燃料电池多用汽车平台也有区别。他们都与汽车设计有关,但是我们对他们的处理方式却十分不同。从某种意义上说,我们努力做到一致的设计软件,即使软件产品就像丰田佳美、赛车和平板车一样不同。系统处理了所有的差异问题,对于软件设计过程来说这些都不一样。考虑到这些差异性,我认为通用的软件方法论只能是一种幻想。我们应该做一些有意义的事情。跟踪工作,发布成果。你的软件项目可能和典型项目或者上一个项目有很大的区别。如果你的项目和典型的项目不一样,请相信你自己的项目。项目管理者联盟
软件产品:即使能够看到交付成果和固定的目标,软件产品通常差别很大而且是不可见的。部分是由于软件产品代表着很多不同的东西。因此,一个软件项目经理必须主动理解在他的项目中软件产品如何工作。training.mypm.net
MW:我曾经参加过许多不同类型的建筑项目(还有软件项目),我想在谈论到建筑项目时,我也能提出一样多的问题。特别你正在负责“新颖”的设计而不知道从何着手的时候。项目经理圈子
JB: 4 从功能特性、代码到运行程序,整个产品链在吞吐量、可用性、可靠性甚至可变性本身都存在着很多差别。软件产品应不同的应用技术、不同的平台而不同,甚至同一个产品链如果部署方式不一样也是不同的。不同的产品差别很大,而且软件产品运行环境不同的时候也是不一样的。对于软件,我们无法保证我们能按照任何给定的速度从无到有创建出来,即使上周我们刚刚完成。软件项目可能还包括了对产品工具和方法的自愿的或被迫的更改,当你进行着这些动作的时候,也改变着软件产品。胡佛大坝曾经使用一种新颖的方法使水泥的硬化速度加速百分之一或更多。这种生产过程的改变在软件项目中经常出现(虽然有时候方向相反)。因此,调节项目向你要获得的成果前进包括了速度、返工河额外的动作。渐进式策略在这里有发挥作用了—在前进的过程中进行测量并察觉到事情的变化。作为一个项目经理,对软件项目进行重新计划不是一种形式而是一种需要。项目经理博客
MW: 相信我,在软件开发的生涯中,我经历了类似的无法保持前后一致的项目—当然,那时我们仅仅是用手工建立土坝和砖墙。service.mypm.net
|