传统项目管理与敏捷项目管理:主要差异及铁三角解析

无论你是Scrum主管、项目经理、产品负责人、团队成员,或仅仅是想回答“如何在现实世界中运行一个敏捷 Scrum项目?”——本文一定会为你提供你需要的答案。

传统项目管理

传统的项目管理(瀑布模型)方法是线性的,所有流程阶段按顺序依次进行。这种方法依赖于可预测的工具和可预测的经验。每个项目都遵循相同的生命周期,包括可行性分析、规划、设计、构建、测试、生产和支持阶段,如下图所示。

Waterfall vs Agile Software Development

瀑布模型与敏捷软件开发

整个项目都是预先规划好的,不允许对需求进行任何更改——就像瀑布模型、PMI的PMBOK以及PRINCE2一样,它们僵化且高度受控。它们从头到尾划分出明确的阶段,并假设你已经拥有所有所需的需求和信息。

这种方法假设时间和成本是可变因素,而需求是固定的——这也是为什么传统项目管理常常在预算和进度方面遇到困难的原因。

敏捷项目管理

虽然传统系统高度重视前期规划,但成本、范围和时间等因素至关重要。而敏捷则强调团队合作、客户协作和灵活性。

敏捷否定了传统项目管理,认为其枯燥、限制性强,不适合快节奏的现代世界。敏捷项目管理是迭代式的,旨在每次开发迭代中持续整合用户反馈并持续发布。每个任务的产出都是你向利益相关者销售的产品。团队和工作流程都围绕着为客户创造直接有用的东西而构建。

传统还是敏捷——如何选择?

根据Standish集团2011年的CHAOS报告,敏捷项目的成功率是瀑布模型项目的三倍。下图展示了2002年至2012年间研究得出的具体结果:

Success Rate of Waterfall vs Agile Projects

瀑布模型项目与敏捷项目成功率对比

传统与敏捷之间的差异

下表总结了Scrum与传统项目管理模型之间的许多关键差异。

类别 传统 敏捷
开发模型 顺序式(瀑布模型) 迭代式
重点 流程 人员
管理风格 控制 促进
客户参与 仅限于需求收集和交付阶段 持续且现场参与
开发人员工作风格 在团队内独立工作 协作式或结对编程
技术 任何 主要面向对象
产品功能 包含所有功能 优先实现最重要功能
测试 在开发周期结束时 迭代式和/或测试驱动
文档 详尽 仅在需要时

变更成本

传统上,软件项目中的变更会被避免,因为项目后期变更成本会显著增加。敏捷软件开发认识到变更不可避免,且过度投入前期规划是不切实际的。这一点在敏捷宣言的四个价值观之一中得到了明确表达:

“响应变化的需求,而非遵循固定的计划。”

敏捷对此观点提出挑战,并认为变更成本可能相对平稳,如下图所示:

Cost of Change in Traditional vs Agile

传统与敏捷中的变更成本

项目管理中的敏捷与传统铁三角

传统上,项目管理的成功与在范围、时间、成本和质量方面的约束管理能力相关,如下图所示。这是一个流行的隐喻,表明项目经理需要合理平衡这些约束。

Iron Triangle in Agile vs Traditional Project Management

敏捷与传统项目管理中的铁三角

传统铁三角的问题在哪里?

例如,通过增加预算或减少范围,项目可以更快完成。同样,扩大范围通常需要相应增加预算和时间。如果不调整时间表或范围而削减预算,会导致质量下降。然而,在实践中,约束条件之间的权衡并不总是可行的。例如,在资源充足的项目中投入更多资金(和人力)实际上可能会减慢进度。此外,在表现不佳的项目中,如果不影响质量而改善预算、进度或范围,往往是不可能的。

因此,传统铁三角显然不足以作为项目成功的模型,因为它忽略了成功的关键维度,包括利益相关者的影响、学习成果以及用户满意度。

敏捷铁三角——范式转变

在传统方法中,三角形通常如下面左侧所示。如你所见,产品需求具有固定的范围。因此,为了确保产品交付所有所需功能,我们需要在资源(和预算)以及时间表(截止日期)上保持灵活性。如果我们必须确保产品包含初始需求规格中描述的所有功能,可能需要将发布日期推迟数月甚至更久。

在敏捷理念中,时间表是固定的(在Scrum中,这是通过时间盒 冲刺以及固定资源来实现)。因此,当事情不如预期时,必须缩减范围。但在敏捷方法中,我们确保即使必须在范围上妥协,仍然能够从产品待办事项列表中交付最高优先级的项目,以最大化项目产生的价值。

Iron Triangle in Agile Context

敏捷环境下的铁三角

 

Leave a Reply