简介:衡量技术团队的效能,是不是只要摆出一堆数字指标就行?对交付价值的定义,通常有哪些误区?好的量化指标,一定会带来好的结果吗?本文从定义、衡量交付价值、研发成本、交付时长以及细化指标四个方面,分享如何量化效能。

一 背景

项目管理的理论有很多,但大多是从理念和方法论的角度出发。当在一个团队推行项目管理的某种实践的时候,不免被挑战的一个问题:“如何衡量技术团队的效能”。于是不得不试图去把逻辑题转成数学题,用数字指标去证明一些“不证自明”的方法论。

但如果我们只是摆出一些指标,不可避免地会陷入“上有政策、下有对策”的循环(只要不加其他约束,数字还不是想怎么优化怎么优化)。我们也应该能看到这些数字背后,需要坚持的一些原则,和需要遵守的一些硬性标准。

假设目标是提高技术团队的效能,会得到如下OKR(Objectives and Key Results,目标与关键成果法):

O:

  • 提高技术团队的效能

KR:

  • 增加总的价值交付率和交付质量

  • 增加单位研发成本的平均交付价值

  • 降低单位价值的平均交付时长

本篇侧重点在如何量化,而不是如何提高。所以接下来继续分解,我们要做的事情就是:

  • 定义、衡量交付价值

  • 定义、衡量研发成本

  • 定义、衡量交付时长

  • 细化指标

二 如何定义交付价值?

1 这里可能会存在两个误区

误区1:交付的价值就是产出的方案、代码的数量和质量

这样衡量交付价值,就很少有人愿意建设公共设施了(因为质量好不好很难量化,建设公共设施初期的耗时往往明显大于直接完成业务需求),也很少有人愿意使用公共设施(因为用别人的,不如自己建,还能拿个结果)。而对于技术团队,长期创造价值的能力,离不开公共设施的完备和对公共设施的使用。

误区2:交付的价值就是业务KPI中指标的增量

有很多功能并不带来直接的增量,或者比较难以衡量,但可能带来公司的竞争壁垒,如产品的体验。这样衡量交付价值,带来的问题就是,大家都只关注短平快的增量功能(比如营销),最终产品的竞争力下降。

2 我目前的答案:交付价值是需求背后的客户价值

不完全是技术方案、代码的数量和质量,也不完全是KPI指标的增量。交付价值就是按照用户的需要,对用户提供的整个产品、服务的数量和质量。这个定义几乎是不证自明的,但是把交付价值定义为客户价值,会不会让这件事情更加复杂,变得更加不可能量化?这就需要我们转变一下思路,通过按照优先级加权的需求的工作量来衡量。

按照优先级加权的需求的工作量代表着客户价值,这里做一些基本假设(假设不成立的场景可以作为另外的问题解决)。

假设1:技术的上游(一般是业务、产品)对于客户价值的判断是基本准确的

我们知道业务是会试错的,给业务小成本试错的机会、在业务试错的过程中沉淀一些通用的产品技术能力,往往不是局部最优,但是全局最优。

假设2:技术的上游会按照客户价值推演出优先级然后给技术提需求

假设3:技术的上游提给技术的需求是充分的(不存在业务产品人员配置的缺失而导致需求质量数量不足的情况)

基于这几个假设,上游提出的需求可能就很大程度上代表着客户价值,研发在非功能性需求方面对上游的需求做补充。

三 衡量交付价值

交付价值有个非常主观但有效的衡量方式,是上游(一般是产品业务)的满意度。背后的逻辑是,交付价值(背后代表的客户价值)往往很难量化,而产品业务的满意度,体现了技术与业务是否很好的协同,也反映了技术是否很好的交付价值。

需求的工作量不应该通过人日来评估,因为不同团队,对于相同功能点的开发时长是不同的。需求的工作量的单位应该是分解到最后的功能点数量。再细化一些,对于服务端是领域模型、领域服务数量,流程分支节点数量,对于前端、交互我不是很了解,但偏展示层可能更多的是页面区块、交互流程、行动点的数量。这些已经有量化的可能性了。

四 定义、衡量研发成本

研发成本,在一般的工程效能里面有时候会被简单的理解为人日,单纯的交付人日的衡量,其实比较简单,整个团队的 人数*工作天数。但容易被流程设计者忽视的是,站在企业成本的视角,交付人日,可能还要按照开发人员的收入进行加权。从这个角度来看,技术团队效能里面的研发成本,准确的来说就是公司对于研发的金钱投入,包括购买服务器、云服务、培训、行政投入。

