【IT168 专稿】
Scrum作为敏捷方法之一,在十多年前由Ken Schwaber和Jeff Sutherland共同提出,名称来自英式橄榄球,用Scrum来类比软件团队在软件开发所展示出来的速度和灵活性。(在橄榄球比赛规则中,Scrum的目的是在有轻微违规或比赛暂停后,使比赛迅速、安全、公平地重新开始。当球队在场地上以整体队形向前推进时,每个球员都时刻保持对场上全局的判断,橄榄球在队员之间相互传递,奋力实现胜利。)
Scrum是基于过程控制理论的经验方法,倡导自组织团队;其运行框架核心是迭代增量型并行开发,也是“适应性”的软件开发方法。Scrum提供了高度可视化的用于管理软件开发复杂性管理的敏捷项目管理的实践框架或敏捷过程,可以用于对现存软件工程实践的包装,提高软件生产率,改善沟通和合作的方法,使人们协作并注重业务目标。现在Scrum已被众多的软件企业使用,其中不乏有业界知名企业,如Microsoft 、IBM、Google和Nokia等。
作为一名Scrum教练,笔者经常被问到有关Scrum实施以及敏捷开发方面的各类问题,现总结如下,供对此方法有兴趣和有疑问的读者参考。
一问:Scrum的核心特征是什么?
一答:基于功能开发而组成的多功能、自组织团队;高度柔性的可视化敏捷项目管理自适应框架;以及支持增量并行开发的30天时间盒迭代。
二问:哪类项目可以使用Scrum?
二答:最初Scrum使用于需求难以预测的复杂商务应用产品的开发,但经过10多年的发展,它被应用于所有领域的软件中,从生命攸关的软件到更为随意的软件,都可以使用Scrum。在使用Scrum时,无需讨论工件是什么以及它们的数量,而是讨论需要严谨到什么程度。作为一个指导原则,由整个Scrum团队来决定正规性的程度,并尽可能地低。当然,这需要有丰富的实践经验来判断。
三问:Scrum团队一定是7个人吗?
三答:在Scrum中有3个基本的角色:产品所有者Product Owner、开发团队Development Team和ScrumMaster。Scrum团队通常有5~9个成员,典型一个Scrum团队应当有7个成员。但可以由多个团队完成一个项目,即使用Scrum of Scrums实践规则进行拓展项目团队规模:每一个Scrum Team同样有一个代表,通常是Scrum Master,参与Scrum of Scrums会议协调多个Scrum Teams的工作,这些会议类似于Daily Scrum Meeting,但每周召开一次。
四问:看上去Scrum非常简单,可以给我们更简化地总结一下吗?
四答:是的,Scrum看上去确实很简单,可以把Scrum总结得非常简单:
团队和项目出资人创建一个团队需要做的所有事情的列表。这可以是一个任务的列表或者特性的列表。这就是Product Backlog。
每个月,团队都努力实现列表最顶端的任务,这一部分是他们估计需要一个月完成的工作。他们把它展开成一个详细的任务列表,叫做Sprint Backlog。这个团队承诺在月底向出资人演示或交付结果。
每天,团队都面对面地开5~10分钟的会,彼此更新各自的状态和排除使他们减慢的路障。这个叫Daily stand-up meeting。
指定一个特别的人担任Scrum Master,这个人的任务是排除或安排别人排除在例会上这个团队提到的任何路障。
但是它的实践执行并不简单,需要获得关键的自适应和坚持Scrum核心价值观——承诺、专注、公开、敬重和勇气。
五问:我们认为,坚守一定的Scrum Meeting模式是必要的;但是执行一段时间后觉得很困难,有些人甚至觉得“恶心”,你对此怎么看?
五答:每天举行15~20分钟左右的Scrum meeting是Scrum和项目的心脏。如果出现这一问题,我估计是软件团队倾向于在现有的项目管理方法下诠释Scrum,没有充分理解自我管理、涌现机制、可视性和评估/适应循环的根本原则。
按照“定义的”参考框架去执行Scrum的实践,忽视了从控制转向授权、从命令转向协作,Scrum Master很可能将“自上次Scrum Meeting会后的一天里我做了什么?”理解为“检查团队成员是否完成上次Scrum Meeting中他所布置的任务”,将“从现在到下次Scrum Meeting的一天我将做什么”理解为“告诉团队人员从现在到下次Scrum Meeting的一天应做什么”,将“在工作中遇到了哪些障碍”理解为“他将审核是否能帮助团队完成目标”。而团队成员把Scrum Meeting理解为按顺序报告工作情况的会议。
坚持以下7个基本原则,将有利于有效执行Scrum Meeting:
1 团队信仰自我管理和支持自我管理。
2 他们作为团队共同承诺Sprint目标。
3 他们认识到沟通的重要性,并且通过Daily Scrum Meeting推动沟通。
4 他们理解和拥抱贯穿整个Sprint周期的必要的日常任务变更,相互依赖的会议规则,每日会议允许团队成员管理和响应变化。
5 团队有一位卓有成效的Scrum Master或得到他们授权的领导来决策和问责。
6 团队认为工作可视化很重要,透明改进团队和组织其他团队之间的关系,从而得到更高层次的信任和协作。
7 团队将Daily Scrum Meeting回顾与其他里程碑相联系使会议尽可能有效。