一年半之前,我一直在 Bizzabo 领导研发团队。

自从成为负责人,我就在寻找衡量研发团队绩效的最佳方法,从而反映出团队提供的真正价值。我们最初是使用行业标准度量来跟踪团队绩效:度量计划和交付。

下面是我们的团队 KPI:

  • 偏差最多 20%:为了更好的计划
  • 每项任务平均两天:我们认为,小任务更好处理,也更好执行;
  • 系统正常运行时间 99.95%

我面临的挑战是,这些 KPI 与研发团队的真正价值没有直接联系。我们很容易实现这些 KPI,即使速度很慢,质量很低。

经过 6 个月的迭代和修改,我决定定义研发 KPI,以便更好地反映一个运转良好的研发团队的价值——团队的速度和质量。

我想暂停一下,了解下CodeClimate团队的产品 Velocity。它帮助我们走到今天。

让我们来回顾一下,术语“研发速度”包含了什么。

工作习惯

  • 每周编码天数
  • 每天代码推送次数(尽早推送,少量推送)
  • 拉取请求(PR)大小
  • 从请求审查到合并的时间

代码质量

  • 代码复杂度
  • 代码文档
  • 测试覆盖率
  • Bug 数量
  • 系统正常运行时间

效率

  • 返工比例
  • PR 放弃数量
  • 回退次数

为了选出可以实现最快速 ROI 的 KPI 并优先关注,我们深入地了解了每一项。

每周编码天数

团队成员每周编码的平均天数(定义为至少一个提交的推送)。你可能认为一个提交不能很好地反映情况,但是,我建议你从简单的开始,或者提出一个更好的、容易量化的指标。

每周编码天数

每天代码推送次数

每一名活跃的贡献者在单位时间内有多少拉取请求(PR)被合并。

每天代码推送次数

PR 大小

对我们来说,PR 多大合适,这需要我们更深入一点地了解。但是,我们不确定如何设置一个明确的数值。关键是找到一个代码行数,我的同事用不到一个小时的时间就可以完成代码审查和 PR 审批。

代码审查超过一个小时就会成为一项具有挑战性的任务,这样,审查可能会不彻底。反过来,随着更多的 Bug 进入生产环境,节省 33 小时将成为一项挑战。最佳的 PR 大小是小于 250 行代码。实际上,我们大部分的 PR 都更小一些。

PR 大小分布

从请求审查到合并的时间

把 PR 为发布到生产环境需要经过的每个步骤想象成一个漏斗:审查时间 > 审批时间 > 合并时间。

我们希望有一个明确的内部 SLA,这样,80% 的 PR 将在已知的时间内通过这个漏斗。这是一种平衡,可能每个团队的心态和文化会有所不同。一方面,我们不希望开发人员因为审查等待太长时间,另一方面,我们希望防止审查人员被迫暂停当前任务进行上下文切换。我们的目标是:

  • 审查时间:12 小时(同一天审查)
  • 审批时间:第一次审查后 3 小时
  • 合并时间:审批后 12 小时

我们还规定,审查人员最多 2 名,以防止厨房里的厨师过多。

代码复杂度

定义——控制结构(如 if 语句、循环等)中嵌套深度至少为 4 层的应用程序代码的行数。

KPI—每千行代码中复杂代码的数量。

从下图中,你可以看到多年来我们是如何简化代码库的。在很大程度上,这是通过采用新技术(React/Redux、Kotlin、微服务、Dockers 和 K8s)和改进我们的代码文化来实现的。

代码复杂度随时间的变化

代码文档

我们秉承“无文档”的理念。我们认为,应该编写简单的代码,每个人都能轻松理解(不过,公平地说,我们确实有一些注释)。

测试覆盖率

我们的研发团队没有专门的 QA 团队。每个开发人员都自己编写测试(单元测试和端到端测试),Squad 负责发布质量。没有覆盖的新代码就不会发布。全自动化测试会在每个构建上运行。

Bug 数量

Bug 很难度量。你是什么时候跟踪它们?什么算是一个 Bug?我们优秀的客户支持团队做得非常好(首次响应时间不到 1.5 小时),只会将相关问题升级到我们的研发升级团队(我们有一个团队负责人的职位空缺)。我们每个月都要度量 Bug 的数量和严重程度。但是,随着团队的成长,你会做些什么呢?我们都知道,编写的代码越多,Bug 就越多。