这部分对于提升效能的启发是:

  • 哪些功能自研、哪些功能靠购买,有时候真的得算一笔帐。

  • 软件开发是一个边际成本递减的行业,如何让功能更简单的得到复用,可能是对效能提升最有帮助的部分之一(复用50个人日的功能模块,就几乎等于省了50人日的研发成本。当然也可能存在复用及后期维护的成本大于新建成本的情况,需要有良好的设计去规避)。

五 定义交付时长

我自己之前曾经陷入一个误区,认为交付时长就是从开始开发,到完成上线,这个就是交付时长。但是回到客户价值这个维度来思考,技术团队交付时长(这个时候可能说产研团队更合适一些),应该是从业务的一个想法,到验证、立项、完成发布、灰度,到最终用户可以真正使用的时长。

于是单位价值的平均交付时长,就变成了以下公式:

六 如何衡量交付时长

衡量交付时长其实也比较简单,记录下业务提出该功能的时间以及功能开发的时间。难点可能是整个价值流交付过程中细化的指标,而细化的指标更能帮助我们发现问题。于是我们可以从一般项目的生命周期来看,哪些节点的时长会影响我们的交付:

  • 需求立项到评审的时长

  • 需求评审到技术方案评审的时长(如果项目很大可能会有多个层次的设计方案)

  • 技术方案评审完成到开发完成自测的时长

  • 自测的时长

  • 多端联调的时长

  • 测试的时长

  • bug验证的时长,bug的数量(reopen可以数量+1)

  • 环境部署等待的时长

  • 代码合并的时长(主干发布的情况下)

  • 回归的时长

  • 发布的时长

  • 灰度的时长

这部分对于提升效能容易忽视或有启发的点是:

  • 需求的拆分成基本的功能闭环进行迭代(以不引入或少引入测试的重复回归为标准),或许能比较有效的降低需求价值量的平均交付时长。

  • 自测充分、减少bug数量,最终减少联调、测试回归的次数和时长,在一定的单测覆盖率要求以前,是收益大于成本的。

  • 代码合并有时候冲突解决很麻烦,会导致一次部署的时间很长,且代码合并引入了更多次的测试回归工作(这可能是某些BU往主干开发分支发布走的原因之一)。所以基于业务的理解,进行应用的拆分,减少单个应用的并发数量,也可以提升研发效能。

  • 在缺乏有效的项目管理的情况下,资源的相互等待可能是项目延期的一大因素,有时候某端开发完了,另一端资源没到位,一直不能联调提测。项目管理的同学对于资源目前的分工和瓶颈应该给上游及时的反馈。

容易陷入误区的点是:

  • 技术方案(架构、详细设计)的评审既然是很大的一块耗时,是不是可以直接写代码,少写方案。我理解在技术方案写不熟练的情况下,写技术方案确实比较耗时。但是技术方案体现的是分析设计的过程和结果,这部分如果不写出来,增加的是大量的沟通成本。而分析设计就算不写出来,这部分工作量在编写代码的时候也是没办法省略掉的,只是变成了在大脑中进行(也许在大脑中真的不如在纸上写出来来的快和清晰,真的省略了设计,最终就会成为技术负债)。我个人感觉对于多大的需求需要技术方案评审的比较好的实践,是以Code Review能否不基于技术方案直接阅读代码为准。

七 最后

但我仍然认为,好的量化的指标往往是好的结果的必要不充分条件。简单粗暴的优化某项指标往往会因为两个问题而使得最终的结果背道而驰:

  • 某项指标变好,带来的是其他指标的降低,局部最优并非全局最优(如:取消技术方案的编写和评审,造成的是编码时间或者后期维护时间的增加)。

  • 效能是多个变量共同作用的结果,缺乏理论基础和方法论的情况下,很可能在短期优化指标的时候,忽略了长期的团队成长、系统能力沉淀等因素;或是忽视了业务方满意度等难以量化的因素。

所以,效能的优化,不止应该有指标,还应该有路径,而路径往往是最难的部分。

原文链接:https://developer.aliyun.com/article/781527?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

