是读书还是思考敏捷教练领导力Scrum精益敏捷DevOps

敏捷Scrum实践集核心精髓免费入门学习教程培训讲义

2018-01-04  本文已影响52人  申导

为了回馈敏捷社区对上海优普丰敏捷学院成立10年来的支持,我们决定免费放出敏捷开发Scrum实践集核心精髓免费入门学习教程培训讲义,包含美国Scrum联盟的Certified Scrum Master培训(即CSM认证)公开课培训的核心内容,方便大家预习和复习Scrum实践,更好地了解敏捷开发是什么。本讲义遵循Scrum Guide 2016和美国Scrum Alliance官方CSM认证学习目标(learning objective) 2017版。感谢Vernon Stinebaker(史文林)、Bill Li(李国彪)、Jacky Shen (申健)对本教材讲义的贡献。内容与CSM认证考试题库中测试题目的学习目标大致相同。

敏捷是什么?

Resolve complexity and uncertainty with continuous and fast feedback to create ability responding to changes with low cost, so that achieve better effect

利用持续、快速反馈来破解复杂性和不确定性,建立用较低成本来响应变化的能力,从而达到更好的效果

4条敏捷宣言和12敏捷原则给出了更为具体的解释。

image.png

什么是Scrum

Scrum是基于试验性过程(经验主义)的框架,用来解决不确定问题和维护复杂产品。试验性过程的三个支柱分别是Transparency 透明、Inspection 检验、Adaptation 适应。

Scrum is an agile process that allows us to focus on delivering the highest business value in the shortest time……It is iterative and incremental…… (from Mike Cohn)

Scrum 作为一种敏捷过程让我们关注于在最短时间内交付最高价值……它是迭代和增量式的……

Scrum的出现借鉴了《新的新产品开发方式》、精益思想、时间盒、SmallTalk面向对象编程中的模块化概念等。

Scrum起源

1986年,竹内弘高和野中郁次郎在哈佛商业评论上发表论文《The New New Product Development Game》,文章首次提到了将Scrum工作方式应用与产品开发,他们指出:

“传统的接力式的开发模式已经不能满足快速灵活的市场需求,而整体或“橄榄球式”(Rugby)的方法——团队作为一个整体前进,在团队的内部不断传球并保持前进,这也许可以更好的满足当前激烈的市场竞争。”

1993年,Jeff Sutherland在 Easel公司定义了用于了软件开发行业的Scrum流程

1993年,Ken Schwaber受哈佛商评论文影响,用Scrum方法拯救了一个濒临失败的项目。

1994年,Ken Schwaber建立了“控制混乱”网站。

1995年,Jeff Sutherland应邀将哈佛商评的文章转发给正在创立极限编程的Kent Beck

1995年,Jeff Sutherland和Ken Schwaber规范化了Scrum框架,并在OOPSLA 95上公开发布。

2001年,敏捷宣言及原则发布、敏捷联盟成立,Scrum是其中一种敏捷方法。

2001年,Ken Schwaber和Mike Beedle推出第一本Scrum书籍《Scrum敏捷软件开发》。

2002年,Ken Schwaber 和Mike Cohn共同创办了Scrum联盟。

更多Scrum历史考古,参见 http://www.jackyshen.com/2017/08/02/is-your-Scrum-lean-enough

预定义过程与经验性过程

Command and Control 命令控制
Plan in details 详细计划
Enforce the plan 强制按计划
“Control” change “控制”变化

vs.

Learn as we go 边前进边学习
Change happens 变化会发生
Embrace change 拥抱变化
Inspect and Adapt 检视和调整

Scrum框架3355概览和Scrum术语

Scrum的3个角色

Development Team 交付团队的使命和特征

Product Owner 产品负责人的特征和职责

ScrumMaster 团队敏捷教练的特征和职责

SM Candidate 候选者特征

开放心态,积极探索,愿意分享和帮助他人。经历过转型或至少了解组织政治生态,善用权力但不渴望权力。中等偏上的技术和产品知识水平。具备沟通能力和意愿包括影响力。从性格像限看,友善或表现型偏多

Open mind, active exploring, willing to share and help others. Experienced in transformation or at least understand political ego-system of organization, be good at using power w/o eager to that. Above average level of technology and product knowledge. Have communication and influencing skill. More of extroversion.

ScrumMaster Common Focused Area ScrumMaster常见的关注领域

