您的位置:首页 > 业界新闻

【TUP第11期】腾讯王晶:互联网研发要诀之一“快”

2011-09-23 23:02 190 查看
【CSDN报道】7月9日下午,CSDN TUP第十一期“架构师沙龙——互联网研发之道”在中国科学院计算技术研究所一层报告厅举行,本次活动邀请了业内研发实力很强的腾讯和豆瓣的嘉宾来分享互联网产品研发经验,业界超过300名技术管理者来到了现场。腾讯搜索运营部研发管理总监黎娟,腾讯R&D项目总监王晶,腾讯宠物客户端主程序、高级软件工程师黄朝兴,豆瓣网技术总监耿新跃,豆瓣网QA主管解彦博发表了精彩演讲。



腾讯R&D项目总监王晶

以下是腾讯R&D项目总监王晶的演讲实录(仅供参考):

大家好,我叫王晶,今天准备这个专题的时候就在想,大家对腾讯有很多想知道想了解的,希望让大家在今天下午能够有所收获,我们从腾讯某一方面的经验和案例及知识分享等方面,选择了一个专题——“快”。在现有互联网大的领域内:我们怎么做产品,如何做得快——这是我们今天的主题。

我现在是做项目管理的事情,之前我曾经参加两个项目一个是网页搜索,搜索引擎,现在做电脑管家这两个项目。今天给大家从四个方面进行阐述,一方面我会讲产品快,怎么做才能让产品更快交付给用户;第二快跟大家一起分享运营如何建立运营快速反馈,支撑这种“快”我们需要有技术上创新,最后一点支撑这种快我们需要有研发管理方面的保障。所以今天我会跟大家在产品运营,技术以及管理四个方面一起探讨一下如何让我们产品做得快。

现在互联网这个行业快已经被公认是一种互联网生存法则,为什么互联网需要快呢?我想第一个因素是海量用户需求,我们现在面临这个行业腾讯很多产品是过亿级用户,这些用户到底是如何构成的,他们想什么,他们需要怎样的服务,他们对我们服务有怎样的评价,这些用户需要我们提供怎么样一种,给他传递一种什么信息,我们需要从用户获取什么反馈回来,这些海量用户需求决定我们需要更快的完成我们的版本。

第二变化就是行业快速发展,大家回首过去五年,互联网行业风声水起像Facebook这样公司的成长,短短五年时间对于互联网,对于我们这个行业已经变化足够快,未来五年是什么样大家谁都不知道,应对这种快速行业变化,我们需要用一个快基本意识思维引导我们产品发展。另外一个就是竞争对手变化,你知道现在很难想象出腾讯有一款产品三个月没有发布一款新版本新特性是什么样的情况,可能用户会另有选择,因为我们竞争对手非常多,我们需要在落后的时候用更快的步伐追赶领先者,我们在领先的时候需要一直保持我们优势,我们会跟竞争对手一起逐步给用户带来更大的价值,所以这种压力会带给我们以更快的速度向前发展。

另外一个非常重要因素就是我们公司或者腾讯产品自身发展需要。因为大家都知道我之前是在通信行业做很多年,互联网行业跟通信行业软件开发本质不同,我们做的一个产品所处行业是一种探索性行业,永远不知道未来一款产品是什么样。所以需要尽快的提升产品发布节奏,交付给用户使用,以这种方式探索未来这个产品发展途径从这个角度来说,从我们自身发展产品发展需要,我们需要更快能够走得更好。

