敏捷开发方法漫谈
yuzhicheng@innobuddy.com
大纲
- 敏捷开发方法概述
- 什么是Scrum
- Scrum如何实施
- 开放式讨论
敏捷开发方法
软件开发的不确定性
-
Scrum 1995
-
Crystal 1996
-
XP 1996
-
FDD 1998
-
Martin Flower 出版 《重构》1999
-
Martin FLower 发表 《持续集成》2000
-
17位专家共同起草的敏捷宣言发表 2001
历史
- 人与人的交互,重于过程和工具;
- 可用的软件,重于详细的文档;
- 与客户协作,重于合同谈判;
- 随时应对变化,重于循规蹈矩。
原则,实践,模式
-
对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。
-
我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
-
经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
-
业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
-
围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
-
在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
-
可以工作的软件是进度的主要度量标准。
-
敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
-
对卓越技术与良好设计的不断追求将有助于提高敏捷性。
-
简单——尽可能减少工作量的艺术至关重要。
-
最好的架构、需求和设计都源自自我组织的团队。
-
每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
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