`

Scrum 实施经验(转载)

 
阅读更多

什么是 Scrum ?

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。
虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法:Scrum of Scrums 。
相关线上资料:
http://zh.wikipedia.org/wiki/Scrum

角色

Scrum定义了许多角色,根据猪和鸡的笑话分为两组,猪和鸡:

一天,一头猪和一只鸡在路上散步,鸡看了一下猪说,“嗨,我们合伙开一家餐馆怎么样?”,猪回头看了一下鸡说,“好主意,那你准备给餐馆卖什么呢?”,鸡想了想说“餐馆卖火腿和鸡蛋怎么样?”,“我不这么认为”,猪说,“我全身投入,而你只是参与而已”。

这个笑话挺冷的……不过倒是比较准确的划分了项目参与人员。

猪组

猪组的成员是在Scrum过程中全身投入项目的各种角色,他们在项目中承担实际工作。他们有些像上边那个笑话里的猪,要把自己身上的肉贡献出来。

  • 产品负责人
    产品负责人代表了客户的意愿。这保证了Scrum团队在做从业务角度来说正确的事情。产品负责人编写用户故事,排出优先级,并放入产品订单。
  • Scrum主管(或促进者)
    Scrum主管促进 Scrum过程,他的主要工作是去除那些影响团队交付冲刺目标的障碍。Scrum主管并非团队的领导(因为团队是自我组织的),而是一个负责屏蔽外界对开发团队的干扰的角色。Scrum主管确保Scrum过程被按照初衷使用。Scrum主管是规则的执行者。
  • 开发团队
    负责交付产品的团队。一个团队通常由5至9名具有跨职能技能的人(设计者,开发者等)组成,承担实际的开发工作。

鸡组

鸡组的成员并不是实际Scrum过程的一部分,但是必须考虑他们。敏捷方法的一个重要方面是使得用户和利益相关者参与到过程中的时间。参与每一个冲刺的评审和计划,并提供反馈对于这些人来说是非常重要的。

  • 用户
    软件是为了人而开发的。有人说,“假如森林里有一棵树倒下了,但没有被人听到,那么它算是发出了声音吗?”同样地,人们可以说,“假如软件没有被使用,那么它算是被开发出来了么?”
  • 利益相关者(客户,提供商)
    影响项目成功的人,但只直接参与冲刺评审过程。
  • 经理
    为产品开发团体搭建环境的人。

经验:

  1. Scrum主管开发的时间可能不会很多,一般来说也不适合参与开发,因为排解外部干扰,解决项目组障碍都会花去很多零碎时间进行沟通以及其他事务,都会干扰个人的正常开发。
  2. 建议不要让开发主力担任Scrum主管,应当由擅长沟通,有较深技术底蕴,对产品比较熟悉或者理解深刻的人员担任。
  3. Scrum主管与开发人员是平级的,身份对等,所做的工作更有点偏向于服务形式。其本身基本上可以看做是一个“人形文档”,项目执行中任何需要产品文档的地方,比如咨询,需求变更,新成员培训等等都由Scrum主管负责。
  4. 对一个项目来讲,Scrum主管非常重要,其他成员可以变更,但绝对要避免Scrum主管的变更。Scrum主管的责任也很庞杂,需要擅长处理并发事件的人来担当此角色。
  5. Scrum的效率核心就是“排除干扰”,开发人员可以为一个项目全力以赴。Scrum主管对干扰的排除能力直接决定了项目执行效率。
  6. 所有的分歧交由Scrum主管来敲定,因此其技术能力与现实业务解决能力不能忽视,应当从开发人员中抽取人员负责此工作。考虑到离开开发岗位一段时间,技术能力会有所退化,建议轮岗。

会议

在冲刺中,每一天都会举行项目状况会议,被称为“scrum”或“每日站立会议”。每日站立会议有一些具体的指导原则:

  • 会议准时开始。对于迟到者团队常常会制定惩罚措施(例如罚款,做俯卧撑,在脖子上挂橡胶鸡玩具)
  • 欢迎所有人参加,但只有”猪”可以发言。
  • 不论团队规模大小,会议被限制在15分钟。
  • 所有出席者都应站立。(有助于保持会议简短)
  • 会议应在固定地点和每天的同一时间举行。

假设会议定在每天下午下班前,在会议上,每个团队成员需要回答三个问题:

  1. 今天你完成了那些工作?
  2. 明天你打算做什么?
  3. 完成你的目标是否存在什么障碍?(Scrum主管需要记下这些障碍)

每一个冲刺完成后,都会举行一次冲刺回顾会议,在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。

会议的时间限制在4小时。

经验:

  1. Scrum会议的核心是:不要太长!应当尽量避免任何可能导致会议延长的事情。
  2. 项目开发开始前的会议不要过长,主要确定方向,任务与最关键的技术细节。应提供一个技术预备期供大家分享要使用的技术知识或者制定开发规范。
  3. 项目开发正式开始前,必须达成必要的开发共识,必须完成基本的开发约定。每个人并不是只维护自己的代码。
  4. Scrum会议的督促作用非常明显,但也会给成员带来相当的压力。在新版会员中心开发过程中,曾发生成员开发压力过高而离职的事件。Scrum主管有必要注意排解成员压力。

下面几点有助于降低成员压力:

  1. 让开发人员领取自己喜欢和擅长的任务。
  2. 项目开始前充分预估时间,务必实事求是,并考虑到成员的开发能力。
  3. 开发前(或者日常)最好能进行几次技术培训,避免成员在开发中遇到不熟悉的技术。

冲刺订单

  • 冲刺订单(sprint backlog)是大大细化了的文档,包含团队如何实现下一个冲刺的需求的信息。
  • 任务被分解为以小时为单位,没有任务可以超过16个小时。
  • 如果一个任务超过16个小时,那么它就应该被进一步分解。
  • 冲刺订单上的任务不会被分派,而是由团队成员签名认领他们喜爱的任务。
  • 一个任务分为todo ,开发中,自测,提交测试,完成几个阶段。

经验:
WEBIM项目实施白板:

左边的用户故事,实际上是对冲刺订单的分类。

订单一开始都在 todo 的下面,每个开发人员到实施白板前,审核还有那些订单在todo当中,从中选择自己喜欢或者相对擅长的订单,写上自己的名字,放在开发中,然后回去开发相应组件。

当组件基本开发完毕,就将订单放在自测栏下面。

如果准备将该组件提交测试,就将订单放在测试栏下面。

如果组件通过测试,就放在完成栏下面。这样一个组件就走完了整个开发流程。

实际开发中发现,由于测试实际上是在所有组件都完成开发后才执行的,所以订单放到自测阶段就基本上可以视为开发完毕,开发人员就应该去领新的订单了。

WEBIM项目中订单用便签实现:

WEBIM开发中,每个订单对应的是一个开发组件,标记了组件名称,类别,开发人员,预估时间。对应开发组件模型如下:

 

Name Events
Extends  
Property _$events
Methods addEvent
removeEvent
addEvents
removeEvents
fireEvent
SP 0.25

Name为组件名称,也是开发时的小文件名称。
Extends 为该组件继承自哪一个组件。
Property 为组件应当具有的属性。
Methods 为组件应当具有的方法。
SP 为开发该组件可能的耗时。1SP表示1个工作日(单个成员8个工作时)

项目开始前的集中会议非常重要,需要所有开发成员集中在一起执行。
应当集群体之力一起分析项目,拆解组件,但注意非关键性的细节不要过分追究,避免会议耗时。
应当有一个文档保存所有画出的组件模型。

燃尽图

燃尽图可以非常形象的表现项目执行进度。
以下图举例:

X轴原点为项目开始日期,末端为项目结束日期。每天为一格。
Y轴为预估的工作时。

  • 在项目准备会议结束时,冲刺订单已经预备好,就可以统计出预估的总工作时,将其标在Y轴顶部。
  • 每天检查实施白板,确认哪些订单已经完成,然后计算剩下的总工作时,然后在图上标记一个点,点的X位置为第二天的日期,Y位置为剩下的总工作时。
  • 在起点坐标(X为开始日期,Y为总时间)和终点坐标(X为结束日期,Y为0)之间画一条直线,这就是理想状况下的项目完成进度曲线。
  • 在项目执行中,发现曲线高于理想曲线,说明项目有可能延期,需要增派援手,或者催促成员加快进度。如果曲线低于理想曲线,说明项目有可能提前完成。

经验:
先看一下WEBIM项目的燃尽图:

不可思议的是曲线一开始居然还有个增高。这说明一开始时间预估就不完善,开发中增加了预估时间。

一开始认为订单放到完成,才能从工作时中减去时间,但由于测试实际上是在所有组件开发完成后,所以当订单放在自测,就从工作时中减去时间。

这个图后期并没有完成。实际上是因为项目组件提前在12日都开发完成,但是新的问题出现:组件完成后还有一个联调的时间,未被预估在内。还好最终还是保证了项目按期联调完毕。

燃尽图后期的陡峭往往说明了任务分割与时间估算的不完善。但是有时这不可避免,可以考虑用完成度百分比乘以工作任务,或者将任务分阶段(将预备阶段,开发阶段与测试阶段分开)来平缓燃尽图曲线,达到更细致描绘工作进度的目的。

可以考虑联调前的订单被开发完成了70%,联调完毕才标记为100%,然后从总工作时中减去剩下百分比的时间。

一开始预估完总工作时间后,应当乘以一个系数(大于1,从未预估过时间,建议这个系数接近甚至大于2,否则建议为1.5)。以这个时间为总工作时间,以应付项目执行中可能遇到的突发事件。

总结

Scrum 效率相当明显,执行过程中可以使成员中开发速度缓慢的地方被迅速暴露出来,使得项目中可能存在的问题被极早暴露,以便进行针对性的解决。

开发中要求成员有充分的自发性,自己如果能提前完成订单,应当负责起其他订单的开发任务,减轻项目整体的开发负担。

一开始的沟通会议非常重要,必须当面进行沟通会议,不可以有缺席。以保证每个成员对项目的细节都有所了解,可以负责任意一个组件的开发。

Scrum不仅仅用于软件开发,它是一种计划管理方式,适用于被限制时间,需要多人协作的团队项目。

 

 

转自(http://ued.sina.com/?p=641)

分享到:
评论

相关推荐

    SCRUM实施与检查列表

    "SCRUM实施与检查列表"是指导团队有效执行Scrum方法的工具,旨在确保所有关键环节都得到充分考虑和执行。这个检查列表通常包含以下部分: 1. **角色**:Scrum有三个核心角色——产品负责人(Product Owner)、Scrum...

    Scrum实施流程图

    用流程图画出来了Scrum的整个执行流程。

    Scrum-教材.doc

    Scrum 教材总结 Scrum 是一种敏捷开发框架,对于软件开发和项目管理非常重要。...但是,Scrum 框架的实施需要团队成员之间的协作和沟通,需要 Scrum Master 和团队成员的培训和经验,需要组织高层领导的支持。

    the enterprise and scrum

    《The Enterprise and Scrum》不仅是一本介绍 Scrum 基础概念的书籍,更重要的是它提供了大量关于如何在企业环境中成功应用 Scrum 的实际经验和指导。通过本书的学习,读者能够了解到 Scrum 如何帮助企业解决复杂...

    scrum项目管理指南

    在本文中,我们将深入探讨Scrum的关键要素和实践,以指导团队顺利实施敏捷开发。 首先,项目的启动阶段涉及一系列准备工作。项目发起后,经过预立项、可行性研究和公司立项,确定产品经理或客户代表的角色。在产品...

    Scrum指南 2017版

    Scrum建立在经验型流程控制理论,即实证过程控制之上,主张所有知识来源于经验,并以经验作为决策基础。Scrum的三大支柱是透明性、检视和调整。团队必须定期检视他们的工件和进度,确保工作符合预定标准,通过检视和...

    scrum敏捷开发流程经验分享

    详细介绍敏捷开发流程的特点,要点,以及如何实践,应用。

    scrum资料综合

    其次,"ScrumFAQ by Ken Schwaber.pdf"由Scrum的共同创始人Ken Schwaber编写,解答了关于Scrum实施中常见的问题。这份文档可能涵盖了Scrum的哲学、原则、框架细节以及如何解决实践中遇到的挑战。通过阅读这份FAQ,...

    如何判断团队是否真正实施Scrum

    Scrum的核心在于其经验主义基础,鼓励自组织团队,通过迭代和增量的方式进行软件开发,以适应不断变化的需求。这种框架提供了一个高度可视化的项目管理工具,可以提高开发效率,促进沟通与协作,确保团队关注业务...

    Scrum敏捷软件开发

    第3章 Scrum实施模式 第4章 渐进敏捷 第5章 试点项目 第Ⅱ部分 个体 第6章 克服抵触 第7章 新角色 第8章 角色转换 第9章 技术实践 第Ⅲ部分 团队 第10章 团队结构 第11章 团队协作 第12章 领导自组织团队 第13章 ...

    看板和 Scrum-相得益彰.pdf

    Product Owner 负责产品 backlog 的管理,Scrum Master 负责 Scrum 流程的实施,Development Team 负责开发任务的实施。 知识点四:看板和 Scrum 的结合 看板和 Scrum 可以结合使用,以达到更好的项目管理效果。...

    Scrum Master 认证考试原题.docx

    ### Scrum Master 认证考试知识点解析 #### 标题:Scrum Master 认证考试原题 **解析**:本题目集旨在帮助考生通过Scrum Master (CSM) 认证考试,该考试评估考生对Scrum框架、原则及实践的理解与应用能力。 #### ...

    SCRUM guide

    Scrum基于经验过程控制理论,通过迭代和增量的方式优化预测能力和控制风险。为了实现这一目标,Scrum依赖于三个核心支柱:透明性、检查和适应性。 - **透明性**:确保影响结果的过程方面对管理者可见。这不仅意味着...

    Scrum VS2012

    总之,《Professional Scrum Development with Microsoft Visual Studio 2012》是一部不可多得的指南,它将理论与实践紧密结合,为软件开发团队提供了一套系统化的Scrum实施方法,特别是在VS2012环境下如何运用Scrum...

    Scrum知识体系分享

    Scrum Master负责指导团队正确实施Scrum框架并解决任何阻碍团队前进的问题;开发团队是由跨职能的专业人士组成的自组织团队。 - **活动**:包括冲刺(Sprint)、冲刺规划(Sprint Planning)、每日例会(Daily Scrum)、...

    5分钟了解Scrum

    5. **借鉴成功企业的经验**:许多知名公司如IBM、微软和施乐等都在使用Scrum来改进其软件开发过程,以解决过去的问题。 #### Scrum的工作流程 Scrum的核心工作流程围绕着一个被称为“冲刺”(Sprint)的概念。每个...

    Scrum Guide(中文版)

    Scrum的三大支柱—透明性、检查和适应性,支持了经验性过程控制的实施: - **透明性**:关键过程方面对负责产出的人员必须清晰可见。这意味着需要有一套通用标准来定义这些方面,确保观察者对所见事物有统一的理解...

Global site tag (gtag.js) - Google Analytics