浅谈SCRUM

Posted 二十九日纪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈SCRUM相关的知识,希望对你有一定的参考价值。

为什么写SCRUM框架,这源于我阅读的一本书,“SCRUM之父”杰夫·萨瑟兰(Jeff Sutherland)的《敏捷开发》,里面的观点和思想在工作中不断的实践表示认同,所以借此机会写下来记录一下。



▲ 图片来源:百度


浅谈SCRUM

图:杰夫 • 萨瑟兰(Jeff Sutherland),「敏捷软件开发」的创始人之一(另一位是肯 • 施瓦布,Ken Schwaber),Scrum Inc. 的 CEO。


        SCRUM这个词语原本是橄榄球运动的一个专业术语,原意为团队通力合作,在场内传球,这个过程需要认真配合、信念一致和目标一致。


浅谈SCRUM

▲ 图片来源:百度


        讲起SCRUM时,总会连带着提起’瀑布法’,瀑布法大家应该更加熟知,在软件开发中,根据瀑布法的开发方法来将整个开发任务分为多个阶段,每个阶段做好后才会进入下一个阶段,整个开发的周期战线拉的非常冗长,对于软件开发这一条线上的人都是一种长期的“折磨”,当用瀑布法开发好的软件,也许将面临着风口变了,需求变了,不适用于几个月或几年前的规划了。


浅谈SCRUM
▲  片来源: 《敏捷革命》-瀑布法

        SCRUM和瀑布法最本质的区别在途反馈控制的闭环回路大小不同,SCRUM的反馈控制粒度小,粒度小调节起来就快,代价也小。

浅谈SCRUM
▲ 图片来源:《敏捷革命》-项目优先顺序

        Scrum源自日本的“丰田生产系统”(Toyota production system)和美国空军的”OODA”循环理论。

        scrum这个概念很大程度上源自于日本的丰田制造业的模式。在美国,有一个人专门研究丰田生产系统模式的人叫:詹姆斯·P·沃麦克(James ·P ·Womack )他将这种生产模式定义为“精益生产”(Lean production),写了本关于精益的书《精益思想》,这本书大概讲了一个问题:如何将生产做到最优的模式?这本书也是亚马逊创始人贝佐斯的书单之一。

        这里面的有一个关键词:“丰田生产系统”,这里不做详尽地展开,感兴趣的可以去阅读大野耐一的《丰田生产方式》。

        OODA循环,又称“博伊德循环”,博伊德是美国空军上校约翰·博伊德根据人脑决策过程建立的一种空战理论。指observe-orient-decide-act,中文译为:“观察-导向-决定-行动”,该理论认为双方都从观察开始,包括观察自己、环境和敌人,在观察的基础上获取相关的外部信息,根据感知到的外部威胁,及时调整系统,作出相对应的决定后采取相应的行动。敌对双方谁能更快地完成这一循环,谁就更有可能克敌制胜。

        其实我个人是不太喜欢什么大写字母的理论,比如:“PACA循环”(PLAN-DO-CHECK-ACTION)’MVP’等,更喜欢“荔枝油”这种汉语文字的理论。

        这让我不禁想套用个例子更好的理解博伊德的“OODA循环”,诸葛亮的空城计,用我们的历史套用下这个OODA循环。

