从前有一种非常火爆的体育运动,对阵双方各派出11位猛男,在宽阔的草皮球场内争抢一颗可怜的小皮球。哪方能够通过团队协作拿到皮球,并且运送到对方场地的特定位置即得分。
没错,你没有走错片场,快到超级碗里来~
咳咳,其实我们要说的是在IT领域内,从这种运动中引申出来的一个名词,叫做SCRUM-争球。
相信接触过敏捷(agile)项目的读者,都听说过SCRUM这个名词,那他到底指代的是怎样一个事务呢?
其实你可以结合着上面这张图片去理解,笔者觉得总结起来,SCRUM就是‘一个小规模团队,通过紧密的团队合作,一步一步推进团队目标’的理念。
归根结底,SCRUM是敏捷开发项目中的一种组织形式,严格来说他其实不能算是一种技术而是一种方法论(Methodology),更不能等同于敏捷开发理念本身。
现如今,我们人类社会的运转节奏已经快的令人发指了,这种快节奏也非常显而易见的对IT行业产生了冲击。在这样的前提下,敏捷开发或者叫敏捷项目的应用渐渐浮出水面而且越来越呈流行的趋势。
现在的IT企业,不搞敏捷开发感觉出门都不好意思跟人打招呼。而SCRUM就是敏捷项目最喜欢采用的一种组织方式。
那么SCRUM怎么开展,我的团队到底适不适合采取SCRUM形式呢?
我们来看看SCRUM为一个敏捷性项目定义了哪些特性:
第一个是待办产品列表(backlog):它包括了整个敏捷项目中,团队要完成的所有任务;包括待开发的产品功能,非功能性需求,待修复的缺陷等等。
其次是冲刺期(sprint):也就是将一个敏捷项目划分成数个小阶段,每个阶段定义该阶段需要完成的任务量。一般来说这个阶段时长是一至四周,以两周为最常见。本质上这种做法与我们平常说到的‘迭代-增量’开发模型没有根本的区别。在冲刺期结束的时候,我们规划好的任务应该全部完成:这就包括了开发,集成,测试和归档。
其次是冲刺期计划会(sprint planning):顾名思义,就是在每个冲刺期开始的时候,对所有待开发的产品部件进行讨论,估算和决定哪些可以在当前冲刺期完成,并进而进行任务分派。在敏捷项目中,理论上类似计划是一个民主的过程,团队的成员秉承高度专业的态度来决定当前可完成的任务量。
再次是每日站立会议(daily scrum)有时候提到scrum,我们可能会和站立会议等同起来。确实从命名上而言每日站立会议(daily scrum)也用到了scrum这个名词,不过严格来说scrum不单单特指这个会议,也包含我们本文提到的对整个敏捷项目的组织方式。在会议上,每个团队人员要回答三个问题:
- 我昨天完成了什么工作
- 我今天准备完成什么工作
- 我发现了哪些可能阻碍工作的问题
PS:在笔者以前经历过的一个敏捷项目里,老外们真的拿着一颗玩具橄榄球在会议上传来传去:P
再次是冲刺期回顾(sprint review):回顾当前冲刺期完成的任务,展示项目成果,以及计划完成却没有完成的任务,整理下一阶段待完成的任务。
SCRUM对于敏捷项目而言是有很大价值的,通过这种组织形式能够很好的实现敏捷项目的核心诉求:
- 高度迭代
- 强周期性
- 持续响应客户
当然话说回来,理念和理论总是听起来很美好,实现起来却往往很让人头疼,SCRUM也是如此。
敏捷的开发理念摒弃很多传统开发模式中的复杂流程和管理方法,但它这种强调人,强调自身动力的理念也容易使得团队缺乏计划,行动松散。
所以SCRUM就像一把双刃剑,用得好可能产生非常高的生产力;用的不好,则不但生产效率不高,还会让团队陷入混乱。并不是每个项目都适用敏捷开发,也不是所有团队都要采取SCRUM得形式,具体如何选择还是要取决于团队的构成和实力。