如何量化技术团队的效能?相关推荐

  1. 无法量化互联网技术团队的工作?请使用人效指标

    来啦,请坐. 我是老杨.如果你有强化管理能力,量化技术产出,提升技术效能,打造技术团队等需求,那么这套课程会为你揭开技术管理的神秘面纱,可以让"妈妈再也不用担心你的工作了". 这是 ...

  2. 前端团队研发效能提升的探索与实践

    读者受益 研发效能定义:知道研发效能是什么?(对「研发效能」的定义有一个经得起推敲的参考) 研发效能提升:知道如何提升技术团队的研发效能?(对提升自己所在团队研发效能有一些想法/灵感) 技术的价值:当 ...

  3. 谈一谈打造高效能技术团队的七个方法

    最近在读<高效能人士的七个习惯>这本书,读了两遍,在我看来这是一本好书,但是却没有想象那么好.因为虽然书中提到的七个信条,真的都是非常精粹和正确的人生道理,但实际掌握和融合进自己信念的过程 ...

  4. 遇见OFFER,阿里云最强技术团队现身招聘,“职”为你来

    简历投递入口: https://bss.csdn.net/delivery/resume/ali 在5·15 遇见OFFER大厂梦招聘活动中,近20家企业来到CSDN[遇见OFFER]直播招聘栏目,其 ...

  5. 阿里技术风险与效能部负责人张瓅玶:从底层资源到核心竞争力 阿里巴巴的深度用云实践

    上云已成为行业共识,但是,随着上云进程的加快及用云程度的加深,以及近两年增效降本成为很多公司的主要诉求,如何提升技术投入性价比?如何通过云助力核心竞争力建设?如何用云才能更好地实现业务增长?这些问题成 ...

  6. 阿里技术风险与效能部负责人张瓅玶:阿里集团深度用云实践

    上云已成为行业共识,但是,随着上云进程的加快和用云程度的加深,以及近两年增效降本成为很多公司的主要诉求,如何提升技术投入性价比?如何通过云助力核心竞争力建设?如何用云才能更好地实现业务增长?这些问题成 ...

  7. 如何加入LSGO软件技术团队?

    背景 马上就要放暑假了! LSGO软件技术团队 也要开始招新了! 本次招入的同学,我会亲自来带,和你一起学习,共同成长. 我们的主要研究方向是机器学习,再详细一些就是视觉.自然语言处理和量化金融. 以 ...

  8. 字节跳动技术团队提出「AI渲染」方案,手机端也能实现影视级渲染效果

    随着3D技术的高速发展,影视渲染效果的复杂度.精细度都在逐步提升,但高质量的渲染效果和时间成本往往难以兼顾.针对这一行业痛点,字节跳动智能创作团队基于AI技术的优势提出了「AI渲染」方案.这一方案现已 ...

  9. 天猫总架构师何崚:好的技术团队不是“需求翻译机”或“架构优化机”

    " 一个好的技术团队应该具备哪些特质?一个好的技术团队的leader应该怎样实施管理?技术和业务如何做到完美结合?这是来自天猫技术团队的经验,仅供参考. 前言 2012 年,无线化大规模到来 ...

最新文章

  1. connot not ensure the target project location exist and is accessible
  2. 三星r750美版刷Android,这是才是全面派 三星space monitor详解
  3. phpStorm注册码
  4. 对话阿里云总裁张建锋:解密阿里云再生长的动力、合力和张力
  5. CentOS 7 最小化安装简单配置
  6. linux系统英伟达gpu驱动卸载_英伟达显卡驱动程序被发现强制捆绑 官方已火速撤回驱动下载链接...
  7. java spliterator,Java 8 之Stream Spliterator
  8. 自己实现简单Java缓存类
  9. 记录一下:调试了虹软的人脸识别sdk,存到数据库中
  10. 数字音频功放芯片型号与应用介绍
  11. 独家下载!《Java工程师成神之路(基础篇)》
  12. python七段数码管绘制实验报告_Python绘制七段数码管实例代码
  13. 关于LSB图片隐写的解法
  14. Silverlight 5 强袭 !! 圣临王者之三端大一统
  15. Win7 获取管理员权限
  16. 幼儿-综合素质【7】
  17. Excel常用的操作
  18. 几种关于用python的for循环求1到10的立方的方法
  19. 基于springboot的校园闲置图书共享平台
  20. 郝健:Linux下服务程序启动管理方式的分析与总结

热门文章

  1. Git——跟踪或取消跟踪文件
  2. sed 中如何替换换行符
  3. 著名数据库状告分支,法院:100%开源为虚假宣传!
  4. Pandas多层级索引的数据分析案例,超干货的!
  5. PDF下载!《Python十大基础专题》《247个Python综合案例》《Pandas 20页学习笔记》...
  6. java接口等待几秒再返回_怎样才能在UI线程中等待okhttp返回结果才进行下一步
  7. ASP.NET Core开发常见“坑”
  8. 常用的 Http ContentType 对照表
  9. Java线程新特征——Java并发库
  10. 【原创】大叔经验分享(25)hive通过外部表读写hbase数据