《敏捷革命》读书笔记
Scrum的本质:
无论什么时候启动一个项目,为什么不经常检验一下自己正在做的事情,看看是否朝着正确的方向前进?结果是不是大家真正希望看到的,是否有什么办法改善目前正在做的事情?如何才能做得更好更快?存在哪些潜在的障碍?
这就是“检查与调整”的循环,每过一小段时间就停一停手头的工作,检查一下取得了哪些成果,看看这些成果是不是自己期待的,想想有没有更好的办法。
Scrum的最终结果就是提高团队的工作效率。
Scrum之所以能发挥作用,就是先确定了各项任务的优先顺序,然后必须在规定期限内完成。
Scrum最强大之处是“展示,定期展示成果”。
Scrum关注的内容不是开发者,而是客户和利益相关者,这是一个组织性的变革。
Scrum由来
本书的作者是杰夫•萨瑟兰,来看看他的故事,Scrum的由来。
守破离
Scrum这个概念源自日本制造业的模式,现在日本人已经不再把Scrum视为最新潮、最时尚的工作方式了,而是将其视为一种做事方式和生活方式。
在武术中,有一个“守破离”的概念,分别是指三种不同的修炼层次。
在“守”的境界中,你懂得所有规则与动作,不断重复动作,以便让身体学会有关的动作,就像你在学习舞步时那样。“守”就是要求你不会出错。
在“破”的境界中,你在完全熟悉有关动作之后开始学着创新,就像在跳舞时迈出一个舞步之后,自己再增添一个动作。
在“离”的境界中,你可以摆脱形式的束缚,算是真正掌握了要领,可以按照自己的意愿加以创新。因为你已经非常了解,所以你的一举一动都能表达出它的精髓。
聚焦团队
提升团队业绩比提升个人业绩的影响要大得多,团队才是让这个世界运转的主要力量,这是Scrum赖以落实的基础。
杰夫•萨瑟兰的儿子在做战地记者时,使用Scrum的经历,战地记者也在使用Scrum。
冲刺
“冲刺”让人产生一种紧张激烈的感觉,在一段较短的时间内集中全部精力,做出点成果,然后停下来回头审视一下成果如何。
每日站会
站会的三个终极问题:
- 我昨天做了什么去帮助团队完成冲刺?
- 今天我打算做什么来帮助团队完成冲刺?
- 什么因素阻碍了团队的前进之路?
站会的规则:
- 规则1:时间固定,给团队一个固定的节奏。
- 规则2:开会时间不能超过15分钟,如果有事情需要深入讨论,那就记下来站会后再做进一步讨论。
- 规则3:团队所有成员都参加,每个人都要积极参与。
对于站会,大家容易把站会视为一个简单的个人报告会,“我做了什么,我将要做什么”,这是一种错误的理解。
站会是讨论团队的工作进展情况,把所有人都集合在一起至关重要,因为团队就有机会组织起来应对挑战。Scrum团队必须拥有创造卓越的雄心。
在每日站会结束后,团队要知道当天需要完成哪些重要的任务。有的团队成员也许会说某个任务可能需要花费一天的时间才能完成,而另一个团队听到之后,可能知道如果帮助他在一个小时内做完。希望听到团队在站会后说一些诸如“我们一起搞定它”,“我们一起做”之类的话。
时间有限,且行且珍惜
Scrum的一个重要意义就是改变你对时间的看法。实行冲刺和每日站会一段时间后,你就不会再把时间看成一支劲直飞向未来的箭,而是从周期性的视角去看待时间,每一个冲刺,都是一个开启全新任务的机会。每一天,都是寻求改善的好机会。任何致力于Scrum方法的人都会珍惜时间。
保持节奏
Scrum流程的核心是节奏,它渗透我们的血液当中,根植于我们大脑的最深处,我们努力找寻节奏,找寻生命中方方面面的节奏。
完成的定义(Definition of Done 简称DoD)
团队成员在便签纸上不仅需要写任务,还包括在什么情况下才算真正完成。团队成员把这项任务做到符合DoD后,再去做下一个任务,这样返工的情况就会减少。
每项工作的成果都必须符合明确的标准(DoD),每个人都应该知道一项任务是否算是真正的完成。
斐波那契数列
Scrum团队喜欢使用斐波那契数列来定义用户故事(User Story)的难度。当我们借助斐波那契数列去评估一个Story时,不必追求绝对的准确。
计划扑克(Planning Poker)
计划扑克上面印有斐波那契数列,包括:0,1/2,1,2,3,5,8,13,20,40,100,∞(无穷大),?(可能不了解需求,无法评估),☕️(想要休息一下)
每个人都有一副计划扑克,根据需要评估的任务,抽出一张相应的扑克放在桌上,但是面朝下,接下来听口令一起翻牌。如果有出牌不一致的,出牌最高的和最低的要给出对需求的理解,看彼此是否有对需求理解不透彻,澄清结束后可以直接达成一致或者再出一次牌直到达成一致。
定义评估基准点
在出牌之前,团队需要先确立一个评估的基准点,需要都给具体示例和功能列表,以便于大家对基准点理解一致,下面以登录功能为例做个说明。
用户故事:作为系统管理员,我希望可以登录系统,以便于添加人员信息。
功能列表:
- 登录功能详细需求分析(用户名和密码如何验证,输入长度是否有限制,是否需要记录登录状态,是否使用到第三方接口等)
- 概要设计&架构设计
- 登录页面开发
- 后端提供接口服务(Controller、Service、Repository)
- 点击【确定】可以登录系统。(调用后端接口验证用户名和密码是否正确,正确:进入下一页面,错误:提示用户名或密码错误)
- 登录功能集成测试
- ......
用户故事
什么是用户故事?
用户故事是描述对用户有价值的功能,应该包括角色、功能和商业价值三个要素。
好的用户故事应该满足INVEST标准
- 独立性(Independent)—— 尽可能让一个用户故事独立于其他的用户故事。
- 可协商性(Negotiable)—— 用户故事的内容要是可以协商的,用户故事不是合同。
- 有价值(Valuable)—— 每一个用户故事必须对客户具有价值。
- 可评估(Estimable)—— 开发团队需要衡量用户故事,以便确定优先级和工作量,并便于安排工作计划。
- 规模小(Small)—— 一个好的故事要尽量维持小规模,至少要确保在一个冲刺周期中能够完成。
- 可测试(Testable)—— 一个用户故事要可以测试,以便确定它是可以完成的。
速率
在冲刺规划会议(Sprint Planning Meeting)团队所有人聚在一起,决定下个冲刺(Sprint)必须完成的用户故事,并对用户故事进行评估Story Point(是一个斐波那契数列数值)。假设冲刺是一周时间,在冲刺结束后,把完成的Story Point加在一起就是团队速率。
每个团队都应该准确知道自己在每个冲刺阶段中完成了多少工作,并且应该知道如何以更加聪明的方式去消除障碍,加速工作速度。
速度 * 时间 = 交付工作量,知道自己的工作速率之后,就能计算出交付日期。
持续进步
在每个冲刺结束后,团队应该找出一个有待改善的地方,在下一个冲刺将其作为最重要的事项予以解决,每个冲刺进步一点点,从而使团队成员更加快乐。
可以问团队成员一个问题:在下一个冲刺阶段中,什么事情会让你感到更快乐?
快乐工作
人人都想要快乐,不是那种自我满足、不思进取的快乐,而是积极进取的快乐。
如果以正确的方式实施Scrum方法,就能够让团队、客户、管理者以及股东都快乐,快乐感通常是按照这个顺序传递的。
Scrum要达到的目标就是推动整个团队形成一种催人奋进的氛围。
《哈佛商业评论》以“快乐”为专题曾发表一篇文章指出:“即让员工快乐,又能增进股东利益的唯一途径就是让员工完成一件重要的工作,并从总产生成就感。我们不仅应该追求让员工快乐,还应该帮助他们实现伟大的成就。简而言之,我们应该帮助员工赢得客户的热情支持,从而促使员工热情地帮助公司实现使命,走向成功。”
找到最有价值的20%
一个产品80%的价值来自20%的功能,Scrum的魔力就在于能帮你把价值最高、风险最低的事项置于最优先的位置。
三种角色
在Scrum中,共有三种角色:开发团队(Team)、产品负责人(Product Owner)、ScrumMaster。
- 开发团队,负责开展具体的开发工作。
- 产品负责人(PO),决定应该做什么工作,拟定待办事项清单的内容,以及确定各个事项的优先顺序。
- ScrumMaster,协助开发团队把事项做得更好,保证Scrum流程运行正常。
产品负责人
产品负责人不仅需要具备更多专业知识,还必须具备以下4个特点。
- 产品负责人需要在相关领域内掌握丰富的专业知识。一方面对Scrum流程有了解,另一方面对必须对市场有充分了解。
- 产品负责人必须获得自主决策权。管理层不应该干涉团队运作,产品负责人应该被授予决策权。
- 产品负责人必须有足够的时间与团队成员接触,向团队成员解释清楚需要做什么,以及为什么要这么做。
- 产品负责人必须为价值负责。
如何权衡产品
如果你只是把精力集中于自己能够制造的产品上,那么你的产品可能没人想要,即便你对这个产品充满热情也无济于事;如果你只是把精力集中于自己能够卖掉的产品上,可能会给客户许下不切实际的承诺,承诺一个制造不出来的产品;如果你只是集中精力生产能卖掉,自己却没有热情的产品上,那么你生产的产品可能会流于平庸。
决策回路(OODA)
OODA指的是Observe-Orient-Decide-Act,意为“观察-导向-决定-行动”。
- 观察:看清外部情景的变化,听起来容易做起来难。要摆脱自身的局限性,看到周围所有情况的变化,而不仅仅从自己的视角去观察。
- 导向:导向的结果如何,不仅与你所处位置有关,与你能够为自己创造多少行动选项有关。
“观察” 和 “导向” 结合在一起,产生了“决定”,从而催生了“行动”,然后新的循环从“观察”开始。
Review的目的
Scrum之所以要求团队定期推出一些可行的新成果,就是为了使产品负责人看看新增成果能产生多少价值,看看人们的反应如何,获得反馈意见。然后在这些反馈的基础上调整团队在下一个循环往复的意见反馈回路,有助于加快创新与调整的速度,是产品负责人能够评估团队的活动创造了多少价值。通过这种意见反馈回路,产品负责人就能够不断地调整团队努力的方向,应对不断变化的世界。
Scrum在其他领域的应用
Scrum有助于加快人类的所有活动。无论是什么类型的项目,无论是什么类型的问题,Scrum都可以帮助人类提高效率和成果。
- Scrum与教学。 在荷兰,越来越多的中学老师采用Scrum教学法,采用这种方法后学生的成绩会提高10%以上。
- Scrum与扶贫。在乌干达,格莱珉基金会使用Scrum方法向贫困农民提供农业和农村市场数据,他们的农作物产量和收入都翻了一番。
Scrum实践步骤
- 选择一位产品负责人。他必须知道团队需要做什么,制造什么产品以及取得什么成果。
- 选择一个团队。团队必须能够落实产品负责人的愿景。
- 选择一个ScrumMaster。负责Scrum过程,确保Scrum得到正确的运用,帮助团队消除一切障碍。
- 拟定待办事项清单,并确定优先顺序。
- 改进和评估待办事项。
- 冲刺规划会(Sprint Planning)。
- 工作透明化
- 每日站会
- 冲刺演示(Sprint Review)
- 冲刺回顾(SPrint Retrospective)
- 上一个冲刺阶段结束后,立即开始新的冲刺阶段。
以上内容主要参考杰夫•萨瑟兰的《敏捷革命》 这本书。
关于作者
杰夫•萨瑟兰(Jeff Sutherland),Scrum发明者与共同创造人,被誉为“Scrum之父”,《敏捷宣言》起草人之一。
萨瑟兰毕业于西点军校,曾作为美国空军战斗机飞行员,完成过100次飞越北部越南的作战任务。1972年,萨瑟兰获得斯坦福大学统计学硕士学位。1980年,他获得科罗拉多大学的生物统计学博士学位。1983年,萨瑟兰进入中洲计算机服务公司,该公司为150家银行提供技术服务,他负责研发ATM网络技术。萨瑟兰还先后担任了11家软件公司的首席执行官和首席技术官,积累了丰富的项目管理经验。2006年,他成立了自己的公司Scrum,Inc.,提供Scrum管理方法的培训服务。