敏捷开发方法漫谈

Richard Yu@Chegg China

www.DrupalProject.org

自我介绍

于志成,社区昵称:理查,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个原则

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

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

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

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

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

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

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

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

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

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

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

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

Scrum

极限编程(XP)

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

精益思维

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

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

特性驱动开发 - FDD

看板(白板)

现实中的看板

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》
  • 百度百科
  • 维基百科