# Scrum和Agile的历史

现在敏捷这个词很流行,似乎一切和管理相关的工作都可以带上敏捷的字眼,人人都觉得自己在敏捷的工作。有些人认为Scrum就是敏捷,有些人觉得极限编程和DevOps才是敏捷软件开发的代名词,更有甚者认为使用了Kanban就可以宣布自己敏捷了。那究竟什么是敏捷呢?我们其实不容易给现在行业内的敏捷下一个明确的定义,下面我简单的说一说Agile和Scrum的含义,以及他们产生的历史。

Agile(敏捷)是一种建立和响应变化的组织能力,它用于应对不确定和动荡环境,并争取迈向成功。Scrum是一种思维或践行敏捷宣言与敏捷原则的组织级方法,它期望通过这些方法可以感知和响应市场变化。具体的来说,Scrum是一种利用客户反馈来快速交付高价值增量的框架、方法论以及相关配套工具。

敏捷软件开发不只限于Scrum、极限编程XP或特性驱动开发(FDD)等框架,也不限于结对编程、测试驱动开发、站会、计划会和迭代时间盒,而是一把遵循了敏捷宣言和原则的大树,支撑着上述方法论和实践共同的价值观理念。敏捷开发是追求对需求变化、技术变化、资源变化的响应能力,不断调整项目计划,提高软件项目的成功率。

# Scrum的历史

Scrum本意:这个词本意是英式橄榄球比赛次要犯规时比赛的两个球队在犯规地点对阵争球。

应用发展

  • Scrum应用于产品开发:1986年两位管理学学者竹内弘高和野中郁次郎在总结了当时的一些高科技公司的产品开发方式后发表了《New New Product Development Game》的文章,这篇文章首次将Scrum与产品开发联系起来,用来强调团队协作的重要性。
  • Scrum开发方法雏形诞生:1990年开始,受《New New Product Development Game》启发,并吸收经验主义、精益等思想理念,Ken Schwaber和Jeff Sutherland在不同公司设计并实施了相似的、后来发展成为Scrum的轻量级软件开发方法。
  • Scrum开发方法正式诞生:1995年,在奥斯汀举办的OOPSLA ’95上,Jeff Sutherland 和Ken Schwaber联合发表了论文,正式提出了Scrum概念,并规范化了Scrum框架。

知识体系

  • 2001年,第一本关于Scrum的书《Agile Software Development with Scrum》诞生;
  • 2002年,Ken Schwaber 和Mike Cohn共同创办了Scrum Alliance,随后几年发布了Scrum Master认证体系及其衍生产品;
  • 2009年,Ken Schwaber离开Scrum联盟,并创立了http://Scrum.org,并推出了PSM认证体系及其衍生产品;
  • 2010年, Jeff Sutherland和Ken Schwaber发布《 Scrum指南》,随后对其逐步更新,建立了全球认可的Scrum知识体系。

企业应用

  • 2005年,英国电信(BT)宣称全面推广敏捷方法,规模达千人,标志着大规模敏捷应用逐渐被接受和认可。
  • 2006年,Google、Microsoft、IBM、Amazon、华为等公司在大规模软件开发中开始应用敏捷,掀起敏捷应用热潮。ThoughtWorks主办第一届敏捷中国大会,正式在中国推广敏捷方法。

# Agile的历史

Agile不是指某一种具体的方法论、过程或框架,而是一组价值观和原则,也就是说它本质上是一个概念。但是我们在日常工作中提起敏捷,往往指Scrum,XP、DevOps等具体敏捷开发方法。

敏捷概念提出之前:20世纪80年代,随着个人电脑的普及,软件行业蓬勃发展,以瀑布模型为代表的传统软件开发方法无法适应激烈的市场竞争,因而产生了“软件危机”。软件行业从业者为了解决这一危机,发明并采用了很多轻量级软件开发方法。

  • 1995年,在OOPSLA‘95 会议上,Sutherland和Schwaber共同发表论文介绍Scrum方法——Scrum诞生。
  • 1996年,Martin Fowler,Kent Beck,Ward Cunmingham将XP方法引入C3项目——XP诞生。
  • 1997年,Alistair Cockburn提出Crystal方法——Crystal方法诞生。
  • 1998年,Jeff DeLuca正式提出FDD方法————FDD方法诞生。
  • 2000年, Martin Fowler 的文章 Continuous Integration 发表——持续集成方法CI诞生。

敏捷概念正式提出:2001年2月11日到13日,17位软件开发领域的领军人物(即上述轻量级软件开发方法的代表)聚集在美国犹他州的滑雪胜地雪鸟雪场。经过两天的讨论,全体聚会者提出“敏捷”(Agile)这个概念,以概括一套全新的软件开发价值观,并共同签署《敏捷宣言》将这套价值观传递给世界。

敏捷开发运动的开始:Google、Microsoft、IBM、Amazon、华为等公司在大规模软件开发中开始应用敏捷,掀起敏捷应用热潮。