AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

为滴滴、头条量化研发效能和代码质量,他们有哪些秘籍?| TGO 专访

  • 2020-09-18
  • 本文字数:2576 字

    阅读完需:约 8 分钟

为滴滴、头条量化研发效能和代码质量,他们有哪些秘籍?| TGO 专访

对研发人员进行量化的绩效考核,是业界难题。


一种思路是通过提交次数(NOC,Number of Commits)或代码行数(LOC,Line of Commits),比如 GitHub 就是通过提交次数给项目的开发者排名,这种方式操作简单,但是只能衡量代码的数量,无法准确衡量代码价值,而且这个统计方式会被代码的空行、注释、个人习惯等干扰。


另一种思路是使用 OKR 等通用管理工具,对项目和业务结果进行考核,结果导向,缺点是考核方式不够精细、研发过程可见度低、高度依赖团队成员的主观判断。


2018 年,当时任微软亚洲研究院研究员的任晶磊、正在加州大学伯克利分校软件工程和应用机器攻读博士学位的殷和政等人希望通过提供深度代码分析系统来解决这个问题。他们在国际级软件工程会议 FSE 上共同发表一篇论文,这样写道:


“我们将代码开发价值分为结构价值和非结构价值两部分。结构价值反映某段代码因被其他代码调用而产生的价值;非结构价值指代码本身的影响,比如修复 bug、增加新功能、维护文档。”


对于结构性价值,他们以谷歌网页搜索的 PageRank 为灵感,创造了基于图的算法(graph-based algorithm)DevRank;对于非结构价值,他们基于自然语言处理(NLP)和机器学习(ML)技术,尝试自动化代码提交分类,来衡量代码提交影响。此外,他们训练了排序学习(L2R)模型,寻找结构性价值和非结构性价值的比例,来形成对代码开发价值的整体评分。


分析代码本身,而非相关过程

同一年,这个年轻的团队在开源社区中验证了思码逸产品原型的评估结果,随后创立思码逸 Merico


Merico 为客户提供代码分析和数据视图解决方案,给出关于工作量、代码模块性、注释覆盖度、测试覆盖度、代码复用度、团队鲁棒性、成员贡献、成员技能等数据。


TGO 鲲鹏会会员任晶磊表示:“开发团队量化绩效的痛点在于三点:1. 快,即效率;2. 好,即质量;3. 又快又好的根本,即人才。”


从这个观点出发,Merico 提供三个视角的报告:工程效率报告、工程质量报告、团队人才报告。


对于工程效率,Merico 优化了前面论文中提到的量化方法,提出以“开发当量”概念来反映代码工作量。开发当量的分析完成了部分编译过程,将源代码解析为抽象语法树,因此可以避免源代码级别的表层修改,如空行、注释、无用代码等噪音。


通过数据视图呈现,客户可以看到各个项目的新增开发当量、变化趋势、个人成员开发当量排行等。



至于工程质量报告,Merico 使用一些重要指标,包括代码复用、测试覆盖度、注释覆盖度、函数复杂度、代码质量。


代码复用,前面提到属于代码的结构价值,大幅降低新的开发工作的边际投入。Merico 系统中可以看到开发者代码被自身复用的情况、以及被团队或公司其他人复用的情况。


此外,很多公司也很关注代码的函数复杂度,比如有的公司规定,函数圈复杂度超过 10,一定要做 review,之后有必要的话一定要做重构和优化,否则一旦出现问题,调整修改的难度很大花费的成本非常高。


代码质量方面,目前,思码逸系统按照阻塞、严重、主要、次要、提示进行分层,不过,客户也可以自定义规则。任晶磊透露,真实开发中,很多公司会对常出现的问题做分门别类的归类,将自身规则导入系统,从而个性化跟踪自身团队的关键问题,让代码问题追踪真正具有使用价值。



开发团队效率问题表面上看是关于代码新增的效率与质量,核心是人的效率。


Merico 的团队人才报告提供团队成员的开发价值榜、开发当量榜。此外,就像 MBTI 的员工能力模型,Merico 也会给人才打上标签,展示人员的各项贡献与能力,比如 “测试”、“远程过程调用”、“自然语言处理”、“第三方接口”,形成员工技能图谱。任晶磊解释说,比如要筹划一个新项目,领导者可以看到团队中擅长数据分析的人有多少、擅长科学计算的人有多少,对已有人力资源心中有数。



下一步,Merico 计划让产品设计更加深入开发团队的日常使用场景,技术层面不断精进并涵盖更多指标,让分析结果更准确。此外,Merico 也将在年内推出服务开源社区的产品。

从边缘到核心,研发效能五个维度指标

