006年说起,那时Tencent规模已经开始膨胀,开发模式急需规范和标准 化,到底走IPD(集成产品开发)还是Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与ThoughtWorks 公司接触,逐渐将敏捷产品开发引入进来,并正式命名为TAPD(Tencent Agile Product Development)。 接 触是从一次3天15W的培训开始的,ThoughtWorks派来了一个4人讲师团队,三天的课程让人印象深刻,由此也诞生了Tencent 日后推行敏捷的第一批种子。后来一想,这次培训本身就是敏捷的一次真实案例,成员临时抽调,有来自北京,也有来自西安;课程设置应我们临时要求即时调整, 五天压缩成三天;讲解过程大量应用白纸、小纸条、图钉和白板等简单工具;关注学员的心情曲线等。这是一个拥抱变化的团队,从他们身上折射出沟通、简单、反 馈和勇气的敏捷价值观。 简言之,Tencent的TAPD是吸收了XP+SCRUM+FDD三者特点的并行迭代开发模式,涉及范畴包括敏捷项目管理和敏捷软件开发。 一、敏捷项目管理: (1)Iteration 软件开发模型经历了从瀑布到螺旋再到敏捷的过程,迭代不是敏捷独有的创造,无论在RUP还是在MSF中迭代都是其核心特性之一。而在Tencent特别强调的是并行迭代,即多个版本并行,最大程度发挥资源的效率。 Release(发布)可理解成当实现的产品Feature累积到一定用户价值时的正式发布,它是比Iteration更大的概念;Iteration(迭代)是在固定时间内开发Feature的过程,Release一般包括多次Iteration。 (2)TimeBox TimeBox(时间箱)反映了敏捷开发的节奏,即在固定时间内实现不固定特性的周期,抛开需求定义阶段,从设计-实现-测试到部署,在Tencent一般一至两周时间居多。 (3)Planning Game 对敏捷的一种常见误解是不要计划,其实在敏捷的体系中不仅强调计划,甚至区分Release计划、Iteration计划和Task计划等多种不同粒 度、不同时长的计划。Planning Game突出的是让用户代表参与,由用户代表评估UserStory/Feature的优先级,开发人员评估任务的开发时间,由用户代表+项目经理+核心 成员三方共同排序、组合,确定本次迭代计划需要实现的Feature List。在Tencent用户代表就是产品经理。 (4)IterationPlanningMeeting IterationPlanningMeeting就是Planning Game实现的管理形式,通过会议沟通达成。 (5)Stand-up Meeting 团队成员围成一圈,逐个说明3个问题:昨天做了什么,今天计划做什么,有没有困难并计划如何解决。对Team而言这是检查进度、快速调整非常有效的形式,在Tencent这已经成为大家每天早上的固定习惯。 (6)ShowCase 提交测试前由开发人员演示实现的功能,产品经理到场Review是否符合当初的设想,避免接近发布时才反馈。 (7)Retrospect 每个迭代结束后,项目经理组织或轮流组织所有Team成员共同回顾本次迭代的得与失,整理Well/LessWell,因为敏捷的团队是自我反省、持续调整的团队。 二、敏捷软件开发: (1)Story Card/Story Wall/Feature List StoryCard是XP中推荐的需求定义方法,要求符合Invest和Moscow原则;StoryWall则用于跟踪StoryCard的变化状 态,而FeatureList是Tencent一直沿用的需求表达形式,在Tencent的TAPD工具中已经实现了类似ThoughtWorks 的Mingle的StoryCard管理功能,对于需求跟踪而言这是不错的方法,一目了然。 (2)Refactoring 相信我们都听过这句话:好的代码不是设计出来的,而是重构出来的。 (3)TDD “测试驱动开发”在Tencent执行地并不太好,Tencent的产品以Web形式居多、业务逻辑相对简单,C++下的单元测试有些力不从心。相反自 动化测试在Tencent比较盛行,因为有测试部门专门的自动化测试Team在推动,而且链接的是正式生产环境,可以即时反映产品当前的状态。 (4)Pair Programming 理论上结对编程可以提高代码的质量,而且并不会降低开发效率,但Tencent的业务繁忙,资源上不允许两人结对。 (5)CI 持续集成可以降低发布前集成阶段的难度与成本,Tencent的自动化构建系统推行的比较早,覆盖了大多数产品,而且正在朝自动化构建-自动化测试-自动化发布三者协同的目标迈进。 (6)灰度发布 灰度发布是Tencent的又一创新,它将产品试用扩大到海量用户一端,在小范围及时吸取用户反馈,分析用户行为和喜好,持续修正自己产品的功能体验。 当然开发方法和流程确定了还远远不够,更难的是如何将它推动落地。首先Tencent组织开发了承载敏捷思想的TAPD项目管理工具,它类似 ThoughtWorks的Mingle;然后推出了敏捷能力模型,类似CMM成熟度模型一样对Team评级加以引导;同时还推出了敏捷指数排行榜形成竞 争,营造你追我赶的声势氛围。 文章写到这里行将结束,最后我们分析Tencent为什么选择Google和ThoughtWorks,其实是 由互联网行业本身的特点决定的,互联网的生存法则就是大鱼吃小鱼、快鱼吃慢鱼,谁转身的快、谁拥抱变化、谁更关注用户,谁才可以笑到最后。阿里巴巴董事局 主席马云说过:今天很残酷,明天更残酷,后天很美好,但绝大多数人都死在明天晚上,却见不到后天的太阳。
|