写点什么

如果代码行数不是一个好指标,应该用什么度量研发工作?

  • 2024-12-18
    北京
  • 本文字数:903 字

    阅读完需:约 3 分钟

如果代码行数不是一个好指标,应该用什么度量研发工作?

利用单一指标度量研发产出往往不是一个好主意,例如代码行数、提交数、缺陷数等等,它们往往存在容易注水、远离实际价值交付的问题(所谓的代理指标)。所以建立一套复合的指标是比较好的做法。

建立复合指标的第一步是找到基础的指标数据,包括以下几个类别:

  • 基础的代码产出数据,这类数据可以从源代码管理协作平台中提取。在代码产出方面,代码行数的确不是一个好的指标——容易注水、稳定性差。这里极力推荐思码逸代码分析系统的代码当量,基于源代码的提交进行了代码工作量的提纯,有效克服了代码行数的缺点,能提供一个客观、稳定很多的基础指标。如果你有现有的基于代码行数的指标,可以将其替换为代码当量。

  • 基础的交付产出数据,这类数据可以从需求管理系统(如 JIRA)中提取,包括故事点数、周期时间(故事从一个状态转移到另一个状态的时间开销)、燃尽图等。

  • 基础的质量数据,这里数据从需求管理系统、测试管理系统、客户支持系统等获得,包括缺陷数量、测试覆盖率、测试成功率、缺陷逃逸数量、客户报告问题数量等。

  • 基础的部署或发布数据,可以从变更系统、CI/CD 流水线系统中获得,例如构建时长、流水线执行时长等。

  • 如果是线上系统的话,还需要从监控系统获取服务状态的数据。

接下来,在基础数据之上引入不同数据的关联。例如,将代码产出和缺陷数量关联计算出缺陷密度,将缺陷数量和客户报告的问题关联为缺陷逃逸率等等,通过这种方法来形成各种复合指标,可以涵盖以下几个类别:

  • 代码产出:人均代码当量,代码审核时间等。

  • 质量:测试通过率、缺陷密度、缺陷逃逸率、服务可用性、客户满意度等。

  • 部署(适用于 Web/SaaS):部署频率、部署前置时间、部署失败率、部署恢复时间等。

  • 研发过程:需求前置时间、需求吞吐量、平均周期时间、按时交付率等。

随后,我们可以在不同层面进行数据聚合和观测,包括团队、版本、项目、部门、地域、工作年限等等。有几点建议:

  • 研发产出的指标的作用是辅助决策,指标要稳定、可预测、可解释,要时刻关注指标的有效性,及时迭代;

  • 尽量避免对个人的评估,最小以团队为单元;

  • 勿盲目追求研发产出的增长,可持续发展最重要。


本文整理自《研发效能100问》,原作者:  管俊 戴尔中国 卓越研发集团 DevOps 架构师

用户头像

数据分析驱动研发效能 2022-04-12 加入

思码逸研发效能分析平台,致力于帮助研发团队解决效率、质量和人才三大痛点,提升研发效率与软件工程质量,助力每一位开发者创造更多价值。

评论

发布
暂无评论
如果代码行数不是一个好指标,应该用什么度量研发工作?_研发效能_思码逸研发效能_InfoQ写作社区