Upload
kai-feng-zhang
View
550
Download
1
Embed Size (px)
Citation preview
分布式开发实践张凯峰
ThoughtWorks
1Thursday, May 17, 12
提纲• 分布式开发的优势
• 分布式开发的挑战
• 分布式开发的经验
2Thursday, May 17, 12
定义
• 研发团队
• 跨多个地区
• 区别于外包和虚拟团队
3Thursday, May 17, 12
为什么会出现分布式
• 资源
• 客户• 成本
4Thursday, May 17, 12
分布式开发的优势• 降低开发成本• 24*7开发周期
• 利用全球人才库• 本地化及当地市场
• 减小对单一人才市场的依赖
5Thursday, May 17, 12
分布式开发的挑战
•物理距离导致协作不畅,增加误解风险
•代码依赖和系统集成
•跨区域维护团队和工程纪律
6Thursday, May 17, 12
ThoughtWorks
7Thursday, May 17, 12
ThoughtWorks的经验
8Thursday, May 17, 12
项目启动
• 启动会议• 团队搭建• 沟通协定
9Thursday, May 17, 12
项目启动之启动会议
10Thursday, May 17, 12
项目团队之团队搭建
• 两地均设立BA,并定期交换
• 设立PO的代理角色
• 按照功能而非活动组织团队
11Thursday, May 17, 12
非功能团队Dysfunctional
Testers
Analysts
Testers
Analysts
Developers
Developers
Developers
Developers
Location 1 Customers
Customers
Customers
Customers
Location 3
12Thursday, May 17, 12
半功能团队
Developers Testers
Customers Analysts
Functioning
Developers Testers
Customers Analysts
13Thursday, May 17, 12
全功能团队
Developers
Customers
Testers
Analysts
Developers
Customers
Testers
Analysts
14Thursday, May 17, 12
项目启动之模拟分布式开发
• 在不同的楼层工作• 在不同的会议室开会
15Thursday, May 17, 12
项目进行中
16Thursday, May 17, 12
项目进行之站立会议
• 大团队拆分为小团队,分别做Standup
• Super Standup
17Thursday, May 17, 12
项目进行之视频会议
• 大屏幕• 故事墙• 会议电话
18Thursday, May 17, 12
项目进行之即时沟通
19Thursday, May 17, 12
项目进行之同步视频• 两地配备即时影像• 独立麦克风
20Thursday, May 17, 12
项目进行之代码共有
21Thursday, May 17, 12
项目进行之轻量级文档
22Thursday, May 17, 12
项目进行之可视化
23Thursday, May 17, 12
项目进行之持续集成
•定期收集对需求理解和功能实现的反馈
•尽早发现和消除集成问题
24Thursday, May 17, 12
项目进行之测试
•用测试脚本表述需求
•开发前经过PO等利益相关人验证25Thursday, May 17, 12
项目进行之Puppy
26Thursday, May 17, 12
项目进行之Mingle
27Thursday, May 17, 12
项目进行之面对面交流
• 双向Travel
• 沟通协定
28Thursday, May 17, 12
项目进行之Showcase
29Thursday, May 17, 12
项目进行之回顾• www.edistorm.com
• 白板和便签贴• 分组和投票
• www.ideaboard.com
• Google Doc
30Thursday, May 17, 12
项目交付
31Thursday, May 17, 12
谢谢
32Thursday, May 17, 12
Distributed Models
33Thursday, May 17, 12