2020 年 3 月 9 日,腾讯公司正式对外发布了《腾讯研发大数据报告》。在这份报告中,腾讯披露了2019 年公司在产品及技术研发方面的重要数据,这也是腾讯自技术委员会成立以来第一次主动对外披露研发相关大数据,是腾讯对自身技术研发层面的一次阶段性总结。
该报告是由腾讯旗下敏捷研发协作平台TAPD、腾讯代码托管平台工蜂与腾讯集成交付系统腾讯CI联合出品,这三款平台支撑了腾讯几乎全量业务的研发全流程。
研发人员占比66%,新增 12.9 亿行代码
报告显示,腾讯在研发投入上持续加码。
2019 年,腾讯研发人员占比高达 66%,在中国诸多科技公司中位居前列。同时,腾讯 2019 年新增研发项目超过 3500 个——随着腾讯全面拥抱产业互联网的战略推进, 2019 年 To B 项目数量比2018 年增长了 77%。
在代码数量上,2019 年腾讯新增代码行数高达 12.9 亿,相比 2018 年增长了 30%。
在研发效能方面,腾讯同样表现亮眼。
自2006 年起,腾讯就开始推动研发模式的敏捷进化,在长期的敏捷研发实践中,腾讯开发人员构建出了腾讯敏捷协作平台 TAPD 和腾讯工蜂这两大工具,可实现对用户需求的快速响应。
TAPD 提供产品研发全生命周期解决方案,支持敏捷需求规划、迭代计划跟踪、测试与质量保证、持续构建交付、研发效能度量及研发知识沉淀等全过程研发实践,助力研发团队敏捷高效协作与高质量交付。2017年TAPD对外开放,腾讯将宝贵的研发模式、实践及工具对外输出,助力企业提升研发效能,目前已服务数10万家企业。
而腾讯工蜂是腾讯历时4 年打造的分布式企业代码管理协作解决方案。具备代码检视、分支管理、会话式开发、集成定制、审查和监控等企业级研发管理系统特性,助力企业贯穿研发流程,让开发和研发管理更加敏捷高效——值得一提的是,与腾讯 TAPD 一样,腾讯工蜂也已经对外开放使用。
数据显示,腾讯60% 的项目团队规模在 20 人以下,47.8%的项目迭代周期在 1 周之内,平均每天完成用户需求3802 个,而 28% 的需求可以在1 天内得到响应。另外在 Bug 处理方面,46% 的 Bug 在 1 天内得到解决,82% 的 Bug 在 1 周内得到解决。
在研发的持续交付方面,腾讯平均每周构建次数达80 万次,项目年均产物大小 600G,年均交付次数3000 次,推动修复代码 Bug 和安全漏洞 14 万个,编译加速累计节省编译耗时 1.9 个万小时。
随着腾讯云计算和大数据相关业务的迅速发展,Go 语言首次跻身腾讯编程语言排名TOP5;整个 2019 年,腾讯内部使用最多的五种编程语言分别是:C++、JavaScript、Go、Java、Python。
在技术管理人员的研发参与度上,腾讯保持着强大的活力。腾讯74% 的技术 Leader 仍在持续输出代码,2019全年,平均每人输出代码 3 万行,参与 140 次代码评审;38%的 12 级及以上技术专家潜心编码,平均每人输出代码 3.3 万行,参与 155 次代码评审。
开放协作,腾讯技术大变身
对于腾讯来说,上述成果的取得,离不开腾讯2019 年对优化技术研发环境、提升研发效能的重视。
2019 年 1 月 4 日,腾讯技术委员会正式成立,由腾讯高级执行副总裁、技术工程事业群总裁卢山和腾讯高级执行副总裁、云与智慧产业事业群总裁汤道生两名腾讯总办成员亲自牵头,下设“开源协同” 和 “自研上云” 两个项目组和对外开源管理办公室,以此来促进内部代码的开放共享和协同共建,在内部开源基础上加码对外开源,并推动业务在云上全面整合。
在开源协同理念提出之后,腾讯从各个事业群梳理出了一些相对基础性的技术版块率先进行了开源协同的实践,其中腾讯CI就是一个较为典型的例子。腾讯CI Oteam是腾讯内部的一个跨团队虚拟组织,由IEG(互动娱乐事业群)的蓝鲸团队牵头,组织相关团队和个人共同进行腾讯统一的持续集成交付系统——腾讯CI的开发建设及运营,旨在减少重复劳动、提升研发效能。
经过一年时间,腾讯在内部的代码开放和技术协同方面已经取得一定进展。
截止目前,腾讯CI的Oteam中,共有来自全腾讯的303名开发人员提交了自己开发的插件,用于对接各个事业群在CI流程中会用到的内部系统。
报告数据也显示,在技术协同方面,腾讯内部参与最多跨团队研发项目的人,为24 个协作项目贡献了力量;涉及部门最多的研发协作项目,凝聚了 12 个部门的智慧;跨团队协作参与度最高的部门,加入了 113 个研发协作项目的建设。
在过去一年,通过开源协同,腾讯各个事业群最底层和共性的技术能力进行梳理和拉通,建立筛选机制,推动优质开源协同项目对外开源。改变了原来“自下而上”纯自发开源的路径,采取“自下而上”与“自上而下”相结合,自发与自觉相结合的开源新模式。
在内部开源方面,腾讯内部整体代码开源率由2019 年年初的 20% 增长至年底的 70%,代码协同共建已成为一种趋势。其中,2019 年腾讯内部新增协同代码库超过 4400个,Q4 较 Q1 增长了 56.3%。其中包含 53 个公司内部重点开源项目(涉及 400 多个代码库)在进行协同。
在外部开源方面,截至2019 年年底,腾讯在 Github 自主开源项目数为 92 个,贡献者超过1000 个,获得 Star 数超过 27 万,在 Github 全球公司贡献榜上的排名稳居前十。
2019年全年,腾讯开源超过22个项目,包括 TubeMQ 亿万级分布式消息中间件、TencentOS tiny 自研轻量级物联网操作系统、TKE 腾讯云容器服务和TBase 企业级分布式 HTTP 数据库管理系统都在2019年接连开源。
2019年,腾讯和开源社区的合作也发展到了新的阶段,Angel项目完成了从单一的模型训练平台到全栈机器学习平台的技术演进,成功从LF AI基金会毕业;TARS项目成为开源社区仅有支持五种开发语言并有完善服务治理和运营平台的微服务开发框架。此外,腾讯还作为创始会员,加入了LF Edge基金会,和业界合作伙伴一起推动边缘计算软硬件开源技术的发展。
开源协同,腾讯新代码文化形成
2019 年,腾讯不仅通过开源协同实现了技术研发环境的优化,更是形成了一种全新的代码文化。
实际上,腾讯代码文化的诞生,可以回溯到2013 年;当时,在公司 “开放” 战略升级的背景下,腾讯提出了代码的 “开放、复用和合力开发”。以往腾讯的开源文化更多是自下而上的,而在2019 年腾讯技术委员会成立后,自上而下的开源协同机制建立,以“开源、协同、云上生长”为核心的腾讯新代码文化快速成长。
2019 年 1 月,在腾讯技术委员会的指导下,腾讯技术社区 “码客”和“技术图谱”上线。在近一年的时间内,每个月有超过 80% 的技术人员访问码客社区和技术图谱进行技术讨论和协同,社区上提问数量近 3000 个,回答与评论达 15 万次,94% 的技术难题都得到了回复。
2019 年 11 月 11 日,腾讯在成立 21 周年之际宣布企业文化 3.0,其中将 “合作” 升级为“协作”。这一改变实际上具有明确的价值导向,就是要“开放协同,持续进化”——从某种意义上,这也充分契合了腾讯内部的技术和代码文化:对内要大家放大格局、打开边界,以开源的心态与各组织协同,用符合互联网思维的方法和工具进行协作。
值得一提的是,腾讯内部的技术文化,也充分体现在腾讯对2020 年新冠疫情的抗击之中。
报告显示,在2020年新冠肺炎疫情期间,腾讯迅速出击,在智慧教育、智慧医疗、远程办公、智慧政务等各个领域推出相应服务,腾讯会议、企业微信、TAPD、腾讯工蜂、腾讯乐享等多款To B产品全面升级功能、免费开放,支撑抗击新冠肺炎疫情工作。
春节期间,腾讯有8000多名研发人员通过远程研发协作方式投入抗疫战斗,为了给社会提供更好的服务,各领域产品及时响应、快速迭代,共提交代码14.7万次,52% 的需求在 1 小时内就能得到响应。各领域产品全力抗疫的背后,是腾讯研发能力多年的沉淀,也是腾讯新代码文化的外在彰显。
而在未来,腾讯希望打造出更加优秀的代码文化。正如卢山此前在腾讯内部所言:
希望今后的新员工会觉得,在腾讯做开发是很幸福的事情,能学到很多东西,能看到很多优秀的代码。人们不仅谈论硅谷文化,也谈论我们中国开发人员的代码文化。