IT圈故事杂谈(5)敏捷一词的由来

 

IT圈故事杂谈(5)敏捷一词的由来

在IT圈,你可能经常听到“敏捷”这个词,如敏捷开发、敏捷测试、敏捷项目等等。那么,你知道敏捷是什么意思?它代表了什么?你知道敏捷一词是怎么来的吗?

IT圈故事杂谈(5)敏捷一词的由来

为了揭示“敏捷”的实质,我们先从软件的交付方式和生命周期谈起。

当进行开发软件时,通常会经历需求分析、软件设计、系统代码构建、系统集成、软件测试等几个步骤,这些步骤组成的过程称为软件开发流程,整个过程构成了软件项目的生命周期。

IT圈故事杂谈(5)敏捷一词的由来

软件开发过程如果严格按照以上的步骤执行,每个步骤完成后才流转到下一步,这样的软件开发模式叫“瀑布”模式。例如:分析完全部需求后,才开始做软件设计,在软件设计之后,程序员开始软件不同模块代码的编码工作,然后再将各模块代码集成为一个整体进行测试。

这种模式基于最初获知的信息,它有一个前期的需求规范,前期设计,并且因此有一个前期计划,所以有一些人称它为“计划驱动开发”模式。这种模式以“预测”的方式假定我们知道想要的是什么,以及如何产出,所以说这种生命周期是预测型的。“瀑布”一词通常就是用于指IT项目中使用的预测型生命周期。

IT圈故事杂谈(5)敏捷一词的由来

(摄于云南丽江白水台@2018年6月29日by王映红)

预测型生命周期在许多项目中使用,并且通常是一种比较适当的方法。例如土木建设项目,建造一所学校,首先需要进行计划和设计,然后依计划执行。

但在软件行业,情况并不总是如此。正如这个行业常说的,客户在看到产品之前不知道他们想要什么。

想象一个典型的IT开发项目。你可以花大量时间做详细的需求分析和需求定义,之后,其他事都以此为基础。接下来会发生什么?客户看到最终产品结果时可能会非常不满!这不是他们想要的东西,他们将要求变更,变更将付出高昂的成本,你可能不得不更改之前做的所有的工作。

在软件行业,软件开发过程的步骤是可以重叠进行。例如:无需等到所有单元都开发完成再进行集成和测试。这样就可以使用一个增量的创建产品的生命周期,不断交付多个可工作的软件版本,每次都有更多特性。

在预测型生命周期中,假如你启动了一个建设学校的项目,不管你做了多少变更,最终的结果仍将是一个学校,而不是其他。例如,不可能是一个主题公园!

然而,在IT开发中,你可能会启动一个项目来创建类似“学校”的目标,却最终创建了一个“主题公园”。因为,我们可以在IT开发项目中进行增量交付。我们在很短的时间内创造产品的增量,而不是预测产品。我们将向客户和最终用户展示增量(产品的最新版本),接收反馈,并决定在下一段时间内做什么。因此,我们不再预测,而是继续进行项目并根据反馈改进。这种生命周期称为“适应型”生命周期。

在软件开发中,敏捷通常被宣传为新事物。其实,“敏捷”是对使用适应型生命周期的一种流行叫法,这也是人们真正定义敏捷的方式。

适应型生命周期在人类悠久的历史中,是经常存在的。例如旧时代的战争。你能否使用预测方法管理战争?一开始就策划和设计一切?当然不是。你可能有一个高层级计划,它更像是一个战略而不是一个计划,一次管理一场战斗,或者几个并行的战斗,并根据每个战斗的结果,调整计划的其余部分。这不是一个令人愉快的例子,但这个例子能明确表明适应型生命周期不是新的。

然后,我们这个时代面临越来越多的IT开发项目,预测型生命周期并不是管理这些项目的最佳方式。

人们试图容忍预测型生命周期的问题,但同时压力越来越大,直到问题暴露,并最终导致变革!

上个世纪90年代,一部分人开始使用适应型模式进行IT开发,并逐渐将其规范为可重复的管理流程。2001年,一些先驱者聚在一起,给这一流程取了个名字,叫敏捷开发,并创建了敏捷宣言,使其正式化。

为什么不叫适应型开发?

正如传说的那样,他们讨论的结果,最后的两个选项是敏捷和适应。不幸的是,他们最终的决定是敏捷,但其实适应型会好得多,因为它描述了这一方法的本质,并防止了许多误解。

好吧,敏捷这个词就这样被确定下来了。

最后,让我们再看看他们创建的著名的敏捷宣言吧。

IT圈故事杂谈(5)敏捷一词的由来

我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:

个体和互动 高于 流程和工具

工作的软件 高于 详尽的文档

客户合作 高于 合同谈判

响应变化  高于  遵循计划

也就是说,尽管右侧事项有其价值,我们更重视左侧事项的价值。

2020-3-11