如何量化考核技术人的 KPI?

原创: 张建飞 阿里技术今天

阿里妹导读:对技术人来说,技术是成长的“核心”。然而,在实际工作协作中,技术的重要性常常被业务所掩盖,造成先业务后技术的现象。

针对这个痛点,阿里高级技术专家张建飞提出了自己的解决思路,希望能与大家一起探讨、交流。

为什么需要技术KPI?

在业务技术团队,有一个不好的趋势就是团队越来越业务,越来越没有技术味道。每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目......

唯独少被谈及的是技术本身。此处并不是说业务不重要,而是说理解业务和把控业务需求是技术人员的base,而不是全部。

将就的代价

这种技术味道的缺失对技术团队来说是非常可惜的,也不利于技术人员的成长和发展。因为很难想象一个没有技术追求的团队能开发出一个健壮的、可维护性好、可扩展性好的系统。相反,这种业务代码的堆砌,从短期看也许是“较快”实现了业务需求,但是从长远来看,这种烂系统的增加会极大的阻碍业务的发展,形成一个个的黑洞应用,而工程师被裹挟在业务需求和烂系统之间,疲于应对,心力交瘁。

这种将就将导致系统腐化,技术债越垒越高,像肿瘤一样消耗你所有的能量。

我不是药神,只能尝试开出一方——那就是在不影响业务的情况下(特别是相对稳定的业务,请拒绝业务方的时间倒排),Tech Story应该和User Story有同等的重要性,要把重构优化提到和业务需求相等的优先级去处理。我们不仅要对业务需求负责,我们更要对应用的质量,系统的可维护性负责。

因为我们技术人员是应用的父母(有些是亲生父母,有些是养父母),你不照顾它们,不治理它们,它们就会生病,你忍心看到这样的局面吗?

技术管理者者(TL)的失职

造成这种局面,我们的技术管理者,我们的TL要负有主要责任。如果一个TL从来不关注系统架构和设计,从来不写code,对技术没有热情也不学习,甚至其本身技术就很烂,那么在这个TL领导下的技术团队,又怎么会有技术味道,团队成员又怎么能进步和成长?

现在很多的TL每天都混迹在各种会议上,很忙,做着各种沟通协调的事情,可是我们真的需要这么多的会议、这么多的沟通吗?

如果沟通的结果只是做业务和PD对团队的传话筒,没有业务创新,没有用技术和数据系统化的解决业务问题,没有在技术方向和架构上给团队指引,没能切实的帮助系统优化、团队提效,请问这样的沟通给业务带来了什么价值,给团队带来了什么价值?还是沉下心来,多看看书,哪怕非技术的书也好。多写写代码,哪怕跟业务无关的代码也好。

所以,我们要回归技术本身。我们不需要这么多“高高在上”、“指点江山”的技术Manager,而是需要能真正深入到系统里面,深入到代码细节,给团队带来实实在在改变的技术Leader。

技术KPI的量化

提升技术氛围,打造工程师文化不能仅停留在口头上,可搭配一定的强制手段,比如和技术人员的利益绑定。这种绑定就需要我们能对技术贡献进行一个相对公平的分解和量化。

技术KPI

基于此,我将技术人员的KPI分解为业务贡献、技术贡献和团队贡献三个大的部分,其详细内容如下。

  • 业务贡献:包括需求把控,业务项目和业务创新。
  • 技术贡献:包括设计重构、技术影响力、Code Review、创新提效和代码质量。
  • 团队贡献:包括招聘、新人培养和团队氛围。

那么技术贡献中的这几个维度要怎么理解呢,解释的话我就不多说了,用我们工作中的一些案例来描述一下吧。

应用质量:

  1. 你负责或者共同负责的应用质量分(可以从代码重复率,圈复杂度,分层合理性等维度考察)。
  2. 你做了哪些提升应用质量分的工作。

