敏捷开发方法漫谈
Richard Yu@SmartStudy
www.smartstudy.com
自我介绍
于志成,社区昵称:理查,Drupal项目社区创始人,站长,目前就职于智课教育,曾就职于Chegg中国,高级工程师,热爱Drupal,关注大型网站系统架构及性能优化,团队建设,项目管理等方向。
www.DrupalProject.org
大纲
- 我们的开发流程
- 敏捷开发方法概述
- Scrum
- 开放式讨论
我们的流程
Redmine+SVN(GIT)
迭代周期
两周一次进行迭代开发,可以更好的计划和跟踪,配合Redmine可以知道每个人的工作及进度
Release视角
SVN用法
trunk + www
运行环境
- 本地开发服务器
- 线上测试服务器
- 预上线服务器
- 生产服务器
几个角色
- Product Team
- Designer
- Leader
- Developers
- Frontend
- Backend
- Tester
- Deployer
任务状态流
会议
- 每日例会
- 小组会(具体问题)
- 头脑风暴会议
- Bug分享会
- 技术交流会
- 专家培训会
绩效考核
Performance review (SMART)
敏捷开发方法
-
Scrum 1995
-
Crystal 1996
-
XP 1996
-
FDD 1998
-
Martin Flower 出版 《重构》1999
-
Martin FLower 发表 《持续集成》2000
-
17位专家共同起草的敏捷宣言发表 2001
历史
- 人与人的交互,重于过程和工具;
- 可用的软件,重于详细的文档;
- 与客户协作,重于合同谈判;
- 随时应对变化,重于循规蹈矩。
敏捷宣言
原则,实践,模式
敏捷开发12原则
-
对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。
-
我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
-
经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
-
业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
-
围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
-
在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
-
可以工作的软件是进度的主要度量标准。
-
敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
-
对卓越技术与良好设计的不断追求将有助于提高敏捷性。
-
简单——尽可能减少工作量的艺术至关重要。
-
最好的架构、需求和设计都源自自我组织的团队。
-
每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
Scrum
极限编程(XP)
- 结对编程
- 测试驱动开发:单元测试,重构
- 持续集成
- 代码集体所有
- 现场客户
精益思维
完成最小可用的产品,通过学习和反馈迭代优化。
- 消除浪费
- 增强学习
- 尽量延迟决定
- 尽快发布
- 下放权力
- 嵌入质量
- 全局优化
特性驱动开发 - FDD
看板(白板)
现实中的看板
用户故事
INVEST
MoSCoW
优先级的艺术
估算
- 故事点相对估算
- 规模估算
- 估算团队
- 估算周期
- 估算方法
- 估算纸牌
- SML
- 非正式估算749
749估算法
有价值的模糊估算法
简化的功能点估算法,来自NESMA
估算纸牌
因果图法
发现和解决根本问题
OKRs
目标结果法
SWOT
决策分析模型
技术债务
- 不计后果,故意的
- 谨慎,故意的
- 不计后果,无意的
- 谨慎,无意的
你选择还清债务还是支付利息
自组织团队
自组织团队要自我决择如何最好地完成他们的工作,而不是由其他外部团队来决定。
是结果而不是先决条件
练习
个人练习,团队练习
DevOps
开发+IT运维
2009
Scrum方法
Scrum图解
Scrum概念
Scrum是一种敏捷软件开发的方法学,用于迭代式增量软件开发过程。Scrum在英语是橄榄球运动中争球的意思。
Scrum 理论
透明,检查,调整
角色,事件,工件,规则
Scrum角色
-
Scrum Master:教练和团队带头人,确保团队合理的运作Scrum,并帮助团队移除实施中的障碍;
-
产品负责人:确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间,为产品投资报酬率(ROI)负责
-
开发团队:一个自组织跨职能的小团队,人数5-9人,团队拥有交付可用软件需要的各种技能。
-
其他:用户,客户,经理
Scrum工件
- Backlog,定义完成
- Sprint Backlog
- 燃尽图,燃烧图等
- 剩余工作量及时间的预估
- 可交付增量
燃尽图
Scrum会议
- Sprint 计划会议 8小时
- 每日 Scrum 站会 15分钟
- Sprint 评审会议 4小时
- Sprint 回顾会议 3小时
Sprint
- 时间不能超过一个月
- 估算,考虑投入度
- 保证结束时,有可交付增量
- 分配任务,主动领取
- 集体所有,责任属于整个团队
- 开发团队只有开发人员
Scrum+XP+看板+DevOps
看板的警示作用
看板的警示作用
看板的警示作用
看板的警示作用
Scrum可以部分实施,但那就不是Scrum了
Scrum不仅用于开发,也可以用于其他部门管理项目,甚至可以用于每个人的家庭生活
反模式
- 小瀑布
- 开发团队的Scrum
- 汇报式的每日站会
- 过长的Sprint 0
开放式讨论
大型公司人员众多的情况下,如何实践Scrum?
分布式团队怎么实践Scrum?
在实践Scrum时,开发外包项目,自主产品,创业项目,在运营项目有何差别,Web项目和软件项目有何差别?
Scrum是万能的么,解决了什么问题?
对你来说实施Scrum最困难的地方在哪里?
Scrum最重要的是什么?
在公开透明的前提下,基于官方经典的Scrum指南进行实践并根据自身特点持续改进流程,最终形成自组织团队。
我的理解
在线工具
- http://home.leangoo.com/
- https://www.tapd.cn/
- https://www.teambition.com
参考文档
- http://www.scrumguides.org/
- http://www.scrumcn.com/
- 《硝烟中的Scrum与XP》
- 百度百科
- 维基百科
敏捷开发方法漫谈
By Richard Yu
敏捷开发方法漫谈
分享一下我对敏捷开发方法,团队建设,开发过程管理方面的一些想法和心得。
- 3,471