敏捷开发与瀑布流开发相比,二者的优劣都在哪些方面?
我认为两种模式没有直接对比下的好与不好,只有相对于不同的项目和团队,到底合不合适的问题。那些断言敏捷开发比瀑布流开发更好的人,可能没有实战经验或经历过的项目较小,没有机会试错。
首先就我的经验和理解来对比一下敏捷开发和瀑布流开发在项目管理中表现出的特点。
敏捷开发强调拥抱变化,具体方法是将项目拆解成用户故事,并排出优先级,在不考虑细节和技术定义的情况下确认迭代周期。同时敏捷开发提倡去文档和去工具化,在项目过程中可以随时增加和修改需求优先级,通过DailyScrum(每日站会)来确保团队每个人都知晓项目进度和变化。
瀑布流开发强调对项目的预见和严格控制,遵循需求分析>设计>编码>测试>发布的步骤,并通过文档或管理工具来把控项目。为了避免过程中的需求变化,在前期需求细节的确定上会花费大量时间。
为什么会有越来越多的人认可敏捷开发?我们先从产品(项目)说起。
随着互联网的普及,涌现出越来越多面向个人用户的产品。这类产品的需求总是在不断增加和变化的,产品不得不拥抱变化,而敏捷开发更适用此类产品。因此我们总是强调敏捷开发,强调精益产品。
但瀑布式开发也不是就此无用,由于强调严格遵循流程,项目经理更容易规划和管理进度。在一个新产品从0到1时,需求都是基础且不会有太大改动,这种情况下使用瀑布式开发更好。另外一些面向政府或者大型机构的产品,往往有其业务逻辑支撑,需求固化(组织也相对抵触新的风险)。通常组织对预期(时间)也会有强烈的要求,瀑布式开发更容易把控进度。
再从团队来进行分析,敏捷开发强调直接沟通,如果在团队人数众多,以及人员变动的情况下,就要花费许多时间使团队达成一致。因此敏捷开发更适合小型的,稳定的,以及容易达成共识的团队。而大中型团队,且人员变动频繁,则适合瀑布流开发中强调的文档及管理工具方法。
最后总结一下,我们没有必要盲目迷信某一种方法论,不同的场景适配不同的方法就好啦~
标签: