技术人自己的KPI
为什么需要技术KPI
在业务技术团队,有一个不好的趋势,就是团队越来越业务,越来越没有技术味道。每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目......
唯独少被谈及的是技术本身。此处并不是说业务不重要,而是说理解业务和把控业务需求是技术人员的base,而不是全部。
将就的代价
这种技术味道的缺失对技术团队来说是非常可惜的,也不利于技术人员的成长和发展。因为很难想象一个没有技术追求的团队能开发出一个健壮的、可维护性好、可扩展性好的系统。相反,这种业务代码的堆砌,从短期看也许是“较快”实现了业务需求,但是从长远来看,这种烂系统的增加会极大的阻碍业务的发展,形成一个个的黑洞应用(吃人不吐骨头),而工程师被裹挟在业务需求和烂系统之间,疲于应对,心力交瘁。

这种将就将导致系统腐化堕落,技术债越垒越高,丑陋的代码疯狂滋长,像肿瘤一样消耗你所有的能量。就像Robert C. Martin说的“不管你们有多敬业,加多少班,在面对烂系统时,你任然会寸步难行,因为你大部分的精力不是在开发需求,还是在应对混乱。”
作为技术人员,我们不能忘记我们技术人的首要技术使命是治理软件复杂度。
技术Leader的失职
造成这种局面,我们的技术管理者,我们的TL要负有主要责任。说的重一点,是工作上的失职,这种失职主要体现在两个方面,一个是技术不作为,另一个是业务不思考。
技术不作为
现在很多的技术同学,一旦晋升到TL岗位,就开始脱离技术工作,俨然一副道法自然的模样。试想一下,如果一个TL从来不关注技术,从来不写code,对技术没有热情也不学习,甚至其本身技术就很烂,那么又怎么能指望在此TL领导下的团队能有技术味道呢?!
所以当阿里技术副总裁玄难提出要看P8的代码开发量(此处应该给玄难的务实点个赞)的时候,虽然很简单粗暴,但某种程度上的确可以反应出很多TL脱离技术工作的现实。也是在明确传达一个信号——即我们要回归技术本身,因为我们不需要这么多“高高在上”,“指点江山”的技术Manager,而是需要能真正深入到系统里面,深入到代码细节,给团队带来实实在在改变的技术Leader。

业务不思考
现在很多的TL每天都混迹在各种会议上,很忙,做着各种沟(扯)通(JI)协(BA)调(淡)的事情,可是我们真的需要这么多的会议、这么多的沟通吗?
不是说沟通不重要,只是我们现在的会议太多了,就我个人的经验来说,很多的会议都是低效无意义的。所以TL需要更多的独立思考,而不是人云亦云。
雷军说过:“永远不要试图用战术上的勤奋,去掩盖你战略上的懒惰。”,这句话用在形容大部分的PD(产品经理)是再贴切不过了,所以,我宁愿PD们“无为”,总比到处乱抓,搞出很多无价值的产品要好。因为很多系统上的复杂性都是因为这些乱七八糟无意义的需求造成的。
所以给PD同学的意见是,请一定要深入理解业务,一定要深度思考,不要退化成一个PPT Designer和业务需求的传话筒,不要只停留在写PRD、画Demo,要用系统化的思维来规划产品、来解决业务问题,从而赢得技术人员的尊重。
技术人员的疲于奔命,内因上是由于上面分析的团队技术味道的缺失,外因上主要是PD的乱作为。
所以我们的TL也必须要深入思考业务,严格把控PD YY出来的“客户需求”,把这些伪需求,无价值需求挡在门外,防止它们侵占团队本来就很有限的技术资源。从而,才有更多的精力投入到系统优化和复杂度治理上去。
技术KPI的量化
玄难说:“人的本性都是自私的,趋利的”,所以提升技术氛围,打造工程师文化不能仅停留在口头上,需要一定的强制手段,比如和技术人员的利益进行绑定,这种绑定就需要我们能对技术贡献进行一个相对公平的分解和量化。做过晋升评委的同学应该都知道,今年在同学的Profile里面多了一个ATA文章的参考,这也是对技术影响力量化的一种尝试。
技术KPI
基于此,我将技术人员的KPI分解为业务贡献,技术贡献和团队贡献三个大的部分,其详细内容如下。
业务贡献:包括需求把控,业务项目和业务创新。
技术贡献:包括设计重构、技术影响力、Code Review、创新提效和代码质量。
团队贡献:包括招聘、新人培养和团队氛围。
那么技术贡献中的这几个维度要怎么理解呢,解释我就不多说了,就用我们工作中的一些案例来描述一下吧。