Scrum的3个工件

Product Backlog 产品Backlog

Sprint Backlog 迭代待办项列表

Sprint Goal 迭代目标

Visible Task Board Kanban 可视化任务墙看板

Sprint Burn Down Charts 迭代燃尽图

Potentially Shippable Product Increment (PSP) 潜在可交付产品增量

Scrum的5个活动

Sprint 迭代

Sprint Planning Sprint计划会议

Timebox: max 8 hours for 1 month Sprint

时间盒:1个月的Sprint最长8小时

Part I SELECTION 第一部分 选择
Define the Sprint Goal 定义迭代目标
Select the Product Backlog Items the team can commit to complete 选择团队可以承诺完成的迭代待办项

Part II PLANNING 第二部分 计划
Decide how to achieve the Sprint Goal 决定如何实现迭代目标
Create the Sprint Backlog 创建 Sprint Backlog
Estimate the Sprint Backlog Items 估算迭代待办项

Daily Scrum 每日站会

Sprint Review Sprint 评审

Sprint Retrospective 迭代回顾

Scrum的5个价值观

Scrum团队

Scrum三大角色,合起来称为Scrum团队。

在传统的工作方式下,开发团队会有很多不同的角色,比如项目经理、产品经理、架构师、设计师、用户体验设计师,程序员,测试人员,DBA等等。但是,在Scrum的工作方式下,总共只有三个角色, 这三个角色分别是产品负责人(PO), Scrum Master(SM)和交付团队(DT)。

我们通常可以以划龙舟的团队角色来类比Scrum的角色,划龙舟通常有舵手、鼓手、划桨团队三个角色。Scrum中的PO就是舵手的角色,他对产品的方向负责,对产品的Why和What负责,对产品的愿景,产品包括哪些主要的特性负责。Scrum中的Scrum Master鼓手的角色,他帮助团队保持高昂的士气,并进行良好的协作,他是一个Scrum的专家,团队的教练,团队的服务式领导。Scrum中的交付团队,对应到龙舟赛的划桨团队,团队必须协调一致,作为一个整体前进,在这样的环境下单打独斗,各自为政没有任何胜算。

打造自组织团队的三个约定

完成的定义 Definition of Done (DoD)

当产品代办事项列表条目或者增量被描述为“完成”的时候,每个人都必须理解“完成”意味着什么。虽然这在不同的 Scrum 团队之间会有巨大的差别,但是团队成员必须对完成工作意味着什么有相同的理解,这样才能保证透明性。这就是 Scrum 团队的“完成” 定义,用来评估产品增量在什么时候完成,并且没有妥协质量。

DoD这个定义是团队对产品负责人的承诺,是团队当前能力的体现。可以用来指导开发团队了解在 Sprint 计划会议的时候他们能选择多少产品代办事项列表条目。每个 Sprint 的目标都是交付遵循 Scrum 团队当前的“完成的定义”的潜在可交付产品增量。

开发团队在每个 Sprint 交付产品功能增量。这个增量是可用的,所以产品负责人可以选择立即发布它。每个增量都附加于之前所有增量并经过充分测试,以此保证所有的增量都能工作。

随着 Scrum 团队的成熟,我们预期“完成”的定义会扩大,包含更严厉标准来保证高质量。

需要注意的是,如果在每个迭代,我们对“完成”的标准要求过低,那么这会导致在每个迭代,我们都会遗留一些完成外的工作,完成外的工作持续累计会增加项目的风险,有可能导致产品负责人决定发布的时候,产品却因为累积了过多的完成外的工作而无法发布,以致于我们还需要一个额外的Sprint来使它稳定。

准备好的定义 Definition of Ready (DoR)

当PO拿出Product Backlog请团队拉动工作时,团队是否能否立刻开始,抑或充满疑惑,似懂非懂?有些戏精工程师就在迭代根据自己的理解胡乱做,待到验收的时候产品负责人和客户大叫“这不是我要的!”

于是DoR这个定义(也称“就绪的定义”)正式产品负责人对团队的承诺,是团队能够开工的保证。团队有权利要求PO提供这个检查清单中的必需内容,不然的话就先不开始这个工作。

DoR一般包括:每个PBI和用户故事应当具备背景和目标、足够理解的信息、已估算、已排序、已记录下验收条件测试用例,界面原型草图,乃至浏览器兼容性列表等等。

