文档章节

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

吴伟祥
 吴伟祥
发布于 2018/11/19 13:41
字数 2121
阅读 40
收藏 0

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

 

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

 

一、为什么需要技术KPI?

 

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

 

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

 

1、将就的代价

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

二、技术KPI的量化

 

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

 

1、技术KPI

 

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

 

  • 业务贡献:包括需求把控、业务项目和业务创新。

  • 技术贡献:包括设计重构、技术影响力、Code Review、创新提效和代码质量。

  • 团队贡献:包括招聘、新人培养和团队氛围。

 

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

 

应用质量:

 

  • 你负责或者共同负责的应用质量分(可以从代码重复率,圈复杂度,分层合理性等维度考察)。

  • 你做了哪些提升应用质量分的工作。

 

设计重构:

 

  • 我在客户通项目中,对CRM销售域进行了领域建模和设计,并且抽象合理。

  • 我发现Infrastructure中Package分类不合理,进行了重新设计并重构完成。

  • 我发现现在系统中错误码比较混乱,我梳理制定了新的错误码规范,并完成了代码重构。

 

技术影响力:

 

  • 在团队内分享10篇干货,点赞数1000。

  • 团队分享策略模式,得到同学好评 。

  • 我接受邀请,在行业会议上分享了SOFA架构。

 

Code Review:

 

  • 我在Review某某代码的时候发现,可能存在线程不安全的隐患。

  • 我在Review某某代码的时候发现,存在设计不合理的现象,此处使用责任链可以很优雅地解决问题,并具备一定的扩展性。

 

创新提效:

 

  • 我发现本地测试启动PandoraBoot比较浪费时间,所以写了一个TestContainer大大提升了自测效率。

  • 我发现有一些Boilerplate代码不需要写,所以对乐观锁、分页进行了Annotation支持,简化了代码。

  • 在某个项目或者技术点上面,我产出了一篇专利:基于领域模型的业务配置化。

 

代码质量:

 

  • 提测后的Bug数,线上故障数(系统可以提取,不用自己填写)。 

  • 我完善了某某模块的单元测试,并多次在自动化回归中发现问题。

 

2、KPI答疑

 

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

 

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

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

 

Q2: 您说的设计重构怎么量化?

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

 

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

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

 

关于技术童鞋的量化考核,你有哪些好的建议或想法,欢迎在留言区交流,一起探讨。

本文转载自:https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650772331&idx=1&sn=26529817ea97fdbbf54af9b...

吴伟祥

吴伟祥

粉丝 32
博文 492
码字总数 285160
作品 0
泉州
后端工程师
私信 提问
讨论问题:团队绩效考核如何制定?如何设置奖惩?

从企业、组织角度来看,团队绩效是以团队的项目绩效作为基础。而确定项目绩效,要在项目开始之前先确定项目绩效目标,待项目结束时来评估是否达成了既定的绩效目标。首先,企业应该建立完备的...

John
2017/11/03
0
0
如何解决开发人员的工作无法量化的问题

据江边望海了解很多互联网公司都会执行Kpi考核。一线的开发人员的Kpi工作量化不仅困扰这公司的HR也困扰着开发人员自己。月底的时候如何通过有效的数据分析每个开发人员的工作内容是一个很头疼...

江边望海
2015/07/18
874
3
如何量化考核技术人的 KPI?

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

技术小能手
2018/08/20
0
0
管理|企业如何制定KPI指标?看这一篇文章就够了!

我在之前的一篇文章管理|KPI,互联网企业管理的神器简单说明了我们企业KPI体系的使用场景,今天我来集中聊聊KPI这个事。 注:部分知识点来源于《宁向东的清华管理学课》。 一、什么是KPI? ...

小怪聊职场
2018/03/18
0
0
阿里高级技术专家张建飞:如何量化考核技术人的 KPI?

云妹导读:对技术人来说,技术是成长的“核心”。然而,在实际工作协作中,技术的重要性常常被业务所掩盖,造成先业务后技术的现象。 针对这个痛点,阿里高级技术专家张建飞提出了自己的解决...

阿里云科技快讯
2018/08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue.js-详解三大流行框架VUE_快速进阶前端大咖-Vue基础

作者 | Jeskson 来源 | 达达前端小酒馆 Vue概述: MVX模式简介,Vue框架简介,Vue.js的安装与使用。 Vue基础语法: 实例对象,生命周期,模板语法,计算属性,methods方法 Vue渲染: 列表渲染...

达达前端小酒馆
今天
4
0
OSChina 周五乱弹 —— 匹诺曹也是韩国人

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @watergood :分享海先生的单曲《烟花巷》 《烟花巷》- 海先生 手机党少年们想听歌,请使劲儿戳(这里) @Cyber-Pan :已经很久没有十点前下过...

小小编辑
今天
8
1
Snack3 之 Jsonpath使用

Snack3 之 Jsonpath使用 一、 Snack3 和 JSONPath 介绍 Snack3 是一个支持JSONPath的JSON框架。JSONPath是一个很强大的功能,也可以在Java框架中当作对象查询语言(OQL)来使用。 <dependenc...

刘之西东
今天
5
0
7. 彤哥说netty系列之Java NIO核心组件之Selector

<p align="right">——日拱一卒,不期而至!</p> 你好,我是彤哥,本篇是netty系列的第七篇。 简介 上一章我们一起学习了Java NIO的核心组件Buffer,它通常跟Channel一起使用,但是它们在网络...

彤哥读源码
昨天
21
0
在Jupyter notebooks 中运行GRASS GIS

在Ubuntu16.04中,首先安装jupyter: python3 -m pip install --upgrade pippython3 -m pip install jupyter 然后创建一个sh脚本: # directory where GRASS GIS lives# GRASS GIS 的安装......

ddd口木呆
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部