关于技术KPI的答疑
对于上面的KPI大部分的技术同学是表示认可的,当然质疑的声音也很多,我这里挑一些典型的回答一下。
Q: 技术KPI的提出,会不会导致技术同学只关注技术不做业务项目了?
A: 关于绩效,肯定是综合看业务贡献,技术贡献和团队贡献。但是作为一个重要参考和风向标,技术KPI是有积极意义的。
Q: 你这个设计重构怎么量化?
A: 这个很难用系统标准化,更多的还是要依赖TL的专业能力进行评分,但即使是这样,也比以前什么都没有完全黑盒要强。至少在传达一个信息,我们鼓励好的设计,鼓励不断的重构优化。
Q: 我们现在的业务需求已经在堆积,一线同学根本没有时间去做重构优化
A: 这个问题开篇其实已经说过了,你是要不断的裹挟在业务需求和烂代码里面呢,还是花时间improve,然后更快的支持业务。这个权衡应该不难做,关键是要看决心和能力。对于一些成熟的业务来说,我没有看到推迟几天上线就会影响业务格局的业务场景,所以作为技术团队,我们就应该在User Story之外,加上我们的Technical Story,把完成业务需求和系统重构都当成我们的核心任务。
作者简介:张建飞,阿里巴巴高级技术专家,2007年云南大学计算机应用工程硕士,12年软件设计和应用架构经验。热衷于复杂业务分析和代码复杂度治理,在外企工作6年,阿里工作5年。
本文作者:张建飞
本文为云栖社区原创内容,未经允许不得转载。
技术人自己的KPI的更多相关文章
- 如何量化考核技术人的KPI?
对技术人来说,技术是成长的“核心”.然而,在实际工作协作中,技术的重要性常常被业务所掩盖,造成先业务后技术的现象. 针对这个痛点,阿里高级技术专家张建飞提出了自己的解决思路,希望能与大家一起探讨交流. ...
- 如何量化考核技术人的 KPI?
如何量化考核技术人的 KPI? 原创: 张建飞 阿里技术今天 阿里妹导读:对技术人来说,技术是成长的"核心".然而,在实际工作协作中,技术的重要性常常被业务所掩盖,造成先业务后技术 ...
- 【腾讯Bugly干货分享】总结一个技术总监的教训和经验
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/Ry-G0Nikh6m-h3ZVC2cLyQ 导语 20 ...
- 自动化测试KPI考评的一种方法
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6856204.html 众所周知,在IT ...
- 自动化测试系列:自动化测试KPI考评的一种方法
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6856204.html 众所周知,在IT ...
- 突破技术管理,IT人中年危机变契机
突破技术管理,IT人中年危机变契机 中生代技术 Yesterday 作为一个老技术人,今天不聊技术,就聊点技术人员职业发展的事情:对技术管理岗位的认知,比如技术总监. 先贴一张技术人员职业发展路线图, ...
- IT部门的KPI该如何制定?
导语:信息化成本.系统开机率.网路不断线时数.系统运行速度.软件开发时间.用户问题处理反应时间.系统品质.用户满意度--哪些指标是可被管理的,能指引IT部门成为一个有价值的.为企业带来效益的部门呢? ...
- <阿里工程师的自我素养>读后感-技术人应该具备的一些基本素质
一.技术人具备"结构化思维"意味着什么? 1.什么是结构化思维? 结构化思维:逻辑+套路. 表达要有逻辑,所谓逻辑是指我们的结构之间必须是有逻辑关系的. 四种组织思想的逻辑关系 : ...
- 如何写好技术文档——来自Google十多年的文档经验
本文大部分内容翻译总结自<Software Engineering at Google> 第10章节 Documentation. 另外,该书电子版近日已经可以免费下载了 https:// ...
随机推荐
- Redis单机和集群配置(版本在5.0后)
摘抄并用于自己后查 单机版的配置: 1. 下载redis压缩包,然后解压缩文件(tar xzf): 2. 进入解压后的redis文件目录,编译redis源文件(make,没有c环境要gcc): 3. ...
- LuoguP3338 [ZJOI2014]力
题目描述 给出n个数qi,给出Fj的定义如下: \[F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_i q_j}{(i ...
- 【默默努力】h5-game-heroVSmonster
先放下作者大大的项目地址:https://github.com/yangyunhe369/h5-game-heroVSmonster 然后游戏的效果为 截动图的按键与游戏按键应该冲突,我就截几张图片了 ...
- java内存模型JMM理解整理
什么是JMM JMM即为JAVA 内存模型(java memory model).因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且 ...
- LUGOU P1092 虫食算
传送门 解题思路 刚开始按yzy神犇给的方法写,就是每次要把能算出来的都算出来,结果因为太菜写挂了..后来直接爆搜水过.. #include<iostream> #include<c ...
- mybatis 一对多和一对一写法注意事项
<resultMap id="ChartResultMap" type="com.qif.dsa.ucenter.planinfo.entity.ChartDate ...
- React弹窗组件
原文地址 小寒的博客 这里的弹窗泛指所有的弹出组件,这些组件不受页面其他UI布局影响,处于DOM结构的顶层,绝对定位在body元素下. 这个特殊性也给它的开发提出了特殊的要求. react新版本中的c ...
- ios与android设备即时语音互通的录音格式预研说明
本文虽属原创,但是内容都是来自于网络,参考了大家的微博,以及论坛的总结. 在做语音对讲的时候,将会碰到录制语音格式的问题,因为要考虑自己开发设备的支持的格式,还要考虑其他设备操作系统的支持的格式,以及 ...
- Linux RHEL7(CentOS7源) 安装 Nginx
安装步骤 1.添加 Nginx 源地址 CentOS7 默认没有提供 Nginx 的源,但 Nginx 自己提供了 sudo rpm -Uvh http://nginx.org/packages/ce ...
- Struts2接受请求参数三种常用方法
一 接受请求参数主要有三种:属性驱动 对象驱动 模型驱动<model Driven> 方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名 ...