团队工作约定 Team Working Agreement

也称团队纪律。自组织团队中每个人如何协作配合?就像乔布斯在《The Lost Video》中提到的,打造团队就是要明确目标,然后建立一个容器,让大家互相争吵、碰撞、打磨,于是丑陋的石头也会变成漂亮的石头。

大家之间磨合的约定和规则是符合现实的,外人不能也无法给出一个传统的流程强迫大家遵循,一定是大家提出、大家认可,大家才能执行下去。

这些工作约定可以显式化张贴出来,也允许更改。比如每个迭代回顾会的时候,SM可以引导大家对Working Agreement进行更新。一般内容中包括:开站会时间、用什么工具IDE、持续集成轮流负责、讨论时不准玩手机、一次只有一个话题、先不评判别人的想法等等。

敏捷估算

Absolute Estimation 绝对值估算
number with a ‘unit’, like MD/Hours, Line of Code etc 带有”单位“的数字,例如人天/小时,代码行数等

vs.

Relative Estimation 相对值估算
number WITHOUT a unit: number of times we compare one against another 不带单位的数字:一个数字与另一个数字的对比

Why Relative Estimation 选择相对估算的理由

Estimation == Best Guess
Accuracy over Precision
Accuracy vs. Effort of estimation
Work Effort ≠ Time

用户故事

什么是用户故事?

用户故事是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:

1. 角色-Who:谁要使用这个功能。

2. 活动-What:需要完成什么样的功能。

3. 商业价值-Why:为什么需要这个功能,这个功能带来什么样的价值。

用户故事通常按照如下的格式来表达:

英文:

As a [who], I want [what] , so that [why].

中文:

作为一个<角色>, 我想要<活动>, 以便于<商业价值>

举例:

作为一位招聘者,我想要发布一个职位信息,以便于应聘者能够看到和投递该职位。

需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。

Jeff Paton升级Ron Jeffries的5C

卡片(Card) – 用户故事一般写在小的报事贴卡片上。卡片上可能会写上故事的简短描述,工作量估算等。
交谈(Conversation)- 用户故事背后的细节来源于和客户或者产品负责人的交流沟通。
确认(Confirmation)- 通过验收测试用例确认用户故事被正确完成。
构建(Construction) – 团队通过技术手段实现这个用户故事的要求和功能。
后果(Consequence) – 交付给用户真正使用,并获取反馈。

优秀用户故事的六个特征- INVEST原则

INVEST = Independent, Negotiable, Valuable, Estimable, Small, Testable

一个好的用户故事应该遵循INVEST原则。

独立性(Independent)— 要尽可能的让一个用户故事独立于其他的用户故事。用户故事之间的依赖使得制定计划,确定优先级,工作量估算都变得很困难。通常我们可以通过组合用户故事和分解用户故事来减少依赖性。
可协商性(Negotiable)— 一个用户故事的内容要是可以协商的,用户故事不是合同。一个用户故事卡片上只是对用户故事的一个简短的描述,不包括太多的细节。具体的细节在沟通阶段产出。一个用户故事卡带有了太多的细节,实际上限制了和用户的沟通。
有价值(Valuable)— 每个故事必须对客户具有价值(无论是用户还是购买方)。一个让用户故事有价值的好方法是让客户来写下它们。一旦一个客户意识到这是一个用户故事并不是一个契约而且可以进行协商的时候,他们将非常乐意写下故事。
可以估算性(Estimable)—开发团队需要去估计一个用户故事以便确定优先级,工作量,安排计划。但是让开发者难以估计故事的问题来自:对于领域知识的缺乏(这种情况下需要更多的沟通),或者故事太大了(这时需要把故事切分成小些的)。
短小(Small)— 一个好的故事在工作量上要尽量短小,最好不要超过10个理想人/天的工作量,至少要确保的是在一个迭代或Sprint中能够完成。用户故事越大,在安排计划,工作量估算等方面的风险就会越大。
可测试性(Testable)—一个用户故事要是可以测试的,以便于确认它是可以完成的。如果一个用户故事不能够测试,那么你就无法知道它什么时候可以完成。一个不可测试的用户故事例子:软件应该是易于使用的。

Scrum检查清单

你的团队和组织中,Scrum与敏捷做的怎么样啊?可以用这个Scrum Checklist来做个免费的自我评估吧。

上一篇 下一篇

猜你喜欢

热点阅读