关于SCRUM <您的姓名> <日期>
关于Scrum Presented by <您的姓名> <日期>
作者的联系方式 Presentation by: Mike Cohn mike@mountaingoatsoftware.co m www.mountaingoatsoftware.com (720) 890-6110 (office) 感谢 Mike Cohn 提供以下内容. Thanks.
版权信息 你可以免费: 在以下前提下: 本许可证中任何内容都不损害或者限制作者 的道德权利。. 共享 ― 拷贝, 分发和传播这些成果 在你的工作中重用 ― 应用这些成果 在以下前提下: 归属: 你必须以作者或者许可授权者规定的方式来声明成果的 归属。(但不能采用任何表明他们支持你或者你使用这些成果 的方式来声明成果的归属。) 本许可证中任何内容都不损害或者限制作者 的道德权利。. 更多信息提供于 http://creativecommons.org/licenses/by/3.0/
我们将输掉这场‘接力跑’ Hirotaka Takeuchi and Ikujiro Nonaka, “The New New Product Development Game”, Harvard Business Review, January 1986. “‘接力跑’式的产品开发…… 模式一定程度上违背了以人为本,最大化生产力,灵活的生产方式的原则。相反另一种团队,如同一场橄榄球赛的团队合作方式——这种模式下,整个团队通过无间合作,灵活机动的处理接球,传球,并像一个整体迅速突破防线——这可能更加适应于今天更具挑战市场需求。 would be nice to include a quote from Wicked Problems here
Scrum 的精髓 SCRUM使得我们能够专注于如何在最短的时间内实现最有价值的部分。 团队按照商业价值的高低先完成高优先级的产品功能,并自主管理,凝结了团队智慧创造出最好的方法因而提高效率。 每隔一两周或者一个月,我们就可以看到实实在在的可以上线的产品。此时,就可以下一步的决定是继续完善功能实现更多需求或者直接发布了。
Scrum的发源 Jeff Sutherland Ken Schwaber Mike Beedle Initial scrums at Easel Corp in 1993 IDX and 500+ people doing Scrum Ken Schwaber ADM Scrum presented at OOPSLA 96 with Sutherland Author of three books on Scrum Mike Beedle Scrum patterns in PLOPD4 Ken Schwaber and Mike Cohn Co-founded Scrum Alliance in 2002, initially within the Agile Alliance
Scrum 被知名企业广泛采用: 微软 雅虎 谷歌 电艺 飞利浦 西门子 诺基亚 英国广播公司 尼尔森视界公司 第一美国不动产经纪公司 美国第一资本投资国际集团 Intuit High Moon Studios Lockheed Martin BMC Software Ipswitch John Deere Lexis Nexis Sabre Salesforce.com Time Warner Turner Broadcasting Oce
Scrum 被运用的领域: 商业软件 游戏软件 集中式开发 药监管理软件 根据契约进行的开发 网站 固定投资开发 掌上电脑软件 财务软件 ISO 9001认证应用 嵌入式系统 0当机系统软件 联合攻击战斗机 游戏软件 药监管理软件 网站 掌上电脑软件 手机 网络交换路由设备 独立软件开发 一些大型软件开发
特点 他是其中一种“敏捷方法” 自我管理的团队 以“sprint”为周期迭代的产品开发 以一系列“产品 Backlog”记录了产品需求 没有特定的工程实践惯例 在以生成规则创造的敏捷开发环境交付产品 他是其中一种“敏捷方法”
资源来自: www.agilemanifesto.org 敏捷宣言作者们的价值观 重视 开发过程和工具 个人与交互 重于 复杂的文档 可用的软件 重于 对合同的谈判 寻求客户的合作 重于 始终遵循固定的计划 对变化的响应变化 重于 资源来自: www.agilemanifesto.org
项目噪音水平 混乱的 复杂度 需求数量 较复杂的 简单的 技术难度 远离一致 接近一致 远远超出 团队能力 接近团 队能力 Source: Strategic Management and Organizational Dynamics by Ralph Stacey in Agile Software Development with Scrum by Ken Schwaber and Mike Beedle. 简单的 接近一致 技术难度 接近团 队能力 远远超出 团队能力
Scrum 24 小时 迭代周期 2-4 周 功能1 Sprint 目标 潜在可以发布的 增量产品 迭代 backlog Return 功能2 Gift wrap 功能3 Cancel 功能4 功能3 产品backlog
图片源于 www.mountaingoatsoftware.com/scrum
Sprints Scrum项目周期以一组迭代周期“sprints”组成 典型的迭代周期为2-4周或者最多一个自然月 可以和极限开发的迭代周期类比 典型的迭代周期为2-4周或者最多一个自然月 一个固定的周期能够创造出项目的更优美的节奏 感 产品的设计,开发,测试全部都在一个迭代内完 成
顺序 vs. 重叠开发过程 Scrum并非以一段时间集中完成一个过程 ...而是将所有过程中必须的每一部分集中在这段时间内完成 需求 设计 代码 测试 Scrum并非以一段时间集中完成一个过程 ...而是将所有过程中必须的每一部分集中在这段时间内完成 资源来自: “The New New Product Development Game” by Takeuchi and Nonaka. Harvard Business Review, January 1986.
确保一个迭代周期的稳定 变化 一个迭代周期的长短的设定取决于您能够保 障多长时间需求变化不影响到产品开发
Scrum 结构框架 职能 仪式 产出 产品所有者 ScrumMaster 团队 迭代计划 迭代验收 迭代回顾 每天召开的 scrum 会议 产品backlog 迭代 backlog 进度曲线图 产出
Scrum 结构框架 职能 仪式 产出 产品所有者 ScrumMaster 团队 迭代计划 迭代验收 迭代回顾 每天召开的 scrum 会议 产品backlog 迭代 backlog 进度曲线图 产出
产品所有者 定义所有产品功能 决定产品发布的内容以及日期 对产品的投入产出负责 根据市场变化对需要开发的功能排列优先顺 序 合理的调整产品功能和迭代顺序 认同或者拒绝迭代的交付
ScrumMaster 对项目的直接管理 领导团队完成Scrum的实践以及体现其价值 排除团队遇到的困难 确保团队的胜任其工作,并保持高效的生产率 使得团队紧密合作,使得团队个人具有多方面 职能的工作能力 保护团队不受到外来无端影响
团队 经典团队拥有 5-9 人 团队成员都是是多面手: 团队成员都全职工作 团队自我组织和管理 程序员, 测试员, 用户经验设计, 等等. 团队成员都全职工作 特殊职能可以例外 (例如, 数据库管理员) 团队自我组织和管理 团队关系在一个迭代中应该是固定的,个人的 职能可以在新迭代开始时发生调整
Scrum 结构框架 职能 仪式 产出 产品所有者 ScrumMaster 团队 迭代计划 迭代验收 迭代回顾 每天召开的 scrum 会议 产品backlog 迭代 backlog 进度曲线图 产出
迭代 计划会议 迭代目标 迭代backlog 迭代 优先级 迭代 计划 分析和评估产品Backlog各项目 选择一些作为迭代的目标 团队能力 迭代 优先级 分析和评估产品Backlog各项目 选择一些作为迭代的目标 迭代目标 产品 backlog 商业机会 迭代 计划 决定如何实现迭代目标 从产品的backlog中选择一些创建迭代backlog(任务) 以小时为单位评估迭代任务工作量 写有产品 迭代backlog 技术
迭代计划 为了选择好去处度过这个假期,我需要先看到酒店的照片. 团队自己从产品的backlog中选择一些他们能够完成的 任务作为迭代的backlog 迭代backlog被创建 任务被确认并且每一任务估计工作量应该在1-16小时左右 迭代的backlog的确定是团队协作的结果,而不是只有 scrummaster的决定 概要设计已经讨论过 为了选择好去处度过这个假期,我需要先看到酒店的照片. 编写后台和中间层(8 小时) 编写界面(4) 编写测试用例(4) 写类foo(6) 更新性能测试用例(4)
每天的Scrum会议 属性 不是为了解决问题 避免无关的讨论 每天都会开 15分钟结束 站着开会 所有相关的人被邀请 只有Scrum master,产品所有者,团队成员能 够在会上发言 避免无关的讨论
团队成员需要回答3个问题 1 2 3 昨天你做了什么? 今天你将要做什么? 你有需要帮助的地方吗? 对于 ScrumMaster来说这些问答不是工作 进度报告 他们是团队成员彼此的承诺
迭代结果的验收 团队需要演示所完成的迭代工作 典型的做法是使用演示形式展示新功能或者 底层架构的实现 非正式的 整个团队都需要参加 2小时的提前准备 不需要正式演示文档 整个团队都需要参加 邀请所有关注产品的人参加
迭代的回顾 周期性的回顾,总结工作中的经验和教训 一般 15–30 分钟 在每个迭代结束时开始做 整个团队都需要参加 ScrumMaster 产品所有者 团队 可能还包括客户
启动/ 停止 / 继续 整个团队集结一起讨论以下方案: 开始做 停止做 仅仅是诸多迭代回顾的活动的一种参考. 继续做
Scrum 结构框架 职能 仪式 产出 产品所有人 ScrumMaster 团队 迭代计划 迭代验收 迭代回顾 每天召开的 scrum 会议 产品backlog 迭代 backlog 进度曲线图 产出
产品 backlog 一组产品 backlog 需求 项目中待完成的工作列表 理想的是每一个待完成的工 作都将对客户和用户产生价 值 产品所有者将对这个列表进 行优先级排序 每个迭代开始前优先级的排 序工作还需要再度修正 一组产品 backlog
产品 backlog的样例 Backlog 列表 估计量 顾客可以酒店预定 3 顾客可以取消预定. 5 顾客可以提前更改预定的日期. 酒店工作人员可以出具RevPAR(revenue-per-available-room)报告 8 提高对突发事情的处理能力 ... 30 50
迭代目标 简短陈述这个迭代将要完成什么 功能用于人口遗传学研究. 应用可以运行于Oracle和SQL Server环境. 生命科学 功能用于人口遗传学研究. 数据库应用 应用可以运行于Oracle和SQL Server环境. 金融服务 提供比ABC更实时的数据流量来支持更多的技术指标.
管理迭代的 backlog 团队的个人将要签收其将拥有的工作 工作不是单向的分配 对于剩余工作量的估计每天需要更新 团队中任何人都可以添加,删减或者更改迭代中 的工作项目 为了迭代目标以及将发布的结果而工作 如果对将要面对的困难不清楚,最好先定义一个 相对工作量较大的工作项目然后适时在以后将其 分散成较小额工作量的几个部分 更新每个项目的剩余工作量
迭代backlog的样例 任务 Mon Tues Wed Thur Fri 编写用户界面 增加对错误的日志记录 8 10 16 8 16 12 4 12 16 8 4 11 8 8 编写中间层 测试中间层 编写在线帮助 编写Foo类
迭代耗散图 小时数
任务 Mon Tues Wed Thur Fri 8 4 12 16 8 10 16 7 11 8 16 8 12 编写用户界面 编写中间层 测试中间层 8 编写在线帮助 12 50 40 30 小时数 20 10 Mon Tue Wed Thu Fri
扩展性 典型的一支敏捷团队的人数是7± 2 人 扩展团队时需要考虑的因素 Scrum方法可用于总数超过500人的项目 通过“团队中团队”的方法扩展 扩展团队时需要考虑的因素 所开发产品的类型 团队大小 团队的分布 项目周期 Scrum方法可用于总数超过500人的项目
通过“Scrum of scrums”的方式扩展团队
Scrum of scrums of scrums
推荐资源 www.mountaingoatsoftware.com/scrum www.scrumalliance.org www.controlchaos.com scrumdevelopment@yahoogroups.com
推荐书籍 Agile and Iterative Development: A Manager’s Guide by Craig Larman Agile Estimating and Planning by Mike Cohn Agile Project Management with Scrum by Ken Schwaber Agile Retrospectives by Esther Derby and Diana Larsen Agile Software Development Ecosystems by Jim Highsmith Agile Software Development with Scrum by Ken Schwaber and Mike Beedle Scrum and The Enterprise by Ken Schwaber User Stories Applied for Agile Software Development by Mike Cohn Lots of weekly articles at www.scrumalliance.org