【科普】Scrum——从橄榄球争球到敏捷开发
对敏捷开发Scrum稍有了解的都知道Scrum来源于橄榄球,但你知道为何要以这项球类运动的术语来命名这个敏捷开发方法论吗?
Scrum与橄榄球对应关系
Scrum 一词源于英式橄榄球运动,是指双方球员对阵争球。双方前锋肩靠肩站成一横排,面对面躬身,肩膀互相抵在一起,形成一个通道。犯规队的球员低手将球抛入通道,此时通道两边的球员们互相抗挤,争取踢球给本方前锋。
比赛分为两支队伍,每个队伍上场的球员为11名。整个队伍中的球员分为进攻、防守和特别三种职能,三者各有优势又互相配合。进攻队员身手敏捷,凭借速度变化和身形穿透对方防线;防守队员身形强壮,阻挡对方球员的进攻;特别队员较为灵活,进可攻退可守,随时可充当前面二者的替补。
与橄榄球比赛对应,在Scrum组织中没有传统组织所强调的岗位、上下级关系、汇报等元素,每个人只有“一起赢得比赛”的目标,而且每个人的工作会有较大的重合覆盖度,角色可因势而变,提高效率的同时,有效避免传统组织可能存在的推诿和不作为。
英式橄榄球比赛中,球是被禁止向前传的:规则并不限制球员将球往前踢,但当踢球员踢球时,他的队友必须在球的后方。那么为了让球有方向地运动起来,球员必须将球往后传。如此显而易见的矛盾凸显了团队合作的重要性,同时创造了绝佳的纪律,因为这不是光靠一名球员就能成功胜利的比赛。球员们必须团队合作,才能带球向前冲过敌队的阵线,赢得最后的胜利。
在Scrum的工作方式下,团队化繁为简,只有三个角色,分别是产品负责人(PO)、Scrum
Master和开发团队。Scrum中的产品负责人,就像橄榄球队的四分卫,对产品的方向负责,对产品的Why和What负责。Scrum
Master,是一个团队的教练,关注人和人的互动质量,并减少外部干扰对团队工作影响。Scrum中的团队成员就是一支橄榄球队,大家共享时空、闭环决策。
此外,橄榄球赛还有一些特殊规则:与美式橄榄球不同,英式橄榄球无需佩戴护具,这使得比赛随时可以开展并更容易推广普及;比赛时间较短,上下场各7分钟;对不持球的球员不可以冲撞和阻挡;有意外或所谓的暴行时,裁判会判犯规,中断比赛来进行Scrum。
读到这里是不是若有所思?没错,Scrum开发模式并不只是简单地借用了英式橄榄球的术语,许多精神也与之一脉相承,二者的许多元素都可一一对应。
Scrum“出道”历程
Scrum的乘风破浪开发产品与橄榄球披荆斩棘赢得比赛有着一脉相承的精神与灵魂,橄榄球是深受全世界球员喜爱的运动,那么Scrum是如何借势乘风破浪“C位出道”成为目前软件开发主流模式的呢?
1986年,竹内弘高和野中郁次郎在《哈佛商业评论》上发表《新新产品开发游戏》的文章,首次提出将Scrum应用于产品开发,文章指出传统的接力式开发模式已不能满足日益激烈的市场竞争,开发模式需转向团队整体前进的橄榄球式。
1993年,进入Easel公司后,Scrum的创始人Jeff
Sutherland借鉴日本精益理念和《新新产品开发游戏》中的知识管理策略,在效率底下的部门中使用了新方法及工具,此时的实践就成了之后系统性Scrum中的各种元素。Jeff
Sutherland拥有空军飞行员经历带来的观察、导向、决定、行动四大要素,攻读生物统计学博士学位时又吸收了生物学生物组织系统和进化论适者生存的理念,在实践中取其精华,形成Scrum的定义。
1995年,Jeff Sutherland和另一位创始人Ken Schwaber规范化Scrum框架,并在OOPSLA 95上公开发布。
2001年,敏捷宣言及原则发布、敏捷联盟成立,Scrum是其中一种敏捷方法。Ken Schwaber和Mike Beedle推出第一本Scrum书籍《Scrum敏捷软件开发》。
2002年,Ken Schwaber 和Mike Cohn共同创办了Scrum联盟。
至今,根据《2020敏捷状态调查报告》,总共有76%的组织采用Scrum,Scrum已成为当之无愧的“C位”开发模式。
【科普】Scrum——从橄榄球争球到敏捷开发的更多相关文章
- 【转】来自《轻松scrum之旅》的敏捷开发总结
敏捷开发的核心价值观是,软件开发最重要的是给用户提供有价值的.可以工作的软件.如何保证提供有价值的软件,是通过反馈机制来完成的.这一点,我们体会很深.自从采用敏捷开发以后,我们比以前更有意识地希望得到 ...
- 敏捷开发之道(四)Scrum概述
上次的博文敏捷开发之道(二)极限编程XP和敏捷开发之道(三)极限编程XP续中,我们介绍了一下敏捷开发中的XP开发方法,今天咱们来了解另一个比较流行的敏捷开发方法--Scrum. 1.Scrum简介 S ...
- [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum
[敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum 1,Scrum概述 上篇中提到敏捷开发有两种主流的方法,一个是XP,另一个是Scrum,本篇简要介绍Scrum方法.Scrum是 ...
- 敏捷开发方法-Scrum
为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...
- 敏捷开发 与 Scrum
敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...
- 敏捷开发(2)-Scrum
什么是SCRUM Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作:把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速.富有 ...
- 敏捷开发与Scrum
敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...
- 敏捷开发流程之Scrum:3个角色、5个会议、12原则
本文主要从Scrum的定义和目的.敏捷宣言.Scrum中的人员角色.Scrum开发流程.敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程. 一.Scrum的定义和目的 Scrum是一个用于 ...
- 小谈Scrum敏捷开发流程
一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...
随机推荐
- Java实现 LeetCode 796 旋转字符串 (水题)
796. 旋转字符串 给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转 ...
- Java实现 LeetCode 617 合并二叉树(遍历树)
617. 合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点 ...
- Java实现高效便捷还容易懂的排序算法
PS:我现在越来越认为排序大法是,很深的算法了,就是简单的几个步骤,网上的大佬们能给你玩出花来(ง •_•)ง public class zimuzhenlie2 { public static vo ...
- Java中继承的详细用法
关于上一篇构造方法后的继承方法 构造方法链接 extends是继承的关键字 例: 下面的代码BB和CC就是AA的子类 允许一个父类有多个子类,但不允许一个子类有多个父类 /*final*/ class ...
- OC 语言特点以及与其他语言的区别
OC 作为一门面向对象的语言,兼容c语言的语法,又有区别于其他面向对象语言的地方: 特点: 1.使用自动释放池,通过引用计数处理对象的内存管理. 2.拥有id这种通用对象类型. 3.分类,功能强大,不 ...
- dfs算法总结
DFS 深度优先搜索 主要有两种实现方法:栈和递归 什么是DFS?说白了就是一直遍历元素的方式而已,我们可以把它看成是一条小蛇,在每个分叉路口随意选择一条路线走,直到撞到南墙,才会调头返回到上一个分叉 ...
- @Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题
[JavaScriptResult]在客户端执行服务器返回的JavaScript代码当一个内置的Ajax辅助方法请求一个操作方法,该方法会返回一个在客户端执行立即的脚本. public ActionR ...
- 遇到Error:Execution failed for task ':app:transformClassesWithDexForDebug'的解决方案
原因:项目中包含了所有的google play service 解决:只需要使用必要的服务即可 将compile 'com.google.android.gms:play-services:8.1.0 ...
- Oracle数据迁移后由列的直方图统计信息引起的执行计划异常
(一)问题背景 在使用impdp进行数据导入的时候,往往在导入表和索引的统计信息的时候,速度非常慢,因此我在使用impdp进行导入时,会使用exclude=table_statistics排除表的统计 ...
- Eureka加了secsecurity后注册失败
报错信息: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known ...