设计重构:

  1. 我在客户通项目中,对CRM销售域进行了领域建模和设计,并且抽象合理。
  2. 我发现Infrastructure中package分类不合理,进行了重新设计并重构完成。
  3. 我发现现在系统中错误码比较混乱,我梳理制定了新的错误码规范,并完成了代码重构。

技术影响力:

  1. 在团队内分享10篇干货,点赞数1000。
  2. 团队分享策略模式,得到同学好评 。
  3. 我接受邀请,在行业会议上分享了SOFA架构。

Code Review:

  1. 我在review某某代码的时候发现,可能存在线程不安全的隐患。
  2. 我在review某某代码的时候发现,存在设计不合理的现象,此处使用责任链可以很优雅的解决问题,并具备一定的扩展性。

创新提效:

  1. 我发现本地测试启动PandoraBoot比较浪费时间,所以写了一个TestContainer大大提升了自测效率。
  2. 我发现有一些boilerplate代码不需要写,所以对乐观锁、分页进行了annotation支持,简化了代码。
  3. 在某个项目或者技术点上面,我产出了一篇专利:基于领域模型的业务配置化。

代码质量:

  1. 提测后的Bug数,线上故障数(系统可以提取,不用自己填写)
  2. 我完善了某某模块的单元测试,并多次在自动化回归中发现问题。

KPI答疑

对于上面的KPI大部分的技术同学是表示认可的,当然质疑的声音也很多,我这里挑一些典型的回答一下。

Q:技术KPI的提出,会不会导致技术同学只关注技术不做业务项目了?

A:关于绩效,肯定是综合看业务贡献,技术贡献和团队贡献。但是作为一个重要参考和风向标,技术KPI是有积极意义的。

Q: 你这个设计重构怎么量化?

A: 这个很难用系统标准化,更多的还是要依赖TL的专业能力进行评分,但即使是这样,也比以前什么都没有完全黑盒要强。至少在传达一个信息,我们鼓励好的设计,鼓励不断地重构优化。

Q:我们现在的业务需求已经在堆积,一线同学根本没有时间去做重构优化。

A:这个问题开篇其实已经说过了,你是要不断地裹挟在业务需求和烂代码里面呢,还是花时间improve,然后更快地支持业务。这个权衡应该不难做,关键是要看决心和能力。对于很多业务,我没有看到推迟几天上线就会影响业务格局的业务场景,所以作为技术团队,我们就应该在User Story之外,加上我们的Technical Story,把完成业务需求和系统重构都当成我们的核心任务。

如何量化考核技术人的 KPI?的更多相关文章

  1. 如何量化考核技术人的KPI?

    对技术人来说,技术是成长的“核心”.然而,在实际工作协作中,技术的重要性常常被业务所掩盖,造成先业务后技术的现象. 针对这个痛点,阿里高级技术专家张建飞提出了自己的解决思路,希望能与大家一起探讨交流. ...

  2. <阿里工程师的自我素养>读后感-技术人应该具备的一些基本素质

    一.技术人具备"结构化思维"意味着什么? 1.什么是结构化思维? 结构化思维:逻辑+套路. 表达要有逻辑,所谓逻辑是指我们的结构之间必须是有逻辑关系的. 四种组织思想的逻辑关系 : ...

  3. 技术人自己的KPI

    为什么需要技术KPI 在业务技术团队,有一个不好的趋势,就是团队越来越业务,越来越没有技术味道.每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目......唯独少被谈及的是技 ...

  4. CSDN:你认为一名优秀的技术人应该具备怎样的素质?

    CSDN:你认为一名优秀的技术人应该具备怎样的素质? 王晶昱:我个人认为,符合这个世界要求的就是优秀的.在目前这个时代,我认为一个优秀的技术人员的特质可能是: 兴趣驱动,兴趣是最好的老师,写程序本身就 ...

  5. [转帖]Oracle 裁员史:技术人死于重组,卒于云计算

    Oracle 裁员史:技术人死于重组,卒于云计算 https://www.infoq.cn/article/tm-mcdHCPCI4eEwr6dbY 大厂裁员 我妈妈也总担心我没工作了 怎么还房贷 田 ...

  6. 一个技术人,最重要的是:极客精神(好奇心 + 探索欲)(新de代码)

    一个技术人,最重要的是:极客精神(好奇心 + 探索欲) 初到社会,面对众多的IT企业,我们是陌生与好奇的,认为所有企业都是管理一流并且高大上等的.然而工作多年以后你会发现,国内的IT企业环境良莠不齐, ...

  7. [转帖]技术人眼中的Facebook Libra

    技术人眼中的Facebook Libra https://www.jianshu.com/p/ddc733077749 比特币 以太坊 EOS Libra 0.8352019.07.01 14:15: ...

  8. 我花了2个月时间,整理了100篇Linux技术精华,技术人必看

    一个以技术为立身根基的教育机构做出来的微信号,干货程度会有多高? 马哥Linux运维公众号运营五年,从一开始的定位就是给技术人分享加薪干货的地方.这五年里,公众号运营最重的任务就是做内容.内容并不好做 ...

  9. IT技术人,“三十而已”

    最近电视剧<三十而已>热播,我家的电视机自然也是被霸屏,我还是跟着妹纸看了看,开头和结局完整看完,中间看了一点,大部分都是在微信公众号上通过别人的文章看完的.我个人也已经30+了,今天也和 ...

