谈谈对码农们的绩效考核
发布时间:2017-04-21, 11:27:08 分类:默认分类 | 编辑 off 网址 | 辅助
正文 2063字数 827,769阅读
谈谈程序员的绩效考核今天一个朋友问我程序员应该怎么考核。我想了想,总结了下我理解中一般开发人员的绩效考核。
考核的意义
首先一个前提是,考核是手段不是目的。我一直觉得对一个团队来讲,有两个基本目标:一个是完成自己承担的工作任务,一个是提升整个团队的能力。这两个目标相互促进,进而实现螺旋式的上升发展。考核只是为了更好的了解工作情况和团队情况、更清晰更准确的认识剖析自我,为改进和提升做准备的技术手段。
所以开发人员的考核对团队来说,有两层意义:既是团队成员的绩效奖金荣誉的一个数据支持,也是团队整体建设进一步发展的依据。
对个人来说,也有两个意义:横向可以与团队内其他成员做对比看到差距继续努力,纵向也可以跟自己的不同时间段做对比看到进步的足迹。
从设计上讲,考核应该跟公司的职级职位序列和绩效奖金等制度挂钩,不同的层次、不同的岗位,应该有一些不同的要求和考核方式,最终把考核的结果通过某些奖惩形式实施下来。没有奖惩激励的考核,只是纸上谈兵的空洞形式。
考核的原则
程序员的考核一般可以从研发管理过程、项目与部门效益、公司考勤制度、主观考核评价指标等组成。因为程序员经常无偿加班(没办法,难道不是事实么?),公司考勤之类的制度应该不怎么用得到程序员的头上,剩下的主要也就是过程、效益和评价了。
考核的原则我觉得有如下几个:
1. 主客观相结合
一般来说,我们希望可靠本身越客观越好。但是制定指标收集客观数据,分析整理,对于IT研发过程来说,都是很复杂的事情。特别是研发本身不规范,技术能力差,不成熟的团队,变数大、流程不标准,很多事情难以度量。主观的一些东西就不可避免。但是,主观的考核应该尽量少,避免出现团队中任人唯亲之类的影响团队整体的现象。
2. 合理量化
对于研发过程中的可以度量的数据,应该尽量合理的量化。度量的过粗,大家都差不多,效果不明显;度量的过细,对收集指标数据要求比较高,甚至对研发本身会产生一定的影响。所以,指标的量化应该结合实际的研发流程,做出比较经济的选择。
3. 双向和多向评价
对于上级对下级可以直接给予评价的行为,下级应该也能集体给上级打分。对于主观考核部分,应该做到360度测评,对某个开发人员的评价,可以先由开发人员自己给自己的主观评价部分打分,再由主管、团队内同事review评价,综合确定最终评价。
4. 要研发过程还是业务结果?
考核程序员的侧重点应该放在过程上,而不是业务的结果上。业务的结果应该由管理业务的人负责。简单的说,谁拍板谁负责(或谁受益谁负责)。所以,我一直觉得苦逼的程序员应该对自己的劳动本身负责。程序员在自己的一亩三分地做好工作,写得好代码,改得快bug,产出多,质量高,就是一个好程序员。当然对技术leader、architect的要求要放高一些。当然,业务的好坏一般关联到公司和部门的performance,这可是奖金和绩效的来源,理所当然跟程序员有关系,但不应该是考核的核心。对一个好的马龙(一般程序员,不上升到某种所谓的高度)来说,研发的本职工作才是作为一个程序员的核心价值。这也正是前面说到的不同的职位不同序列应该有不同的要求和考核方式。
5. 发展阶段与侧重点
当然,公司或团队本身的发展阶段,也决定了对程序员考核的侧重点不同。
对于一个能力一般偏下、经常延期、积累差、不规范、处以还没有实现温饱的团队,考核的重点应该是提升团队研发能力,按时完成任务。
对于一个马马虎虎按时完成任务,但是不规范、没合作精神、没动力的团队,考核的重点应该是引导其行为,走向规范化,实现团队协作性的整体提升。
对于一个有一定的积累,相对能力还不错,已经能很好的完成工作任何的团队,考核的重点应该是如何进一步的提高研发水平和质量,实现标准化和流程化…….
指标的制定
具体怎么制定考核指标,我就只说说思路吧。
1、 研发过程
参与了多少项目,写了多少代码和文档,多少测试代码,完成多少模块和用例,解决了多少问题,bug率多少,reopen的bug率多少,多少次工作交付延期,多少次工作失误,内部做了多少次技术交流分享。。。等等在研发过程中的工作度量
2、 业务结果
参与的项目给公司带来多少收益,个人工作部分分别占总任务量的比重,计算出来个人给公司带来多少收入。。。参考部门的绩效和平均每人的绩效水平
3、 制度考勤
迟到早退啦,请假旷工啦,等等
4、 主观评价
同级的同事对其评价,上级领导的评价,工作态度,团队精神,技术水平,创新精神,主动性,责任心等等。
类似这些,结合你们的实际情况看哪些数据可以作为考核的指标。然后再分别量化到一定的粒度。接着确定每个指标的比重,怎么统计汇总。最后做一个考核制度文档。
考核的执行
有了考核标准和方式以后,就剩下执行了。执行的力度决定了考核制度是不是能起到作用。如果执行得好的话,可以边执行,边收集数据,改进考核方式。没有强有力的推动,不断的收集数据、check && review,考核就会仅仅流于形式了。
(支付宝)给作者钱财以资鼓励 (微信)→
有过 15 条评论 »
但是大多程序员都还是需要通过一些形式来帮助他们成长的。
没有量化,就没有改进。
某软件公司的业务是制作互联网应用系统,老张是该公司开发项目经理。由于程序员工作难以量化,公司对程序员的评价一直是由开发经理根据感觉得出的。老张希望进行一些改进,于是在老总的支持下,制定了程序员的周汇报机制:程序员每周五下班前提交周报,填写每日的工作情况。但在试行的两个月中,老张发现每个程序员都填得很简单,而且几乎没人能在周五记得周一的事情,根本不能为量化考核提供依据。在发现这种情况之后,老张强调不能简写周报,否则退回,但仍然收效不大。
程序员们有自己的理由,认为工作难以量化,比如同样是做两个功能模块,有复杂的有简单的,总不能去统计代码行数。所以,填写工作周报纯属浪费时间,没有任何意义。
于是,周报成了摆设,老张还是不能了解程序员的详细工作进度。面对日渐推后的项目进度,老张决心要改变这种情况。
老张应该如何去改变这种情况?
案例分析
本案例看起来是关于绩效考核的,但是从更深层来看是关于软件开发整体管理水平的。软件开发项目延迟现象非常严重,在中国更是如此。大家都知道其主要原因是软件开发的项目管理问题,这也正是软件开发中最困难的。近几年来,软件工程、CMM、软件蓝领等概念在中国炒得沸沸扬扬,但是目前还没有见到明显效果。更令人担忧的是,在我国的软件公司,通过CMM评估往往是仅仅用来宣传的,而没有真正起到规范企业开发流程的作用。即使是用友、东软等通过CMM3级评估的国内顶级软件公司也是如此。( 栏目合作单位:项目管理者联盟www.mypm.net)
各抒己见
老张
老张的考核方式存在问题,工作报表容易引起程序员的反感。对于脑力劳动成分高的科研技术类项目,应该实行结果管理而不是行为管理,比如上文有些程序员提到代码的自动化、模块的难易等。因此,最好实行目标管理,事先对每个程序员的工作进行规划,将每个可考核的功能完成时间设为考核时间,然而采用积分制进行程序员水平整体考核。
AllanYu
我认为,对项目组成员的任务安排的合理化程度才是最重要的。跟技术人员的一些冲突是不可避免的,但是一定要控制在一个“度”内,如果是和大部分的项目相关人员都发生冲突,那作为项目经理就要自己反思了。至于高分、低分的问题,关键还是由项目经理根据对项目组成员的任务安排的合理化程度来决定。
papachong
由此带来的问题还包括:项目经理如何进行考核,对其综合素质如何进行评分。如果是认真负责的项目经理,则会导致跟技术人员的一些冲突,如果是管理水平一般的项目经理,则会做好好先生,都是高分。
lucy
考核是为了激励,要基于如何激励来设计考核制度。这样单单用工作报告肯定是不行的,摆明了是在监工,当然技术人员不乐意接受。你换个角度,如果你是程序员,你希望公司如何激励你、考核你?
Lear
作为项目经理,首先应该对自己搞的这个项目比较了解,在此基础上将该项目分成几个子项目,然后将各子项分给各个程序员,并定下时间限制,具体工作由程序员自主进行,同时配合一定的奖惩措施。并且平时还应该和职员多交流,对他们的情况有大致了解,特别是对那种有较高号召力的职员。
sam_zxh
作为部门经理,首先应该了解业务,了解员工的工作能力情况,这样才可能制定出合理的进度计划,然后根据员工的个人能力派工。
专家点评:项目管理要有科学方法
在本案例中,老张试图加强项目管理的努力是值得肯定的,但他应该注意加强项目的沟通管理,并改进项目的计划、监控、考评等工作。
■ 加强沟通:项目的成功需要全体成员的努力,项目管理的成功也同样离不开项目团队的积极参与。项目沟通是项目管理的重要内容,有效的沟通能使项目团队的认识一致,并努力实施计划、共同推进项目。项目经理应做好沟通计划,加强沟通工作,让团队积极参与计划、监控、考评等项目管理工作;
■ 改进计划:项目计划应尽可能由项目团队共同制定,以确保计划的科学性,并充分调动项目成员的积极性。在制定进度计划时,除了要合理安排任务的人力、排序、历时外,还应注意按阶段对任务进行科学的粒度划分;
■ 有效监控:对项目实施情况进行及时有效的进度监控,需要建立一整套反馈、检测的程序和制度,并根据任务的重要性、难度等因素合理安排监测周期。此外,还要注意结合详细严密的进度计划和科学的考评激励体系,并做好沟通工作。
■ 考评与激励:科学有效的考评和激励是项目成功的关键要素。在进行绩效考评前,应针对项目特点,设计好考评指标和权重,并注意编制合理、可操作的考评标准与规范,从而建立起科学、可行的绩效考评与激励体系。考评体系要有团队成员参与制订,并根据实际情况不断优化。
专家介绍
郜宝林,资深IT人士,清华大学软件工程硕士。主持和参与过银行、证券、保险、信托、财务公司及商业、制造业等行业近百个企业信息系统的建设,长期担任国内著名软件公司中高级管理职位,目前负责主持研发面向金融行业的解决方案。