在大家观念里面互联网产品多长时间发布一个版本?三个月?一个月?互联网产品目前认为一周或者两周这种方式已经很好,我们每周都有新特性给用户使用,总而言之三五个月发布一个版本对这个行业是不可接受的。那么我们看腾讯一款产品牧场,我们这个产品一周发布一个版本。一周23次发布,所以QQ农场可以说是腾讯所有产品中间对快,执行最彻底。我们一周发布23次,我们是怎么做到的?我这边给大家分享两点,这两点对于能够达到这种能力发布至关重要,第一是以特性为中心,随做随发的能力,首先,所有这种规划都是按照特性来,我们会把特性在每周做出一个特性,做一个排期,这个图上面看一下我们这些墙,是我们空间农牧场产品管理方式,大家发现有什么不同?黄色的小条就是一个特性,有没有什么不同?大家看12345,表示一周五天实际上从需求,规划开始我们以特性为单位,到需求的开发,最重要是到需求测试和发布,特性完成需求开发以后,我们是独立测试的,每个特性我们会做测试,测试完了以后就发布,在空间农牧场项目里面,这样一种方式,以特性为中心,围绕特性只要我们这个特性完成开发我们就尽快发布上线这个是一个非常重要的因素,只是一个意识。

可能有朋友会问这样值得吗?我们发得这么快,这是做互联网产品的一种思路,如果我们能把这个产品尽快交付给用户,我们就要这么做有几个理由,首先第一个站在用户角度来说,如果让用户一下子接受五到六个新特性会怎么样?他可能会眼花心乱,可能没有办法选择想用哪个特性;第二是互联网很重要的一个手段,我们需要区别每个特性给这个产品带来的价值,最好的方式就是做了一个特性,发出去,通过用户反馈和数据分析会看这个特性给用户带来多少价值,把所有放在一起,也许这个产品,使用流量增长了,但是搞不清楚是因为哪个特性给产品带来的提升;第三点也是围绕这种特性给用户带来服务,我们特性为什么会激增需要前后对比,在特性发布之前和之后做一个对比,如果特性足够小、足够完整我们是希望能把这个特性逐步交到用户手中,完成对特性规划阶段种种假设,验证我们的想法。所以尽快把这个特性交给用户手里,始终指导我们原则,有一个非常重要需要注意的是我们跑得很快,但是能不能走得稳,有很多人对敏捷理解,包括腾讯内部,因为腾讯整个公司有这么多产品,每个团队,产品研发团队对敏捷深入理解程度也不一样,刚开始会有很多团队说你做得快,但是实际上敏捷追求快,但是远远不是只有快一个定义,我们还需要跑得更稳。

农牧场这个团队怎么在需要快速发布基础上组织研发过程,大家看这个图,我简单介绍一下,这个图大家对敏捷项目管理比较熟悉的举手。在确定一周做一次版本迭代,会做一个迭代需求规划,再最后完成的时候会进行测试和用户体验,需要的话我们进行发布,刚开始在一周,我们迭代在在一周之前把这些特性规划好,大家看一下QQ空间和农牧场,仍然是以一周,中间部分会开发,当这个特性完成开发以后我们会进入测试阶段,测试完成向外网发布。所以整个过程看起来还是每周做一个完整研发周期规划,但是在每一周中间,有能力情况下我们会进行测试这是一个很大的不同。

刚才说了两点,一个是以特性为中心,我们所有资源基本建设项目管理的过程关注是以特性为中心,第二我们说到迭代管理方式,其实很简单但是似乎很难做到。这里面其实团队QQ空间是非常成熟的团队,很多团队经历演变过程中会遇到很多困难,比较突出优四点,想做到快是知易行难的过程,第一点是解除耦合,有三方面第一是功能,一周想快速发布,很重要一个原因互相之间减少功能依赖,比如说我们要做一些功能,依赖于登录验证这样一个特性会怎么样?所有特性会等功能验证完成以后才能做,所以我们在这种情况下,安排一周迭代的时候需要从功能把耦合解除掉。我们能做得更快,在于每一个小特性的两三个开发人员能够互相之间并行走。

