程序员的工作性质比较特殊,既不能像销售那样直接和业绩挂勾,也不能像工厂那样按工时来衡量。因此对程序员怎么做绩效考核,一直都是每个管理者头疼的问题。
以下几种是对程序员绩效考核不太妥当的方法,强烈不推崇,建议每个管理者要避而远之。
— 1 —
按代码行数来考核
程序员这个职业,如何做好考核是一个难题,我见过太多的初级管理者,用代码行数来考核,还美其名曰,写了那么多代码就是干活多,高绩效有问题么?
然而,通过代码量来考核就是在考验人性,比如有些同事为提升代码量,《重构》那本书白读了,代码不封装了,if else 满天飞了;本来就有合适的第三方类库使用,偏要自研一个质量和可靠性差的轮子,诸如此类等等。
既然用代码行数来考核不正确的,但是代码又是程序员重要工作结果之一,又该如何评价呢?
我的建议是如下:
1、冒烟测试(送测模块关键usecase)通过率。
2、是否按约定分层、结构清晰合理。
3、代码可读性、复用性和可维护性指标来考核。
4、对程序在各种异常错误情况下的容错处理。
— 2 —
按加班时长来考核
据我所知,很多创业公司包括大公司,都喜欢用加班时长来考核。
为什么会这样呢?
我认为大部分老板很焦虑,看着员工正常上下班感觉吃了血亏了,老板们开个会发现人家公司都 996,马上让传话筒 HR 给全体员工发邮件 996 搞起,结束时间不定,当然还有内部团队协作效率低下等各种问题,白天是开会时间讨论各种战略、中台、用户痛点、技术驱动产品或业务,晚上才是写代码的时间。
这种情况下,会导致很多程序员磨洋工,白天打酱油,晚上撸代码。晚上是最疲劳的时候,撸出来的代码质量可想而知。
— 3 —
赏罚不分明
我认为,赏罚不分明,就是对那些好好干活出成绩人的最大不公平。
人人都知道的不合理规则,但是在职场中频频发生。
比如有读者跟我说,他的领导和他说:“你最近表现不错”,今年 2 月给你加薪,然而这都 4 月底了,为此他多次询问领导此事,回复就是你再等等,跟着我混不会让你吃亏的。
比如我记得我之前的一位领导,对于优异绩效的同事区别对待,有的加薪有的就是不给加,我一直好奇领导为什么这样做,后来才明白其中的道理,领导是空降的,他想通过这种手段逼走老员工,巩固自己的地位。
当然,我也见过 2 位同事都整了线上 bug,都是 P0 的那种,结果其中一位年底还被评为优秀员工,另外一位被离职了。
— 4 —
写在最后
在《驱动力》理论中,把驱动力分成三种,第一层是生理欲望驱动;第二层是奖惩驱动;第三层是内在驱动。
绩效考核位于这个模型的二层,是奖惩驱动的一种应用,它简单、直接、有效,同时副作用也明显。而在精益和敏捷理念中,希望的是能够更多的发挥员工第三层的内在驱动力。在敏捷宣言中也首先强调个体和交付,而不是流程和工具。
总之,对程序员来说,从工作效率,工作质量,个人创新能力来考核会更能突显出价值。建议管理者可以从以上3点重点去考察。