除了产品,Merico 还提供解决方案。这家创业公司有专门的咨询团队,针对客户开发团队绩效管理中出现的问题,提供生产管理流程优化的方式方法,帮助发挥每个程序员的优势和特点。


任晶磊告诉 TGO 鲲鹏会,其客户有两个典型特征,“1. 研发团队达到一定规模,一般在五十人或以上,管理半径要覆盖到所有人已经有些困难,需要借助工具来提高透明度、辅助研发决策;2. 对于研发提效有需求、有认知,希望提升研发管理的精细化水平。”


据 36 氪报道,Merico 在与大客户合作时,主要提供底层的代码分析服务,并输出数据以满足大客户内部自建管理工具及流程的需要;而针对百人级别的研发团队,思码逸则提供从代码分析、数据视图到优化建议的完整效能提升方案。目前其产品形态以私有部署为主,近期也上线了面向中小型开发团队的 SaaS 产品,二者都是按照活跃开发者人数每年收取 license 费用。


产品上线后,Merico 已经服务了字节跳动、滴滴、长亭科技、知道创宇等客户。


随着全球数字化进程加速,软件行业蓬勃发展,开发者人数不断攀升。根据 Evans Data Group 2019 年报告,全球开发者规模达 2390 万,预计 5 年内将增长至 2870 万。


任晶磊认为,研发效能的指标有五个维度:讨论统计、issue 统计、代码统计、AST(抽象语法树)分析、业务分析。


前两层反映的是开发者的活跃度,具体包括事务积压、交付周期、吞吐量等指标,这类产品一般接入了 JIRA 等事务追踪软件的数据,着眼于开发活动中的动作。也有一些产品做的是第三层,着眼于开发活动的成果,会接入代码库去看代码提交中做了什么,比如提交了多少行代码、是新代码还是旧代码的重构、是否反复修改代码。


“我们做的是第四层,更深入地去理解代码库中某次代码提交的含义,比如增加了多少逻辑复杂度、对整体软件工程质量有什么影响、反映出开发者怎样的技能等等。通过这种自下而上的分析,我们可以给出开发效率、软件工程质量、组织与人才发展等三个视角的数据呈现。”


Merico 实行远程办公, 近 40 位员工分布在中国、美国、巴西、法国、加拿大、印度的 15 座城市。当然,这家公司也使用 Merico 工具管理团队的开发效率。


今年 6 月,Merico 宣布完成数千万元 Pre-A 轮融资,由 GGV 纪源资本领投、联想之星及前轮投资者 Polychain Capital 跟投。获得融资后,Merico 将进行产品开发、服务优化和团队扩张,更好帮助客户以数据驱动管理软件人才。


2020-09-18 21:015055

评论

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

深入分析单例设计模式

Andy

HTTP 请求流程

coolion

大前端 浏览器 HTTP

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

28天写作挑战——坚持28天,每天500字

TGO鲲鹏会

28天写作 热门活动

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

大数据指标分析思考

Andy

架构师训练营第十三周

我是谁

架构师训练营第 1 期

IoT爆发前夕,企业架构要面对哪些变革?

京东科技开发者

物联网

Java多线程并发控制工具CountDownLatch,实现原理及案例

李尚智

Java 并发编程 后端

架构师第7周作业

Geek_xq

看完老板哭着让我留下来!带你彻底搞懂Android启动速度优化!Android篇

欢喜学安卓

android 程序员 面试 移动开发

自学编程的4大误区,你中招了吗?

田维常

程序员

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

Java多线程并发控制工具信号量Semaphore,实现原理及案例

李尚智

Java Java并发 并发编程 后端

软件测试---BUG的生命周期

测试人生路

软件测试

云算力挖矿系统APP开发|云算力挖矿软件开发

系统开发

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

python 技术面试没过,居然是没有用 pytest 测试框架

和牛

Python 测试 测试框架 pytest

泪目!美团点评APP在移动网络性能优化的实践,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

探索压测奥妙

ninetyhe

微服务 分布式系统 压力测试 性能调试

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

系统开发

换个角度,聊聊全链路压测

老张

性能测试 系统稳定性 全链路压测

Uniswap去中心化交易所系统开发

W13902449729

去中心化交易所系统开发 uniswap

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

AMD台式CPU市场份额距离英特尔还有多远?刚到四分之一

E科讯

MySQL不会丢失数据的秘密,就藏在它的 7种日志里

程序员小富

MySQL

架构师训练营-第二周作业

Mark

算法学习手册

田维常

算法

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

零基础也能看得懂!Android面试心得必备技能储备详解,Android面试题及解析

欢喜学安卓

android 程序员 面试 移动开发

为滴滴、头条量化研发效能和代码质量,他们有哪些秘籍?| TGO 专访_技术管理_王鸿智_InfoQ精选文章