前言
Scrum已经是各大互联网大厂的标配项目管理流程, 每天站会, 分配任务, 快速的迭代和持续的沟通, 是一个很好的软件开发方法, 但是,要理解其精髓, 却很难, 要想将Scrum应用于项目中, 同时产生一定的效益, 并且能很明显的改善软件开发效率和质量,更是难上加难!
什么是Scrum
Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。 而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。
Scrum三大角色是什么
- 产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
- 流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
- 开发团队(Development Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
Scrum流程
下面是一个Scrum的流程图:
Scrum的工作时间分配:
Scrum 项目举例
- 某项目启动,产品负责人(Product Owner)负责确定一个按照优先顺序排列的产品需求列表 (Product Backlog)。
- Developement team 根据需求列表做工作量预估。
- 根据Product Backlog, 组织召开Sprint Planning Meeting (Sprint 指一次迭代或者冲刺),从中挑选出一个story作为本次迭代完成的目标。时间周期是1~4周,然后再进行细化,细化为每天的任务,形成Sprint Backlog。
- 一旦Developement Team准备好Sprint Backlog,他们就可以投票并预测到,Sprint结束后,哪些任务可以交付。
- Sprint的每天,team需要daily scrum(每日站立)会议。 A. 所有Team 成员需要参加。 B. 每天准时开始,即使有成员不在。 C. 控制在15分钟。 D. 每位成员需要回答3个问题: 昨天完成了什么工作,今天计划完成哪些,遇到了什么问题。 E. Scrum Master 收集这些问题,更新到Team的Scrum白板上。绘制Sprint burn down(Sprint燃尽图)。
- 当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);
- 最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中.
Scrum 局限
- 团队成员的地理位置很分散,不能进行面对面交流。
- 团队成员中有些人具备特殊技能,其他人不具备。
- 产品的外部依赖型太强。
- 已经很成熟的系统,或者是遗产系统,不建议用Scrum模式。
Scrum对团队成员的要求:
有奉献精神,有勇气来解决任何问题,专注在正确的事情上,开放,成员间互相尊重。