第二耦合来自技术上的,比如说我们在一个团队十个人有很多不同特性,但是我们都是在一个版本,一个代码做开发。功能可能拆开从技术上你们互相很可能有代码影响,或者存在这种风险,两个不同小团队做两个技术,技术架构没有办法把这两个特性分开,后面会遇到很多问题,比如说测试会问你,有一个特性没有做完先发了,会不会影响代码呢,在技术上我们快速发布版本要求,对于技术架构是有要求,是不是能把特性拆更小,技术架构是不是能够支持特性与特性之间的耦合。

第三是提升自动化发布,缩小成本。我们快速迭代开发大家还会有疑问,之前功能怎么办?难道让测试一个一个验证,不验证行不行呢,不验证肯定是不行的,对新功能仍然存在对之前测试有影响可能性,一块是自动化测试,自动化测试这里面,QQ空间团队重要功能每次发布之前会用自动化方式回归,手工会做新特性功能,新特性完成测试以后,仍然会把新特性作为自动化一部分,在我们下一次迭代一个研发周期开始作为下一次自动化回归功能级。

第四点很难做到一点就是团队,需要快速配合,大家可以看到我们研发过程是什么样,从QQ空间农场一个特性规划到开发到发布还是建立很多过程,特性规划,我们有交互设计,界面设计完了以后我们会做技术方案就是评审,最后才会做到开发,开发完了发布,大家可以看到其实整个软件研发过程还是很完整的,并没有在其中剪掉哪个环节,怎么安排才能让团队在一周短时间内做得更快,交付得更多呢?

注意到下面这个图,红色部分是迭代开发,这一周交付特性并不是在这一周才开始,工程师完成设计,实际上我们经历了很长时间,最重要保障迭代这一周有成型东西启动开发,我们可能有若干特性很早之前进行特性规划,评审,完成UI,UE设计,以及技术方案设计,走到我们迭代开发过程,有很多特性已经能够直接做。对于质量保障是有这个过程,如何统筹规划好这个过程避免浪费这个里面有很多文章可做。说到自动化也给大家展示一下。农场几个重要部分开发人员开发,测试人员完成部署,功能测试完成不会直接发布到外网,我们会验证一下跟外网环境非常接近环境有没有问题,一发不验证完以后才会外网进行发布,整个过程看一下还是很复杂的,其中有很多环节,很多人力进行参与,所以说自动化系统变得非常重要,测试人员可以通过自动化系统,到我们版本进行自己编译部署,可以进行体验,测试人员对功能测试,在测试完成可以一键到我们预发布系统到最后正式发布系统也是一键搞定,自动化会提高我们效率。

这是我们自动化发布一个界面,整个特性20分钟,这个过程是需要我们自动化发挥很大作用的,刚才说到挑战里面最后关于团队沟通和协作,我们怎么做呢,了解敏捷大家不陌生,我们在这个团队实施很多敏捷实践,我们进行快速沟通,另外还有一个在腾讯内部有一个项目管理支撑平台,叫TAPD,所以研发过程项目管理都是在这个平台上完成,这个平台是基于敏捷思想设计,前面我们说到这一部分如何让产品发布变得更快,不光光产品特性发布到用户手上,还讲一个问题目的是什么,我们为什么要发这么快,我们希望能够快速得到用户反馈,在如何做到快这个问题上,第二要解决就是迅速得到用户反馈。

有几个方面是很重要,第一是多样用户反馈渠道,腾讯在反馈渠道建立比较多的渠道和方式目的是覆盖更多用户群,客服中心,用户调研,我们会请到产品设计之初我们会请一部分热心网友通过报名方式到我们公司进行一些问卷调查,我们产品发布以后,开发完成以后会有一个体验版也会邀请用户到我们公司做,直接跟我们面对面反映问题,另外内部腾讯现在有一万多人,内部员工经常会使用互联网产品,内部测试阶段,是我们重要特性外发之前,外发之后都需要做的事情,内部征求反馈和体验意见。

