敏捷开发方法漫谈

yuzhicheng@innobuddy.com

大纲

  • 敏捷开发方法概述
  • 什么是Scrum
  • Scrum如何实施
  • 开放式讨论

敏捷开发方法

软件开发的不确定性

  • Scrum 1995

  • Crystal 1996

  • XP 1996

  • FDD 1998

  • Martin Flower 出版 《重构》1999

  • Martin FLower 发表 《持续集成》2000

  • 17位专家共同起草的敏捷宣言发表 2001

历史

  • 人与人的交互,重于过程和工具;
  • 可用的软件,重于详细的文档;
  • 与客户协作,重于合同谈判;
  • 随时应对变化,重于循规蹈矩。

原则,实践,模式

  1. 对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。

  2. 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。

  3. 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。

  4. 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。

  5. 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。

  6. 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。

  7. 可以工作的软件是进度的主要度量标准。

  8. 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。

  9. 对卓越技术与良好设计的不断追求将有助于提高敏捷性。

  10. 简单——尽可能减少工作量的艺术至关重要。

  11. 最好的架构、需求和设计都源自自我组织的团队。

  12. 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。​

Scrum

极限编程(XP)

  • 结对编程
  • 测试驱动开发:单元测试,重构
  • 持续集成
  • 代码集体所有
  • 现场客户

精益思维

完成最小可用的产品,通过学习和反馈迭代优化。

  • 消除浪费
  • 增强学习
  • 尽量延迟决定
  • 尽快发布
  • 下放权力
  • 嵌入质量
  • 全局优化

特性驱动开发 - FDD

看板(白板)

现实中的看板

用户故事

INVEST

MoSCoW

优先级的艺术

估算

  • 故事点相对估算
  • 规模估算
  • 估算团队
  • 估算方法
    • 估算纸牌
    • SML
  • 非正式估算749

749估算法

有价值的模糊估算法

简化的功能点估算法,来自NESMA

(数据*7 + 操作*4) * 9 = 工时数

估算纸牌

因果图法

发现和解决根本问题

OKRs

目标结果法

SMART

SWOT

决策分析模型

技术债务

  • 不计后果,故意的
  • 谨慎,故意的
  • 不计后果,无意的
  • 谨慎,无意的

你选择还清债务还是支付利息

自组织团队

自组织团队要自我决择如何最好地完成他们的工作,而不是由其他外部团队来决定。

是结果而不是先决条件

练习

个人练习,团队练习

DevOps

开发+IT运维

2009

Scrum方法

历史

二战 -> 麦克阿瑟 -> 日本 -> 戴明 -> PDCA -> New New Product Development Game -> 美国 -> Scrum

Scrum图解

Scrum概念

Scrum是一种敏捷软件开发的方法学,用于迭代式增量软件开发过程。Scrum在英语是橄榄球运动中争球的意思。

同时,Scrum也是组织变革的方法论。

Scrum 理论

透明,检查,调整

角色,事件,工件,规则

四大支柱

Scrum角色

  • Scrum Master:教练和团队带头人,确保团队合理的运作Scrum,并帮助团队移除实施中的障碍;

  • 产品负责人:确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间,为产品投资报酬率(ROI)负责

  • 开发团队:一个自组织跨职能的小团队,人数5-9人,团队拥有交付可用软件需要的各种技能。

  • 其他:用户,客户,经理

产品经理 vs 产品负责人

产品经理 vs 项目经理

项目经理 vs 技术经理

项目经理 vs Scrum Master

Scrum Master 主要职责

  • 教练
  • 服务型领导
  • 敏捷实施过程的权威
  • 保护伞
  • 清道夫
  • 变革代言人

Scrum工件

  • Backlog,定义完成
  • Sprint Backlog
  • 燃尽图,燃烧图等
  • 剩余工作量及时间的预估
  • 可交付增量

燃尽图

Scrum会议

  • Sprint 计划会议 2小时
  • 每日站会 15分钟
  • Sprint 评审会议 1小时
  • Sprint 回顾会议 1小时

反模式

  • 由于团队成员时间总对不上,站立会被推迟到下班之前
  • 开会时间过长或者过短
  • 每日站立汇报会
  • 发言表达混乱,没有主次
  • 抛出障碍无人响应

正模式

  • 有规矩成方圆,尊重团队约定
  • 要有仪式感,回答3个问题
  • 明确迭代目标,明确当日任务
  • 聚焦圆心,不开汇报会
  • 障碍有回应
  • 团队一起优化改进,互相监督

说说每日站立会

Sprint

  • 时间不能超过一个月
  • 估算,考虑投入度
  • 保证结束时,有可交付增量
  • 分配任务,主动领取
  • 集体所有,责任属于整个团队
  • 开发团队只有开发人员

Scrum+XP+看板+DevOps

看板的警示作用

看板的警示作用

看板的警示作用

看板的警示作用

Scrum可以部分实施,但那就不是Scrum了

Scrum不仅用于开发,也可以用于其他部门管理项目,甚至可以用于每个人的家庭生活

反模式

  • 小瀑布
  • 开发团队的Scrum
  • 汇报式的每日站会
  • 过长的Sprint 0

Scrum of Scrums

如何实施

能力要素

  • 学习新技术,新技能

  • 学会用团队的方式思考和工作

  • 学会在一个短的时间周期内交付可以工作的成果

节奏把控

  • 立即开始,限时完成

  • 渐进敏捷

  • 用Scrum思想来推进实施Scrum

虚拟促进组织

  • 企业转型团队(ETC)

    • 高层支持,创造环境

    • 有序推进(Backlog VS 回顾改进)

  • 改进团队(IC)

    • 自动化测试研究小组

    • 持续集成研究小组

    • Scrum Master培养小组

开放式讨论

大型公司人员众多的情况下,如何实践Scrum?

分布式团队怎么实践Scrum?

在实践Scrum时,开发外包项目,自主产品,创业项目,在运营项目有何差别,Web项目和软件项目有何差别?

Scrum是万能的么,解决了什么问题?

对你来说实施Scrum最困难的地方在哪里?

Scrum最重要的是什么?

在公开透明的前提下,基于官方经典的Scrum指南进行实践并根据自身特点持续改进流程,最终形成自组织团队。

我的理解

在线工具

  • http://home.leangoo.com/
  • https://www.tapd.cn/
  • https://www.teambition.com
  • https://www.worktile.com

参考文档

  • http://www.scrumguides.org/
  • http://www.scrumcn.com/
  • 《硝烟中的Scrum与XP》
  • 《敏捷革命》
  • 百度百科
  • 维基百科

敏捷开发方法漫谈内部培训

By Richard Yu

敏捷开发方法漫谈内部培训

分享一下我对敏捷开发方法,团队建设,开发过程管理方面的一些想法和心得。

  • 727