我们会进行深入分析,查找某个月的代码行数与 Bug 之间的关系,发布次数(我们有一个完整的 CI/CD)与 Bug 之间的关系,等等。

最后,我们决定度量合并的 PR 总量与 Bug 数量的比率。

客户根据严重程度报告的 Bug 数量

合并的 PR 总量随时间的变化

我们将 KPI 定义为 0.2(每合并 5 个 PR 一个 Bug),无紧急 Bug

系统正常运行时间

这个很简单。我们的目标是度量我们每个月的正常运行时间,以确保我们的客户得到最高质量的服务可用性。为此,我们使用了statuscake。

返工比例

返工代码行是指同一作者在 3 周内提交并编辑的任何代码行。返工比率使用以下公式计算:(不同返工的总行数)/(不同修改或添加总行数)。

度量返工的方法没有对或错,因为这更多的是一个特定于团队或公司的指标。当一些团队的工作从里到外返工率更高时,或者当一些团队在周密计划之后开展工作时,有时正在进行快速的产品迭代,尤其如此。

主要的思想是回顾每个特性的开发,看看返工是不是由于需求的变化,或者缺乏足够的技术指导。

PR 放弃数量

如果拉取请求在未合并的情况下打开并关闭,则认为它被“放弃了”。我们还把超过 3 天不活动的拉取请求包含了进来。这可以确保我们专注于最重要的任务,同时最小化上下文切换,保证我们的工作不会浪费。

当我们按年龄来观察放弃的 PR 时,很明显,超过 30 天的 PR 可能有 90% 永远都不会再合并,换句话说,它是失落的代码。清理完管道后,除去那些从未打算合并的 PR(比如 POC、测试和其他一些内部需求),我们将回顾任何老去的 PR,并理解其原因。我们可以确定这是否是产品优先级的改变,或者我们从来没有因为错误的估计而终止一项计划,等等。

你可以看到,专注于这个 KPI 并制定好流程,使我们的小组工作习惯更加一致;团队之间的偏差变得更小了(自 7 月份以来,我们就启用了新的 KPI 流程)。

每个 Squad 放弃的 PR

回退次数

合并后有多少代码回退?回退通常是即时 Bug(质量)或对产品 / 功能缺失的快速了解所直接导致的结果。我们的目标不是一个特定的数值,但是,我们确实会把每次回退作为一个触发器,进行一次专门的回顾。

那么,我们用什么作为我们的 KPI?

1. 我们定义了良好的研发 KPI 所具有的属性:

  • 从个人到 Squad(我们使用了Spotify 模型)再到整个团队都可度量;
  • 反映并能促进吞吐量的增长;
  • 与工作(代码)质量相关;
  • 挑战团队,使他们变得更好;
  • 在最短的时间内交付最高质量的产品。

2. 在进行了上述所有分析之后,我们决定使用以下团队 KPI:

  • 吞吐量:每位贡献者每月有 15 个 PR 被合并;(每名活跃贡献者单位时间内被合并的 PR 数量)
  • 效率:PR 放弃率小于 5%;(如果拉取请求在未合并的情况下打开并关闭,则认为它被“放弃了”。我们还把超过 3 天不活动的 PR 包含了进来。)
  • 质量:正常运行时间 99.98%;
  • 质量:每个合并的 PR 平均 0.2 个 Bug,无紧急工单。

查看英文原文:Stop measuring R&D planning VS execution. Start measuring team velocity