此外还有官方博客,一些热心产品用户会在官方博客上反映他们的问题,并且我们建议他们的好的点子。support平台我们在收集用户反馈方面重要平台,还有外团QQ群,这部分用户应该说相对稳定,这部分用户会长期坚持使用我们产品,这部分用户会得到我们相应最新版本体验版给到这部分用户对我们进行体验反馈建议和意见。

所以在快速获得用户反馈,第一事情就是建立各式各样反馈渠道,用户反馈收集上来了,我们怎么处理?说一个例子,大家知道QQMail是一个QQ明星产品,成功来源于重视用户反馈,我款产品发布给用户以后,除了提高用户声音,产品经理技术人员需要从用户那里得到反馈,强化跟用户沟通和理解,在QQmail有一个1000和10在这个团队曾经跟产品经理有一个硬性要求,每个产品经理每个月要看一千篇用户的反馈意见,用户的帖子,这个是对产品经理要求,每个用要收集100篇各个论坛用户能够反馈的问题,每个月要注意十个用户的CE,用户给我们意见以后我们要跟用户沟通,从用户了解他的使用场景,把这些意见归总到我们产品特性上来,每个产品要做十个这样的事情,有了这种良好的用户反馈渠道,加上用户反馈重视程度,就有理由把这个产品做好。

但是这种用户反馈还是不够及时,有一个很重要手段就是数据运营,举一个例子,是我们QQ会员,引导用户开通付费QQ会员页面,这是我们产品经理认为比较更合适一种引导用户一种页面,但是这两个页面大家看得清楚区别吗?很难发现这两个的优劣,产品经理很难选择,所以我们只能让用户回答,我们做了四个版本,每个版本特性包括收集用户的在付费和预付费的比例,我们会跟老版本做对比,我们一共四个版本,每个版本对比数据很清楚表示,右侧最后一个版本得分比较高,所以这个产品,我们在互联网很多应用里面,用户交付设计,做了一个功能对这个产品质量有没有影响是没有办法通过传统方式解决,没有办法在这个产品推出之前花一个月时间做调研,很可能信息不准确。而且这样速度太慢了,我们需要把特性交给用户同时从数据发现一些问题,决定我们产品经理设计是好还是坏。

这里面我们在想一想,互联网现在这种情况不是传统行业比如说一个产品经理,规划一个新特性,如果是传统方式的话,这个新特性在这个用户使用过程中间会有哪些问题,用户是不是可以接受,作为一个经验丰富产品经理是可以预估,但是互联网有一个问题它有群体效益,当这个特性特别在我们SNS这种背景下,这个游戏或者这个功能发出去以后也许不是你想要的,但是你的朋友会去用,他们会带动你使用这个功能,我们现在这种互联网用户群体效应使得我们在这个产品设计上更难决策,因此快速把版本发出去是非常做产品决策这种手段是越来越重要。

还有包括这个之前是我们之前从我们亲友,QQ亲友7月21版本优化我们登录页面,我们整个成功率提供25到30%,这些数据没有之前是没有办法预估用户行为对你的产品做决策的。

我们讲到数据运营,说了三点能够建立一个多渠道用户反馈渠道,第二是说我们要拿这种数据说话,用数据体现用户行为,第三是说我们怎么样能够尽快像QQmail一样注重用户反馈,做到这些就够了吗?像客户端怎么办,客户端这种产品我们能够快速发布吗?所以快我们仍然需要有技术创新的,其中主要目的还是因为我们需要尽快把这些特性交给用户的手中,这部分也是我们今天给大家带来第二个专题,QQ宠物新架构,是一种把客户端Web技术,我们看一下效果。

之前QQ宠物新架构16周发一个版本,四个月。在应用web化以后两周发布一个版本,注册活跃用户从一千万变成三千万,这部分技术架构我不西讲,可以听我们下一位演讲。

