当前位置: 首页 > 科技观察

什么是真正的敏捷开发?敏捷开发和瀑布式开发有什么区别

时间:2023-03-15 13:44:27 科技观察

什么是真正的敏捷开发?敏捷开发与瀑布开发有何不同。从本质上讲,敏捷开发的一个重要目标就是建立持续价值交付的能力。这种能力最终必须服务于业务创新,促进业务成功。敏捷开发的目标——提早交付我们经常讲敏捷模式,那么什么开发模式不是敏捷的呢?我们通常说的“瀑布”不是敏捷。瀑布式开发模型将开发分为需求、设计、开发、测试等一系列阶段,如上图所示。形似瀑布,故称瀑布开发。问题是,需求的交付不都是经过这些阶段的吗?瀑布式开发的本质不在于阶段,而在于批。需求一起批量设计,然后批量开发,批量测试,交付等等。批处理有什么问题?首先,批处理延迟了价值交付,所有需求只能在最后阶段交付,价值交付相对较晚。那么,如果价值交付延迟怎么办?看这张图片。左边是摩尔,英特尔的创始人,摩尔定律的缔造者。摩尔定律告诉我们,18个月后,同样的钱可以买到两倍多的东西,比如计算能力、存储容量、晶圆数量等等。右为谷歌执行主席施密特。他提出了反摩尔定律,表述为:“如果我们在18个月内只能卖掉和今天一样的东西,我们将只能得到一半的收入。”反摩尔定律是摩尔定律的简单推论,它告诉我们越晚交付,价值越低。这对硬件公司来说至关重要,甚至决定了它们的命运——技术进步必须跟上摩尔定律,否则利润就会被摩尔定律吞噬,产品或公司就会消亡。软件或互联网服务呢?IBM在1990年代确实度过了一段美好时光,当时它意识到自己不能成为一家硬件公司,而是专注于服务和软件。然而,很快互联网时代来临,软件和服务行业的创新一下子加速了。这时候,相对于硬件公司,反摩尔定律在软件和互联网服务公司更有效。迟早,时间可能不仅仅决定价值,但有时错过了整个时间窗口,你可能一无所获。逆摩尔定律告诉我们,越晚交付,价值越低。所以对于软件开发来说,瀑布模型延迟了价值的交付,获得的价值更少。与瀑布相比,我们提出迭代交付。我们把开发分成迭代,每个迭代交付一部分价值。更早交付的价值通常意味着更多的价值。在这方面,迭代相对于瀑布的本质是更小批量的快速交付,这样可以更早地获取更多的价值,获得市场竞争的机会。因此,敏捷开发的首要目标是更快地交付价值。这里的快不是指绝对的速度,而是更早的交货。敏捷开发的目标——有效学习,灵活应对变化我们再看一张坐标图,这个坐标是项目的时间进程,最左边是项目开始,最右边是项目结束。纵轴是团队拥有的项目和产品的知识,比如用户想要什么,采用什么样的产品方案,做什么样的功能,以什么样的形式协作,选择什么样的技术方案等等。我们想问一下团队(包括产品、开发、业务)什么时候对产品和项目的了解最多、最多?大家的回答很一致,什么时候项目结束。这是显而易见的。我们在项目过程中积累了知识,尤其是当产品交付给用户时,用户反馈:“我不要这个,我说的是……”,这个时候,你的知识突然增加了,你叹了口气。“你怎么不早说?”中间可能会出现沟通问题,但更可能是此时用户很清楚或者能够描述自己想要什么。更何况,一开始我们甚至可能无法准确定义用户是谁。产品和业务的发展本质上是一个探索的过程,开始一定是最懵懂的时刻。还有一个问题。项目中的大部分决策是在什么时候做出的?大家的答案也很明确——项目启动的那一刻。这里隐藏着一个主要的悖论。我们在最懵懂的时刻做出最重要、最多的决定,并以此作为后续执行的依据。面对不确定的技术和市场环境,传统的开发模式已经不能满足要求,矛盾越来越突出。解决这个悖论的敏捷方法是迭代。一开始,我们会做一些初步的决定,比如总体目标是什么,总体策略和打法是什么,从哪里开始,如何测试等等。但这些只是初步决定,确定了总体方向。在整个开发过程中,我们迭代交付需求,获取市场反馈和最新信息,并根据这些反馈和信息,积累和修正产品知识,进行增量决策和调整。在产品开发过程中,技术环境、市场环境、竞品策略、团队认知都会发生变化。面对不断变化的环境,我们必须承认自己的无知,在开发过程中积极有效地学习,不断吸收反馈,灵活调整。这也是敏捷、有效学习和灵活应对变化的第二个业务目标。结合上面提到的敏捷开发的两个业务目标,我们就可以定义敏捷开发。敏捷指的是创建能够更快(更早)交付价值、更有效地学习且更灵活的组织的能力。从能力的角度来看,敏捷的核心是持续交付价值的能力和基于持续交付的快速学习能力。要拥有这样的能力,就需要从根本上改变产品的开发和交付方式。这张图从概念上反映了从传统的批量开发方式到敏捷持续交付方式的转变。传统的开发方式下,需求分批次流经产品、UED、开发、测试、运营等各个阶段和组织部门,直至交付,各个职能部门各自优化自己的工作,形成效率孤岛。由于批次原因,需要等整个批次完成后才能集中精力进入下一阶段。从单个需求来看,需求大部分时间都处于等待状态。上图的右半部分表达了这个过程。单个请求的实际处理时间很短(图中虚线上方的绿色短线),大部分时间都处于等待状态(图中虚线下方的红色长线),最后显示的实际交货时间很长。通过敏捷开发的实施,我们希望整个组织更加一致,协作更加紧密,缩短交付周期。图中左半部分是理想的敏捷开发模型,体现了敏捷开发的基本目标——持续价值交付和快速反馈,学习,其中持续价值交付是基础。