(观察诸葛亮观察到司马懿引15万大军向西城蜂拥而来、观察到自己身边没有人、 兵极少、且城里有的更多的是老弱病残手无缚鸡之力的百姓;

(导向)诸葛亮利用司马懿很谨慎、隐忍的性格特点;

(决定)诸葛亮决定玩疑中生疑的心理战;

(行动)沉着镇定,大开城门,若无其事,自己在城楼上弹琴唱曲,岁月静好。

(结果)司马懿怀疑城中设有埋伏,引兵退去。

诸葛亮从而惊退敌军,预判了他的预判。

浅谈SCRUM
▲ 图片来源:百度

        讲了太多铺垫了,下面会详细的介绍scrum的框架,这个框架也是scrum的骨架最容易落地的东西,这里引入了一个概念Sprint(冲刺),之所以叫做冲刺,是因为这个说法能够让人产生一种紧张激烈的感觉,可以想象为百米冲刺,要以最快速度达到短期的目标取得阶段性的胜利,这整个完整的过程被称为一个冲刺,冲刺的周期可以在控制在1—3周之内,建议不要超过一个月,太短可能开发人员无法完成一个sprint,太长时间容易导致冲刺阶段各环节的角色疲软无力。

        这里有个很好的例子,就是以前中学时期上课的时候,刚刚开始上课的时候兴致勃勃的听着老师讲课,没过多久注意力变得不集中,发呆、睡觉、或传起小纸条活跃下大脑,越是接近下课,心越是躁动不安,好学生可能不会有这种心理,大部分学生都是非常期待下课后10min美好的课间休息。

        以下就是scrum的框架介绍:
        在最开始时需要一个产品负责人(product owner)将产品的需求列成一个产品需求列表(product backlog),挑选其中的一两个需求计划放入一个冲刺里,
        这种形式的介绍不太友好,还是以软化开发的生命周期形式来介绍该框架:

1、想法放入产品需求列表(由产品负责人列出)
2、根据需求列表的优先级放入几个现阶段重要的需求到sprint(迭代)中
3、针对sprint中的需求开一个需求澄清会(sprint planning)(在需求澄清会中必须弄明白两件事,what这个需求做什么?、how这个需求怎么实现?)
4、当信息互通后达到一致的迭代目标(sprint goal)时,将达成的需求根据优先级放入冲刺代办列表(sprint backlog)中,一旦一个团队决定了迭代目标(sprint goal)后,那这些需求就被锁定了,团队之外的任何人都不能在增加任务了,在增加任务可以选择通过下一个sprint来实现。

浅谈SCRUM
▲ 产品待办-冲刺待办-冲刺(循环)-软件增量开发
图片来源:百度

5、sprint backlog的表现形式通常以“白板”的形式展示,从左至右分别为to do、 doing 、 done,其中to do中的列表来源于sprint backlog。

浅谈SCRUM
▲  图片来源: 《敏捷革命》-SCRUM板

6、开发人员在sprint backlog中各自领取自己的需求后,进行开发工作。
7、开发团队每日进行立会(daily scrum),和工作中的每日晨会相同,只是叫法略有差别,在daily scrum中团队的每个成员分别要陈述三个问题:

  •      你昨天做了哪些工作,帮助团队完成了冲刺(sprint);
  •      今天你打算做什么,来帮助团队完成冲刺(sprint);
  •      在实现冲刺(sprint)的过程中碰到了什么问题、阻塞阻碍了团队的前进之路。

这种每日立会(daily scrum)需要明确三个简单的规则:
1)第一个规则就是每一天需要在固定的时间召开,每个成员都要出席,努力提高项目的透明度,这样的做法重点在于给团队一个固定的节奏。
2)第二个规则室开会的时间不能超过15分钟,scrum希望会议直截了当的回答三个问题,直击重点。如果某件事情需要进一步的讨论,记录下来,在每日立会(daily scrum)后作出进一步的讨论,这么做在于希望每个人用最少的时间,得到最关键宝贵的信息。
3)第三个规则是开每日立会( daily scrum)时大家都站起来,不要坐下,这样有助于缩短会议时间。

8、在约定的时间内完成开发工作,每天重复的反馈,这个迭代目标(sprint goal)被开发人员实现,这时定义为产品增量。

        在每个冲刺周期结束之际,需要对产品增量的交付内容进行产品的反馈(sprint review)这里理解为展示迭代(sprint) 成果,必须将你的成果展示出来,不展示成果是没有效果的,这些成果要能派的得上用场(比如能够实现列表的增删改查等等等)。

浅谈SCRUM
▲ 敏捷框架:冲刺-每日立会-检查与回顾
图片来源:百度

9、展示sprint成果后,征求团队成员的反馈意见,这一流程被成为回顾会(sprint retrospective)团队成员一起坐下来想想:
  1.    在本次的sprint中那些事执行的很顺利?
  2.    那些事应该做的更好?
  3.    在下一个冲刺阶段中可以做出什么改善?
  4.    提出具体的改善措施?

        要让这一次的回顾会过程有效,团队需要相互信任,大家需要将注意力集中在流程上,不要集中的责备一个人,比如:王xx在开发中进度缓慢,影响进度这种,要仔细的分析为什么会发生那件事?为什么为什么为什么?努力找到这其中的症结所在,共同寻求问题的解决之道,这才是回顾会的本意。

10、上一个冲刺阶段结束了,立即开始新的冲刺阶段。 这就是一个完整的冲刺流程。
根据回顾会提出的改进项,避免在下一个sprint中再次发生,到下一个sprint的回顾会中在来验收本次改进项的结果。

▲ 图片来源: 百度



▲ 图片来源: 知乎

        很多地方没有写到,如果感兴趣scrum,建议直接阅读本书,也许你会有不一样的思考,比如scrum与教育结合,scrum与个人梦想结合或者其他的方面,总之,懂得变通,别困于现状、减少内耗重价值本身,别为了敏捷而敏

        最后,想以《敏捷软件开发宣言》作为结束,敏捷软件开发宣言宣布了以下几种价值:人胜过流程、可以使用的软件胜过面面俱到的文件、客户合作胜过合同谈判、应对变化胜过遵循计划。SCRUM只是我用来实现这些价值的一个架构,算不上“方法论”。

以上是关于浅谈SCRUM的主要内容,如果未能解决你的问题,请参考以下文章

浅谈SCRUM

浅谈CMMI与Scrum

浅谈scrum站立会议

浅谈LeSS与SAFe的区别(三)

浅谈Scrum实施及敏捷开发方面的各类问题(好文)

扫盲&浅谈: 质量管理传统项目管理(PMP)敏捷项目管理(Scrum)和IPD体系