最后想提一些研发手段,大家知道在整个软件开发是一个复杂的工程,我们谈到前面三点,这种研发协调,研发怎么做出来才能让快来得更有保障。第一是敏捷在腾讯的推广,腾讯在06年有了敏捷,在QQmail这个团队,腾讯推广敏捷的方式是自下而上的,目前在腾讯大概有两千个以上项目都是应用敏捷理念,做一些实践,很多团队项目不一定敏捷做得好但是坚持敏捷价值观,推进敏捷道路上腾讯走的是一种净化道路很多人谈敏捷的转型,腾讯更愿意讲敏捷是一种净化在现有体系基础上不断的演进,让敏捷价值观落地在一个一个实践里面去。

所以我们在腾讯推进敏捷是一种持续运营思路去做的,有三方面结合,我们在单个团队提供敏捷的coach,多个团队做一些敏捷训练营,公司级敏捷宣传,宣导培训以及文化建设,制度奖励机制方面推动公司级敏捷,这里敏捷实际上已经成为腾讯经营一部分,当然很多团队可能做得还不够好,意识已经扎根敏捷里面去,敏捷是一种时尚,我们更希望敏捷是一种健康的生活方式,并不只是快。在研发这块如果想走得块,还有一个很重要,使持续集成,快速体验版本,我们现在做集成事情就是说开发人员把自己代码会自动编译,自动化测试,静态代码检查,最后做自动化部署,部署到一个体验平台上,让我们产品快速体验到这款新的版本和产品,这是我们在应用一款平台,做很多项目集成,大家可以看到通过持续集成完成产品把关下载,产品经理很快可以拿到产品验证。

最后,也是很重要一块,就是灰度发布,大家可能知道通信行业软件为什么发布的时候会格外小心,版本周期格外长,有一个因素是因为三个月做很多特性,这些特性放到一起会给我们版本带来风险,所以说敏捷,在传统行业不敢快速把一个版本给用户,我们会做很多评审,保障这个环节不出问题,在互联网能不能这样,这样是不是太慢了,我们需要有新的发布观点和能力就是灰度发布,就是选一部分用户先用起来,先把新的产品,特性尝试,通过对这部分用户反馈,带来数据上的分析得到我们比如说产品功能好与坏的评价,确定我们下一步这个产品向哪个方向发展,灰度发布这里简单介绍一下,目前用得比较多是从这四个方面做,灰度对象可以分用户属性,我们任何一个产品会说活跃度忠实用户,包括我们QQ空间,黄钻等级,我们会确定一个范围,第二是号码客户段,这是随机选取,这个分地域。

有两种方式第一种是按特性灰度,有些用户可能对我们新特性可以使用两个,有些只能使用一个,我们让每个特性确定一个灰度比例,第二是机器和集群,从服务器里面挑一些服务器做灰度,观察通过我们监控曲线观察我们版本质量是否有问题,如果有问题会迅速恢复。灰度发布关键,灰度发布是一种手段,版本尽快让一小部分用户用起来,达到产品自我评价目的,有两个关键,灰度发布发下去以后会对系统造成哪些影响,这方面必须要做,否则我们灰度失去意义,灰度发布有一些波动会对我们质量版本造成影响,我们及时回归,把版本质量风险控制住,所以灰度发布互联网公司已经用得比较广泛了,在客户端版本里面PS架构产品里面灰度发布是比较容易做到这件事情,但是客户端灰色发布更加复杂,如果我们软件产品快速交付给用户灰度发布能力是必须具备的,所以大家可以看到我们产品如果想作到快,方方面面的从产品设计,产品迭代,到用户反馈,我们技术战略支持能力,和我们研发管理是成体系的,如果说在任何一个环境没有做到的话,我们可能没有办法让我们团队跑得够快,如果跑给够快,但是这个产品质量会非常糟糕。

这是我今天给大家的内容谢谢大家。

【特别提示:关于本次活动的更详细内容和视频,以及部分PPT会在稍晚些时候提供,请持续关注CSDN TUP频道和首页相关内容】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: