如何把敏捷思想融入到瀑布式开发环境中(2)

发表于:2011-10-08来源:infoQ作者:作者 Joseph Flahiff点击数: 标签:
使用敏捷管理项目 人们无法普遍理解一些细微的区别。如果你理解了那些简单的区别,就可以成功地使用敏捷来管理项目。你需要做以下三件事情: 知道

  使用敏捷管理项目

  人们无法普遍理解一些细微的区别。如果你理解了那些简单的区别,就可以成功地使用敏捷来管理项目。你需要做以下三件事情:

  知道项目管理与产品管理的区别

  规划好碰到项目/产品管理差异的临界点时应该做些什么

  每一步都与管理层沟通

  项目管理中需要管理三角约束:范围、进度、预算(有时人们把质量和/或资源也加到约束中)。产品管理也关注这些约束,只是对产品而言,它们是一些更加宽松的概念。

  图 1

  如果你用于开发产品的钱花完了,只要这个产品还在为客户创造价值,那么公司很可能在下一年制定一份新预算,让产品负责人去实现上一年没能实现的功能。而项目却不会如此,钱用完了,项目也就结束了。类似地,时间进度对产品也会比对项目更宽松一些。项目经常要关注时间表。项目经理要按时满足里程碑要求,并按时结束项目。产品也关注时间表,也关注满足里程碑要求,但不关注结束的时间,因为产品开发更关注下个版本中的优化工作。

  你该做些什么?

  使用敏捷的方式管理项目时,了解了项目管理和产品管理处理三角约束的不同,计划好下一步要做什么是非常重要的。

  这里是一些来自于我个人经验的建议和技巧。首先,你需要确定对于你的项目什么是真正最重要的。是范围最重要?还是进度、预算?这听起来很容易判断,但在现实中,很难让项目发起人保证只有一件事情最重要。(Rob Thomsett的滑块是一种很有用的工具,通过它我们可以识别出最关键的驱动因素)不要让他们告诉你有两个。我做过美国联邦政府委托的一个健康保险公司的项目。当说出了项目日期,人们就开始站在桌子上叫喊,让我们不能误了这个日期,可实际上只有项目内容全部完成后,项目才能算完成。如果日期到了,而范围没完成,项目就会被认为失败了,而只有内容完全实现了,项目才能算完成。你知道了什么最重要,才可能知道你需要管理些什么。例如,如果你在做一个纯研发项目,那么范围、进度、预算确实不会是驱动因素。如果你做的是即将到来的假期的项目,那么进度对你就是最重要的。一旦你知道了这个问题,你就会更多地关注最重要的因素。你应该基于最重要的因素来调整你的管理方式。

  在敏捷项目中,你仍然可以管理范围、进度和预算。然而,因为在项目管理和产品管理中,处理这些因素的方式会有根本的不同,所以我们就要仔细规划当发生冲突时我们应该做些什么。做好准备,当冲突发生或将要发生时,管理起来会更容易。

  图 2

  在敏捷项目中,范围管理是最常让人产生误解的问题之一。敏捷实践者会告诉你,在敏捷中,范围可以随时改变。的确如此,敏捷宣言的四条价值准则之一就是“响应变化胜过遵循计划(Beck,et al.,2001)”。对客户和市场要求的需求变化能及时响应,是组织接受敏捷的首要原因(Version One,2010)。用敏捷方式管理项目时,你会定义项目backlog和产品backlog。在项目开始前,你会就项目与产品的功能列表,与项目发起人进行讨论,如果可能的话,在整个项目生命周期中再与发起人进行多次讨论。项目backlog是项目需要做的具体的工作集合。当这些工作做完了,项目也就完成了。产品backlog是另外的一些特性,它们可能将来成为产品的一部分,但不是当前项目的一部分。在管理时,要非常清楚哪些内容在项目backlog 中、哪些内容在产品backlog中,并且需要与发起人反复沟通。如果识别出新的产品特性,就愉快地接受它们,并毫不犹豫地把它们加入到产品 backlog中——而不是项目backlog中。如果项目领导要求把它们加入到项目中,那就通过变更流程,把它们加入到项目backlog。变更流程可能像批复邮件一样简单,但是你有必要记录下来:新特性加入到了项目中、它对进度和预算将产生怎样的影响。尽管它可能是一个更简洁的流程,实际上这种做法与传统的管理范围的瀑布方式并无不同。

  关于范围管理的最后一句话是:对产品backlog的优先级要持续地进行再评估。产品负责人可能想重新调整产品backlog,在项目或产品 backlog中加入或去除一些特性。这与管理上述的新工作没有差别。弄清楚这些变化的影响,并通过尽可能简单、轻量级的流程把它们文档化,这是我们作为项目经理的职责。注意,产品负责人不要试图增加或去除当前正在开发中的工作项,那是不可行的,因为这些工作已经被团队选走了。如果对正在进行中的工作要做的变更十分重要而且必须要做,那么就要终止(在Scrum中)当前的这次迭代,然后再去规划新的迭代。我们可以通过减少“打回”来鼓励迭代范围的稳定性。

  对进度和预算我们也可以采用类似的处理方式。你需要清楚地界定什么是项目预算、什么是运营中的产品预算;什么是项目的进度、什么是运营中的产品生命周期的进度。然后你需要就此与项目发起人频繁且清楚地交流,这样不久后,项目发起人就能铭记这两者的区别,并且成为项目/产品 backlog、进度、预算的捍卫者。

  沟通

  你需要做的第三件事,是频繁地与产品负责人沟通项目与产品间的分界线。与产品负责人紧密合作,确保他们清楚地理解这个分界线。你要非常注意自己的语言,讲清楚“项目”和“产品”,清楚地描述产品backlog和项目backlog。这是你作为项目经理能最大地发挥价值的地方:你帮助公司在产品的背景下,保持对项目交付物的关注。

  敏捷/瀑布连续体

  “敏捷和瀑布 ——哪种方式正确?”我每天都会看到很多诸如此类标题的博客文章。这样的陈词滥调仍然有人谈论。“敏捷Vs.瀑布”制造了非此即彼的命题。把敏捷和瀑布视为战争中的敌人,只能有一个胜者。大量的文章纠缠于敏捷与瀑布辩论的两个核心问题:迭代VS.线性计划,命令式管理 VS.交互式管理。看(关于两个团队的一个故事,2008)下面的例子:

原文转自:http://www.ltesting.net