scrum–敏捷项目管理

scrum是全球流行的敏捷项目管理方法,我不知道为什么一种敏捷软件开发方法会叫做这个名字。
可能部分原因是因为我不看也很难看到橄榄球赛,scrum在字典中的意思是(橄榄球赛中)双方球员争球,
当然scrum这种方法为什么叫做这个名字不重要,重要的是很多人认为它敏捷而且高效。
最近看了scrum流程的创立者Ken Schwaber编著的《Scrum敏捷项目管理》,有很多触动,
在以前的开发过程之中,虽然没有接触过scrum理论,但是却有些相似的体会。

经验性过程控制和预定义过程控制
我是从传统软件开发转向互联网软件开发,在这个过程中,也是从预定义过程控制的方法(V型开发流程、CMMI)
转向到经验性过程控制方法(小团队的敏捷开发流程)。在转变的过程也经受了很多的痛苦和困难,因此对这两类
方法的体会也会深刻些。采用不同的软件开发方法其实也是传统软件企业和互联网企业的重要区别之一,
传统软件企业(金融、通讯、办公自动化、软件外包等)会以通过CMM认证为荣,采用的开发流程多是V型,
它们的软件项目开发周期长,注重规划和控制每一个流程步骤的输入和输出,在这些领域里面的企业通常都有多年的积累,
对安全性、业务稳定性要求很高;但是在互联网行业,预定义方法很容易失效,这取决于互联网的两个特性,未知和变化。
预定义最怕的就是未知和变化,对于未知的东西如何规划?最大的可能是走一步看一步。因此它规定了很多的步骤和方法
来定义未知和控制变化,减少变化带来的冲击。当我们面对的是一个前人未作过的、变数极大的互联网项目时,
使用预定义方法就陷入了死胡同,你刚刚扑灭了一个变化的苗头,另外一个变化
早已熊熊燃烧。所以必须彻底的改变开发方法,采用经验性的过程控制。
Scrum大师告诉俺们,Scrum是使用经验性过程控制的软件开发项目。
不管是哪种方法来控制软件开发过程,最终的目标都是一致的。

Sprint–疾跑
我不知道为什么一个迭代周期会叫做Sprint–疾跑(字典里面的意思是:短距离赛跑),
通常一个迭代周期的结束意味着下一个迭代周期的开始,
因此整个项目团队在不断的疾跑,直到完成项目目标,这个也有点橄榄球赛的味道。Run, Forrest, Run!
我个人在实践中也认为4周~5周是比较好的一个迭代周期,通常用1周完成需求分析和设计、用2周完成coding,
再用1周完成自测和集成,还有1周应对突发的风险(如果发生的话);Scrum中Sprint的标准周期长度是30天。
Sprint BackLog就像是一个To-Do List或者是feature List,由于周期长度为1个月,因此这个sprint里面的特性列表
就比较容易制定一些,而且在工作量(人日)的估计也比较准确,BackLog在我的理解上应该同WBS是类似的,
通常情况下WBS最好要细化(能细化到半个工作日就比较好了)。
国内互联网公司的软件开发项目按照真实的项目管理操作的其实不多,项目组里面通常也不会有专门的软件流程顾问加入,
软件开发团队的Leader通过培训作为ScrumMaster是比较现实的选择,在一个sprint里面,
ScrumMaster要尽力保证整个团队不受外部的影响(主要是来自高层的影响)。
其实在互联网公司中,开发团队经常会受到高层的影响而不得不中断正在进行的工作,可能是为了一个推广活动,
或者是演示新特性给投资人等等。这种打断不仅导致原定计划的混乱,而且会让开发团队很大的受挫。
ScrumMaster具有说服上层领导保正一个sprint完整性的能力非常重要,一次成功的迭代会争取到更多的话语权,
而且会形成正向的循环,而不是陷入混乱的怪圈中。

Daily Scrum Meeting(每日站会)这个翻译我挺喜欢,站会很形象,站着开会,开会又不是开着玩的,
有事启奏,无事退朝;俺最讨厌那种冗长的会议,
Daily Scrum Meeting的目标是快速高效地沟通清楚三个主题:
1.从上次开会以来,做了些什么;
2.计划将做些什么;
3.遇到哪些需要讨论的障碍和困难;
俺以前周例会的议题也正是这三个。
Scrum有个核心是自我管理,就是团队里面的每个成员都主动的提出和交流问题、建议和解决办法。
因此每日站会的主角是参加会议的每一个团队成员,ScrumMaster主要起到一个记录、引导、总结
和会后事项处理的跟进。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注