分布式       发实践
                            张凯峰
                         ThoughtWorks




Thursday, May 17, 12                    1
提纲
                       • 分布式   发的优势

                       • 分布式   发的挑战

                       • 分布式   发的经验




Thursday, May 17, 12                  2
定义

                  • 研发团队
                  • 跨多个地区
                  • 区 于外包和虚拟团队


Thursday, May 17, 12             3
为什么会出现分布式

                       • 资源
                       • 客户
                       • 成本


Thursday, May 17, 12               4
分布式    发的优势
               • 降低 发成本
               • 24*7 发周期
               • 利用全球人才库
               • 本地化及当地市场
               • 小对单一人才市场的依赖
Thursday, May 17, 12           5
分布式    发的挑战

              • 物理距离导致协作不畅,增加误解风险
              • 代码依赖和系统集成
              • 跨区域维护团队和工程纪律




Thursday, May 17, 12                6
ThoughtWorks




Thursday, May 17, 12           7
ThoughtWorks的经验




Thursday, May 17, 12                     8
项目启动

                       • 启动会议
                       • 团队搭建
                       • 沟通协定


Thursday, May 17, 12            9
项目启动之启动会议




Thursday, May 17, 12        10
项目团队之团队搭建

                       •    地均设立BA,并定期交换

                       •   设立PO的代理角色

                       •   按照功能而非活动组织团队




Thursday, May 17, 12                       11
非功能团队
                                               Dysfunctional




                       Developers Developers    Testers    Testers
                                                                      Customers Customers




                       Developers Developers    Analysts   Analysts
                                                                      Customers Customers

                           Location 1                                   Location 3




Thursday, May 17, 12                                                                        12
半功能团队

                       Developers   Testers   Functioning   Customers   Analysts




                       Developers   Testers                 Customers   Analysts




Thursday, May 17, 12                                                               13
全功能团队

                       Developers   Testers    Developers   Testers




                        Customers   Analysts    Customers   Analysts




Thursday, May 17, 12                                                   14
项目启动之模拟分布式           发
                       • 在不同的楼层工作
                       • 在不同的会议室 会




Thursday, May 17, 12                     15
项目进行中




Thursday, May 17, 12    16
项目进行之站立会议




             • 大团队拆分为小团队,分     做Standup

             • Super Standup
Thursday, May 17, 12                      17
项目进行之视频会议

                       • 大屏幕
                       • 故事墙
                       • 会议电话


Thursday, May 17, 12            18
项目进行之即时沟通




Thursday, May 17, 12        19
项目进行之同步视频
                       • 地配备即时影像
                       • 独立麦克风




Thursday, May 17, 12               20
项目进行之代码共有




Thursday, May 17, 12        21
项目进行之轻量级文档




Thursday, May 17, 12         22
项目进行之可视化




Thursday, May 17, 12       23
项目进行之持续集成




                       • 定期收集对需求理解和功能实现的反馈
                       • 尽早发现和消除集成问题

Thursday, May 17, 12                         24
项目进行之测试




                       • 用测试脚本表述需求
                       •   发前经过PO等利益相   人验证
Thursday, May 17, 12                          25
项目进行之Puppy




Thursday, May 17, 12         26
项目进行之Mingle




Thursday, May 17, 12          27
项目进行之面对面交流

                       • 双向Travel
                       • 沟通协定



Thursday, May 17, 12                28
项目进行之Showcase




Thursday, May 17, 12            29
项目进行之回顾
                 •     www.edistorm.com

                       •   白板和便签贴

                       •   分组和投票

                 •     www.ideaboard.com

                 •     Google Doc




Thursday, May 17, 12                       30
项目交付




Thursday, May 17, 12   31
谢谢



Thursday, May 17, 12        32
Distributed Models



Thursday, May 17, 12                        33

分布式开发