人均3.6万行代码,最爱C++:腾讯首度披露技术研发数据

作为国内科技巨头,腾讯的产品早已覆盖到了每个国人手中,不过这家公司对于自身技术一直比较「低调」。3 月 9 日,腾讯正式对外发布了《腾讯研发大数据报告》,首次披露了 2019 年公司在产品及技术研发方面的重要数据,这是腾讯自技术委员会成立以来第一次主动对外披露研发相关大数据。

让我们看看过去一年里,腾讯的工程师们是如何工作的。

研发人员占比 66%,新增 12.9 亿行代码

报告显示,腾讯在研发投入上持续加码。

2019 年,腾讯研发人员占比高达 66%,在中国诸多科技公司中位居前列。同时,腾讯2019 年新增研发项目超过 3500 个——随着腾讯全面拥抱产业互联网的战略推进,2019 年 To B 项目数量比 2018 年增长了 77%。

在代码数量上, 2019 年腾讯新增代码行数高达 12.9 亿 ,相比 2018 年增长了 30%。如果按照员工人数 5.5 万计算的话,每名研发人员每年贡献代码的数量是 3.6 万行。

在研发效能方面,腾讯同样表现亮眼。

自 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 基金会,和业界合作伙伴一起推动边缘计算软硬件开源技术的发展。

开源协同,腾讯的新代码文化

腾讯代码文化的诞生,可以回溯到 2013 年。在公司「开放」战略升级的背景下,腾讯提出了代码的「开放、复用和合力开发」。以往腾讯的开源文化更多是自下而上的,而在 2019 年腾讯技术委员会成立后,自上而下的开源协同机制建立,以「开源、协同、云上生长」为核心的腾讯新代码文化快速成长。

2019 年 1 月,在腾讯技术委员会的指导下,腾讯技术社区「码客」和「技术图谱」上线。在近一年的时间内,每个月有超过 80% 的技术人员访问码客社区和技术图谱进行技术讨论和协同,社区上提问数量近 3000 个,回答与评论达 15 万次,94% 的技术难题都得到了回复。

2019 年 11 月 11 日,腾讯在成立 21 周年之际宣布企业文化 3.0,其中将「合作」升级为「协作」。这一改变实际上具有明确的价值导向,就是要「开放协同,持续进化」——从某种意义上,这也充分契合了腾讯内部的技术和代码文化:对内要大家放大格局、打开边界,以开源的心态与各组织协同,用符合互联网思维的方法和工具进行协作。

在今年抗击新冠疫情的过程中,腾讯的技术文化也发挥了作用。

报告显示,在 2020 年新冠肺炎疫情期间,腾讯迅速出击,在智慧教育、智慧医疗、远程办公、智慧政务等各个领域推出相应服务,腾讯会议、企业微信、TAPD、腾讯工蜂、腾讯乐享等多款 To B 产品全面升级功能、免费开放,支撑抗击新冠肺炎疫情工作。

春节期间,腾讯有 8000 多名研发人员通过远程研发协作方式投入抗疫战斗,为了给社会提供更好的服务,各领域产品及时响应、快速迭代,共提交代码 14.7 万次,52% 的需求在 1 小时内就能得到响应。各领域产品全力抗疫的背后,是腾讯研发能力多年的沉淀,也是腾讯技术文化实力的展现。

在未来,腾讯希望打造出更加优秀的代码文化。