Daily Scrum Meeting是什么
In rugby, a scrum is a play, similar to a down in American football. In the Scrum methodology, the Scrum meeting makes a day of work like a play in rugby. It might be rough and tumble, but the goal to make forward progress is clear, and your team pulls together toward that common goal. Your team should hold daily Scrum meetings to determine what it needs to do in the next day to maximize its chances of meeting its commitments. Each team member describes what he or she has accomplished since the most recent meeting, the work that he or she plans to accomplish that day, and any issues or impediments that might affect or require help from other team members.
Your ScrumMaster strictly enforces the structure of the meeting and ensure that it starts on time and finishes in 15 minutes or less. In this meeting, each member of the team answers three questions:
What have I accomplished since the most recent Scrum?
What will I accomplish before the next Scrum?
What blocking issues or impediments might affect my work?
It is important that team members answer these questions quickly and concisely. An example of a good answer is, "Yesterday, I updated the class to reflect the new data element that we pull from the database, and I got it to appear in the interface. This task is complete. Today, I will ensure that the new data element is correctly calculating with the stored procedure and the other data elements in the table. I believe I will accomplish this task today. I will need someone to review my calculations. I have no impediments or blocking issues." Compare that answer to the less-than-stellar answer, "Yesterday, I worked on the class, and it works. Today, I will work on the interface. No blocking issues."
上面的内容主要是scrum是来自橄榄球的一个名词,每日站会的寓意是想橄榄球游戏一样,整个团队的目标是明确的,共同努力达到这个目标。每日站会的目的就是充分利用有限的时间和资源决定明天或者下一个阶段要完成的任务,每一个成员都要总结在最近一次会议后完成了,在接下来的一次会议前将要完成什么,你的当前工作进度遇到什么样的阻碍。
对每日站会的调查与理解
Daily Scrum Meeting是敏捷开发Scrum的主要环节。
什么是敏捷开发?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
我们不能把它理解成一种技术,因为它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步地完成项目的开发;这种开发方式的主要驱动的核心是人;它采用的是迭代式的开发模式。
这种开发方式与瀑布式开发模型不同,瀑布式开发模型以文档为驱动,在整个开发过程中要写大量的文档,开发人员需要根据写好的需求文档进行开发,文档是一切的依据;但是敏捷开发只写必须的文档,注重的是人和人之间,面对面的交流,这就是它以人为核心的本质。
迭代的方式则是把一个复杂且开发周期很长的开发任务,分解成很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。
什么是Scrum?
Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。
而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。
Scrum开发流程中的三大角色
产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
如何进行Scrum开发
我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的;
Scrum Team根据Product Backlog列表,做工作量的预估和安排;
有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog;
Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);
在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);
做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;
当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);
最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;