随机推荐

  1. bzoj2463: [中山市选2009]谁能赢呢? 博弈

    小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能 ...

  2. poj1054 The Troublesome Frog 瞎搞。

    连接:http://poj.org/problem?id=1054 题意:就是一个格子里一条线上最长有几个青蛙(青蛙间隔相同)~.但是其实青蛙的起点重点必须是在外面. 直接写一个搜就是. #inclu ...

  3. 本田CB750型加速时发动机工作间歇

    本田CB750型加速时发动机工作间歇 [故陣现象]近期以来,该车发动机工作无力,加速时发 动机工作不连续. [原因分析]起动发动机试验,发动机起动困难,怠速时 抖动严重,加速反应缓慢,工作间歇,声音沉 ...

  4. Eclipse CDT 配置C /C ++ 标准库 (UBUNTU 12 )

    http://blog.csdn.net/wudiwo/article/details/7682320

  5. 201621123010 《Java程序设计》第2周学习总结

    1.本周学习总结 Java有基本数据类型(类似c)和引用数据类型(不同于c)两种数据类型. Java是面向对象的语言,引用类型变量存放指向对象的引用,而不是该对象本身.因此判断两对象值是否相等时,需使 ...

  6. myeclipse单步调试

    如何进行myclipse的单步调式与跟踪?希望大虾们详细点,多谢. 打断点,然后运行,进debug试图,按F6执行一行,按F5是钻进去执行 追问 朋友,能详细点吗? 本人是初学 回答 如图 如若成功请 ...

  7. 前端 —— SVG

    0. 简介 SVG:可缩放矢量图形: SVG 是代码,通过浏览器的解析而渲染成一种图形: 可缩放矢量图形是基于可扩展标记语言(XML),以描述二维矢量图形的一种图形格式,由万维网联盟( World W ...

  8. spring注解-@Autowired。@Resource。@Service

    Spring的@Autowired注解.@Resource注解和@Service注解 什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: ...

  9. hibernate映射xml文件配置之一对多,多对多

    一对多配置 [1]班级和学生模型 --->班级可容纳多个学生 --->学生只能属于一个班级 [2]一对多配置中的关系维护(inverse) --->一端放弃关系的维护 ---> ...

  10. LG3781 [SDOI2017]切树游戏

    题意 题目描述 小Q是一个热爱学习的人,他经常去维基百科学习计算机科学. 就在刚才,小Q认真地学习了一系列位运算符,其中按位异或的运算符\(\oplus\)对他影响很大.按位异或的运算符是双目运算符. ...