敏捷的思想并不是凭空产生的,它也是历史发展的产物,也是随着软件行业的不断变化而演进的,来应对不同时期的需求。
从上图我们可以看到软件开发最早的一次重大改变是由于软件危机引起的。随着硬件的发展,比如大型计算机的出现,使得软件系统的规模和复杂度越来越高,可靠性问题和性能问题成为矛盾的中心,随之就出现了软件危机。
软件危机的表现在于开发一个软件项目会超出预计时间,超出开始的预算,编写代码的效率低下,项目结束给出的软件不满足需求,软件难以管理维护,甚至软件始终无法交付。为了解决软件危机,人们定义了瀑布模型,问题随之得到解决。“瀑布模型”于1970年温斯顿.罗伊斯提出,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。由于在需求分析阶段得到完全、一致、准确、合理的需求说明十分困难,所以后来又有了原型模型,用于在开发真正的系统之前,建造一个可以运行的软件原型,减少需求不明确带来的风险。增量模型在开发软件时把软件产品作为一系列的增量构件来设计、编码、集成和测试,螺旋模型在每个项目阶段都使用瀑布模型,严格识别和控制风险。我们可以看到这些软件开发管理方法也在不停的被优化和发展,但是他们都是流程严密,相对复杂,跟后来的敏捷方法比较,我们称其为重量级方法。而且为了促进和识别软件开发管理方法的成熟度,还有了ISO和CMM等质量管理体系。
随着互联网的发展,人们慢慢意识到传统的重量级的方法不再适用,因为需求变得更加模糊多变,市场需要更快的交付速度,而不是从一开始就有一个详尽的设计,然后把设计实现出来,我们需要快速的获得用户的反馈,根据这些真实的用户数据来对后续的需求和策略做出及时的调整,显然我们需要一个新的软件开发的管理方法。
全世界优秀的工程师们也在努力的探寻新方法的可能性,这些方法来自于实践的总结,而不是理论的推导,比如XP。到了2001年,Martin Fowler,Jim Highsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地,举行了一次敏捷方法发起者和实践者的聚会。在这次会议中,他们讨论了他们实践过的这些轻量级方法,探寻这些方法的共性,最终他们签署了敏捷宣言,这是敏捷历史上的一个标志性事件。
Scrum历史
在1986年,竹内弘高和野中郁次郎在哈佛商业评论发表了他们的文章《The New New Product Development Game》。这篇文章描述了一种橄榄球方法,方法中“产品开发过程是在一个精心挑选的多学科团队的持续互动中产生的,团队成员从头到尾都在一起工作”,这篇文章经常被引用为Scrum框架的灵感来源。
1990年,Ken Schwaber在他的公司使用了一种方法,这种方法后来发展为Scrum。
1993年,Jeff Sutherland发明了Scrum,并作为流程在Easel公司使用。
1995年在奥斯丁举办的OOPSLA大会中,Jeff Sutherland和Ken Schwaber联合发表了论文首次提出来Scrum的概念。那次演讲本质上记录了Ken和Jeff在之前几年使用Scrum 时所学到的经验,并在会议上公布了第一版本的Scrum。
2001年Ken Schwaber和Mike Beedle合著了《敏捷软件开发-使用Scrum过程》,书中详细的介绍了Scrum方法。至此,Scrum被人们所熟知。
从敏捷的开始直到今天,虽然有着许许多的著作、文章和新的方法实践,敏捷的方法依然不是终点,从下图我们可以看到在敏捷的历史发展中是如何受到各种思想的影响而发展的,比如来自精益的影响产生了看板方法,也丰富了敏捷的框架。系统思考,DevOps,规模化扩展,只要不偏离敏捷的核心价值和原则,敏捷会继续吸收更好的实践来适应目前和将来的变化。
参考文章: