低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

腾讯研发总监揭秘腾讯敏捷研发引擎之谜(下)

2015 年 8 月 18 日

编者按

“大牛 V 课堂”是 Geekbang 核心栏目,通过邀约专业领域内的互联网顶级大牛分享专业知识和见解,让你了解专业领域内含金量最高的知识。关注geekbang01 公众号,遇见下一位大牛。

本文根据腾讯研发平台总监袁琳在 ArchSummit 深圳 2015 大会的演讲整理而成,略有修改,感兴趣的读者可以关注 10 月份 QCon 上海 2015 大会的精彩内容。全文的上半部分点击这里

正文

腾讯敏捷研发模式与TAPD 平台的交互

刚才介绍了TAPD 平台产品的情况,腾讯不同的产品研发过程有哪些特色,TAPD 平台如何支撑不同产品研发过程的差异化。腾讯敏捷研发模式有三种,迭代模式、激素模式和大象模式。

首先是迭代模型,就是以Scrum 管理实践+XP 工程实践加腾讯特色实践。迭代模型发布一般有稳定的迭代节奏和发布周期,发布周期一般是一到四周,接下来我以一个案例给大家介绍一下研发团队是如何通过TAPD 平台进行项目迭代过程的管理。

这个案例的产品经理会把收集到来源于各个渠道的用户的反馈、产品的需求统一纳入到TAPD 的产品需求中进行管理,可以看作是Scrum 的Backlog,做到产品需求的可跟踪、可追溯。同时产品经理对这些需求进行结构化管理,包括需求的分类、需求的拆解,会把大力度需求尽力细化,细化成最小的可独立的、可交付的需求,产品经理也会进行屏补和定义以及定义优先级。

我们这里是鼓励团队和聚焦高用户价值需求,把高用户价值需求排序之后进行迭代。通过Backlog 分类可以看到整个产品的管理架构,和不同模块和不同版本下面的需求进度。

项目经理包括开发团队在迭代开始的时候会做IPM 会议,这个IPM 会议是团队所有成员包括项目经理、产品经理、开发、设计所有同事都参加的,会在TAPD 平台建立迭代计划,建立迭代计划最主要的是两个工作,一是确定迭代目标,二是确定迭代范围,产品经理就会把Backlog 中已经规划的比较清晰的产品需求纳入到迭代中,跟团队成员进行讲解。

同时这个项目经理也会引导团队成员开发模式,评估开发需求和开发任务的规模,然后开发团队和开发成员主动认领工作需求。通过敏捷迭代小步快跑就可以帮助团队尽早的交付高用户价值的需求,同时帮助开发团队去建立稳定的开发节奏。

研发团队可以通过 Story wall 就是可视化的迭代跟踪进展,可以看到产品不同需求在不同状态下的分布,这里可以看到产品需求在哪个状态下有些阻碍,这个时候项目经理会做项目引导和推动。

同时通过平台可以看到成员每一天的工作计划和项目任务的状态,可以了解到每个成员的工作状态和压力,从而做一些引导和资源的重新规划。同时通过 TAPD 平台也可以看到迭代的技术风险,可以看到整个迭代预估的工作进度与实际完成的工作进度的差异。

同时TAPD 平台也可以跟腾讯代码管理的系统进行有效集成,在腾讯代码是统一管理的,TAPD 上每一次需求和修改包括缺陷的修改都可以跟代码的变更进行关联,从而做到代码变更的可追溯。

同时从TAPD 平台上也可以看到每一次的需求的实现,开发提交了哪些代码变更,具体的代码差异有哪些,同时通过TAPD 平台也可以去统计项目代码的变化,在线做Code Review,可以针对某一个需求或某一个大的发起 Code Review 。腾讯内部其实没有统一的平台,我们是鼓励各个系统自建系统,从而做一个应用接入到 TAPD 平台。

比如说持续集成相关联的自动化测试,自动化测试之后发现一些BUG,可以通过TAPD 平台直接介入到TVD 的缺陷池推动测试人员快速跟进。通过持续集成、持续化测试包括代码。

我们公司对于外部运营类的产品,其实它的发布是比较轻量的,刚刚讲的需求关联到代码,一个版本交付的时候,因为需求关联到代码,交付的时候我们能够统计到这个迭代所交付的需求有哪些代码文件发生变更,我们就可以做到代码文件的同步,直接同步到线上,完成一次同步发布。

通过持续化集成、自动发布以及代码的code review 等等,推动研发过程的自动化,从而确保研发过程的高效。同时我们提供了强大的缺陷流的自定义,从而支持测试团队的测试质量分析、测试度量等等。

同时腾讯内部鼓励用户参与,腾讯每一款产品正式对外发布之前都会在公司内做公司内的灰度发布,发布之后会邀请腾讯的所有研发同事进行内测体验,把体验的用户反馈建议都提交到TAPD 的CE 平台,就可以帮助产品经理了解用户的反馈,倾听用户的声音,这里就是产品经理和用户之间双向互动的过程。

产品经理把用户提交的高价值的用户建议反馈纳入到整个产品研发的过程中,直接转为需求或者转为BUG,从而推动用户建议、用户反馈,快速跟进。同时,用户提到这些反馈所关联的需求缺陷实现之后也会自动通知到所提建议的用户。

整个研发团队会通过Wiki 做研发过程的知识沉淀包括研发流程、研发过程中的一些文档等等,帮助了整个用户团队知识的有效传承。采用这种迭代的团队像微信、QQ 空间、腾讯视频都是采用这样一个研发的过程。在腾讯内部这种迭代模型还有一些演变,刚才讲的是一次迭代发布,还有多次迭代发布的,比如天天飞车每周一迭代,四周一次发布。

还有迭代模式的多样性,比如长短线的并行,对于建立短线版本快速的去实现可快速交付的高用户价值的业务需求,长线版本就是开发周期比较长的技术重构的需求,包括业务架构快速交付,又能保证技术平台比较稳健的演变。

另外还有主版本和运营版本的运行,是对PC 客户端的游戏,一些游戏上线之后会有些运营版本,运营版本是解决线上的BUG 和线上用户反馈,主版本会做游戏核心玩法和游戏道具系统的一些产品的严禁。还有Feature Team 的并行,我们会把大的团队拆分成小的Feature Team,让每个Feature Team 保持自己独立的灵活性,每个Feature Team 都有自己独立的迭代,迭代之后形成主版本进行产品交付。

接下来介绍Feature Team 的运营,一个案例就是微信安卓,也给大家介绍一下微信安卓的产品研发过程的演变过程以及TAPD 平台对微信产品研发过程的支撑。在微信的1.0 时期,大概是在2010 年到2011 年,整个微信安卓研发团队的规模比较小,大概十个人左右,当时是产品的初创期,产品的创新非常活跃,鼓励团队成员领先提出创意,研发过程的需求变化是非常快的,早上提出需求,当天下午或第二天经过测试尝试包括PK 需求就变了。

需求不稳定,所以在这个过程中更多是面对面的交流,以及通过Excel 进行研发的需求和项目计划的跟踪,通过这种方式来进行管理,当时还能扛得住。

到了2012 年、2013 年随着微信产品的增长,微信团队的规模增长,通过iTS,通过邮件、通过面对面的沟通已经不能满足研发过程中的沟通,包括一些研发流程的需要,往往会出现需求遗漏包括需求变更之后没有及时的更新,需求传递过程中出现了一些偏差这样的问题。

同时,通过Excel 来管理研发过程和项目计划又不能保证整个研发团队项目目标的一致和项目进度的透明,他们就开始采用TAPD 做研发过程和项目管理。

通过TAPD 的Backlog 管理需求,包括用户的反馈,包括产品经理规划的需求和老板需求,比如张晓龙提的需求等等,做到需求的可跟踪和统一管理,包括全程可追溯,通过TAPD 建立了稳定的迭代计划,让整个迭代的进度在团队所有成员都进行透明。

到了2014 年随着微信团队规模的扩张,整个团队规模到百人,同时随着微信业务增长,腾讯会有不同的业务团队需要跟微信进行合作。就比如说e 支付,这时候就面临一个问题,因为业务需求变更的频繁导致微信研发周期不断延期,需求不可控,到研发后期业务团队还要变更需求,版本不断推迟交,包括因为团队的规模比较大,所以说很难保证团队步伐的协调一致,所以微信团队就把整个开发团队按照业务特性拆分了三个小的Feature Team,每个Team 拉分支,保证小团队的独立和快速灵活创新。

通过Feature Team,每个Feature Team 都会建立独立的迭代,包括TimeBox,然后FT 并行迭代,保持小团队独立的快速灵活,又能够按照微信团队整体的研发过程的统一。微信团队也从当时的两个月一个版本,目前提升到了一个月一次迭代、一次交付。 极速模型

在腾讯还有一种研发模型就是极速模型,主要是针对互联网的Web 运营,举个例子就是QQ 音乐的外部运营。QQ 音乐有些运营活动,比如说中秋节的活动,会把这一次运营活动作为独立的需求在TAPD 平台建立独立的版本进行跟踪和交付。

一般来说像运营活动这种需求是比较明确的,首先要做什么是比较明确的,交付时间点和上线时间点都是非常明确的,所以能做到非常快速的研发过程。这里每一个需求都会经历需求规划、需求的设计和需求的实现,最后到测试交付,都会形成这样一个过程,往往有时候早上提出来的需求,下午去实现,晚上就发布了。QQ 音乐的活动包括QQ 会员、QQ 形象运营类的业务都采用这种方式。这里面讲的也不涉及到程序集成测试。

腾讯内部还有一个研发模型是大象模型,针对比较大型的项目,超过百人的团队,采用实体的Feature Team,需要跨部门、跨地域的协作,交付周期大于两个月。

这里一个案例就是手机QQ,手机QQ 是一个超过1500 人的复杂的项目团队,手机QQ 是腾讯最核心的这样一个产品的平台性的产品,它会接入腾讯各种业务,比如说像QQ 会员的特权业务、QQ 支付等等,其实在腾讯内部它们都属于不同的部门来进行协作,每一个部门就会有一个Feature Team 跟手机QQ 的基础平台进行协作,也会采取代码拉分支进行独立的开发。

在这个过程中面临一些问题,比如说业务团队需求变更了,特别是每个业务团队总是想把自己的需求插入到QQ 上,这样更多的保持自己的产品曝光、盈利等等,每个业务团队对手Q 都有需求,都要插进来,手Q 也很苦恼,到底怎么控制这个需求,是不是允许这个需求变更。

所以首先在TAPD 平台建立了统一的迭代计划,可以看到手Q 的1600 人建立了统一的迭代计划管理,整个迭代周期也非常长,差不多三个月,这里设计到需求变更的控制,不透明,通过TAPD 建立了统一的目标让整个迭代计划在所有业务团队都透明,做到项目计划一致,同时在TAPD 建立了需求评审流程,所有的业务需求变更都要经历统一的需求评审的过程,才能够去实施。通过TAPD 平台也帮助手Q 团队做到了进一步透明和精细化的管理。

在腾讯内部还有一些研发模式,对于实验型的产品,属于探索型,我们怎么样保持团队的创新呢?我们提供了看板,研发过程一般比较灵活,研发过程规则非常弱,他们希望保持团队中的简单,所以我们提供了看板,能够非常轻量的、简单的记录工作,同时可视化展现工作的进展。

一个案例是处于预研期的游戏引擎,这里面很多相关技术都属于预研期,不稳定,经常会变更,他们通过看板做了工作记录。处于预研期的产品,随着产品的不断演进,产品规模扩大也许研发过程和配置自然升级到了轻量的项目管理,当团队规模扩大之后也可以根据团队的实际需要,相当于更严谨的流程配置。

在腾讯内部还有合作研发模式,就是代理游戏,代理游戏的开发商通过TAPD 和腾讯测试团队进行协作,把腾讯测试团队发现的BUG 提交给外部的开发商(合作伙伴),游戏开发的团队就可以快速解决问题。比较典型的案例是英雄联盟。同时搜狗百科也是通过问题跟踪管理方式去管理。

TAPD 云概念——连接、开放

刚才介绍的 TAPD 产品的情况以及 TAPD 平台如何支撑腾讯不同的以及相同的模式。随着腾讯“连接、开放、生态”的建设深入,在互联网 +、大众创新万众创业的驱使下,腾讯在全国多各城市布局了产业基地,启用了平台政策、场地政策、资金政策、人才政策的支持,帮助腾讯开放平台的合作伙伴进行成长。