如何定义研发 KPI:以团队速度为标准相关推荐

  1. 如何定义研发KPI:以团队速度为标准

    一年半之前,我一直在Bizzabo领导研发团队. 自从成为负责人,我就在寻找衡量研发团队绩效的最佳方法,从而反映出团队提供的真正价值.我们最初是使用行业标准度量来跟踪团队绩效:度量计划和交付. 下面是 ...

  2. atitit.研发企业与团队文化的结构框架 企业文化建设方案3.0

    atitit.研发企业与团队文化的结构框架 企业文化建设方案3.0 1 什么是企业文化 1 2 团队文化的重要性 2 3 企业文化由三个层次构成:  3 4 企业文化整个理论系统概述为5个要素,即企业 ...

  3. 上海/北京内推 | 百度商业研发部模型团队招募机器学习算法工程师/实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 百度 百度商业研发部模型团队传承自百度凤巢model组,长久以来以开创.领 ...

  4. 国际通行的打字速度评级标准

    国际通行的打字速度评级标准普通9级:生稿 0-10 (新学.少学.初学,一般聊天级学手)普通8级:生稿 10-20(中学.通学,一般聊天级学手)普通7级:生稿 20-30(上学.胜学,一般聊天级学手) ...

  5. 以太坊数字资产的发行和流通:以太坊上的数字资产定义、ERC 20代币合约标准、ERC 20标准接口、ERC 721代币合约标准、

    第七章 文章目录 第七章 一.以太坊上的数字资产定义 二.发行和流通 三.ERC 20代币合约标准 1.ERC 20标准接口 2.现有的ERC 20标准代币 三.ERC 721代币合约标准 1.标准定 ...

  6. 为资产分类定义折旧范围_固定资产概念、标准与分类

    展开全部 一.固定资产概念 所谓固定资产是指使用期限较长,单位价值较高,并在使用过e68a84e8a2ad62616964757a686964616f31333433616238程中保持原有实物形态的 ...

  7. 如何制定SEO团队业绩考核标准

    前段时间碰到一个同行,和我交流了一个问题,那就是SEO团队业绩如何考核,应该制定一个什么样的标准,情况是这样的,他们公司正想建立一个新的SEO团队.目前这个朋友负责这块,但是自己也没有什么组建团队的经 ...

  8. 阿里如何定义团队的研发效能?

    作者:何勉,阿里巴巴研发效能部资深技术专家 相关阅读:都996了,研发效能还是提不起来,关键在这里 因为身处研发效能部,我接触了公司很多产品技术团队.他们几乎都把研发效能提升列为了本财年的重要目标,大 ...

  9. 阿里如何定义团队的研发效能? 1

    简介: 简介: 作者:何勉,阿里巴巴研发效能部资深技术专家.因为身处研发效能部,我接触了公司很多产品技术团队.他们几乎都把研发效能提升列为了本财年的重要目标,大部分还为此成立专项,如此我们又如何去提升 ...

最新文章

  1. java 重用性_提高Java代码重用性的三个方法
  2. 上海虹桥站 启动建设5G网络,DMA助力5G加速
  3. 在linux下实现拓扑排序,数据结构——有向图(拓扑排序算法)
  4. 无心剑中译迪米特利·马丁《我是谁》
  5. 软考路:2021年系统架构设计师之心得
  6. 微软python免费课程_微软再推免费在线Python教程 面向数据科学和机器学习初学者...
  7. Linux signal 那些事儿 (3)
  8. linux下svn安装与版本控制
  9. 【转】RHadoop实践系列之二:RHadoop安装与使用
  10. 第一章 建立数学模型
  11. python实现excel到word转换
  12. 车牌限行:受雾霾天气影响,某市决定当雾霾指数超过设定值时对车辆进行限行,假设车牌号全为数字,且长度不超过6位,限行规则如下:
  13. installShield_script学习
  14. 计算机网络练习3|河工|周老师
  15. 微信公众号服务器瘫痪的现象,微信出现大范围故障瘫痪30分钟 现已恢复正常
  16. Python攻关之模块(2)
  17. vue生命周期函数面试题
  18. nmn吃第一天有什么感觉,吃完nmn的反应,一点点体会
  19. 神经网络的图像识别技术,神经网络图像角度分析
  20. Primeton EOS开发配置

热门文章

  1. 计算机应用基础知识理论题,计算机应用基础理论基础知识复习题.doc
  2. 强化学习入门第一讲 马尔科夫决策过程
  3. mapbox实现3d建筑物分层效果(类似单体化)
  4. 【帅琪达】IDEA自动导包和自动删包设置
  5. 获取淘宝/天猫分类详情的API演示过程
  6. word增加一页空白页快捷键【收藏】
  7. 计算机在现代教育中的作用,计算机技术在现代教育中的作用
  8. 英语测试题库软件,墨墨英语题库
  9. 微信分享朋友、朋友圈、QQ、QQ空间
  10. 图纸管理管理太混乱,提高图纸管理方法