为滴滴、头条量化研发效能和代码质量,他们有哪些秘籍?| 专访思码逸 Merico
对研发人员进行量化的绩效考核,是业界难题。
一种思路是通过提交次数(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 将进行产品开发、服务优化和团队扩张,更好帮助客户以数据驱动管理软件人才。