腾讯多年的行业经验也积累了非常深厚的技术平台能力,腾讯致力于打造互联网研发、互联网生态圈,提供了一种基础能力,流量平台和变现渠道的支持,帮助互联网中小团队成长。可以看到腾讯开放平台的数据,目前注册开发者达到 500 万,应用宝日分发量达到 7600 万,累积减免开发者应缴费用超过 20 亿,2014 年开发者实收分成突破 100 亿,平台上企业市值和估值超过 200 亿。

TAPD 平台作为腾讯研发的引擎也会走出去,去连接合作伙伴,去支持腾讯开放平台的合作伙伴,提供敏捷研发的云服务,包含 TAPD 产品对外服务,同时会把腾讯研发和项目管理的案例、实践经验分享给腾讯的合作伙伴以及互联网的创业团队。

目前已经有京东、大众点评、同城旅游包括前海微众云海都在使用 TAPD 的云服务,同时腾讯开放平台的合作伙伴已经超过 60 家公司,腾讯代理游戏的开发商超过 120 万个游戏都在使用 TAPD 服务。也欢迎腾讯开放平台的合作伙伴以及互联网创业团队及企业,大家有兴趣的话都可以申请试用,或者会后可以跟我来进行交流。

中国有句古话“工欲善其事,必先利其器”,TAPD 平台是腾讯敏捷研发的引擎,也是腾讯敏捷研发的利器,我们也愿意把 TAPD 平台共享给腾讯开放平台的合作伙伴和互联网的创业团队,和互联网行业的朋友们共建共享敏捷生态,从而把 TAPD 打造成支持互联网创业团队敏捷研发的利器。

2015 年 8 月 18 日 07:244454
用户头像

发布了 501 篇内容, 共 215.1 次阅读, 收获喜欢 30 次。

关注

评论

发布
暂无评论
发现更多内容

PCB如何拼版

不脱发的程序猿

嵌入式 电路设计 硬件设计 4月日更 PCB打样

怎么画出专业的架构图?

秋天

架构师 架构·

机器学习(二):理解线性回归与梯度下降并做简单预测

caiyongji

机器学习

极客架构module 1 作业

Geek_649372

架构实战营

架构实战营-模块一作业

Sun

学生管理系统方案架构设计

俞嘉彬

为什么数据库字段要使用NOT NULL?

艾小仙

「架构实战营」课堂作业-G20210698010384

张亮

Scrum Patterns:每日Scrum(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

架构实战营——作业一:微信架构及学生管理架构

开拓纪

架构实战营 作业一

Wireshark数据包分析学习笔记Day25

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

作业1--微信的业务架构及学生管理系统

大可

脑机接口简史——假如这篇推送是你靠意念打开的

白洞计划

VUE2,基于vue-cli搭建创建vue项目

Chalk

Vue 前端 4月日更

模块1作业

段吉贵

架构实战营

基于二叉树实现Map

Silently9527

Java 二叉树 数据结构与算法

浅聊函数防抖与节流

HaiJun

JavaScript 前端 防抖 节流

关于微信架构

俞嘉彬

说人话

ES_her0

4月日更

模块一:课后作业

菲尼克斯

架构实战营

如何做Nginx安全日志分析可视化

运维研习社

nginx 4月日更 waf

go每日一库 [go-rate] 速率限制器

happlyfox

golang 学习 4月日更

脑机接口简史——假如这篇推送是你靠意念打开的

脑极体

架构实战营--模块一

永佳

架构实战营

starforce源码解读一:关键字partial

风翱

C# 源码阅读 4月日更 游戏框架

设计模式-六大设计原则

U+2647

设计模式 设计原则 4月日更

重磅官宣:Nacos2.0发布,性能提升10倍

xcbeyond

Java 微服务 nacos 微服务发现 4月日更

Linux grep 命令

一个大红包

4月日更

机器学习和大数据的区别和联系

大数据技术指南

机器学习 大数据 4月日更

架构实战营 模块一作业

netspecial

架构实战营

编程好习惯之理清函数参数

顿晓

编程好习惯 4月日更

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

腾讯研发总监揭秘腾讯敏捷研发引擎之谜(下)-InfoQ