在正式列出考核标准之前请先容许我讲下关于编程这个行业:
懂点编程的人都知道,这个行业是一个创造性、思维性的行业。一个任务的工作量多与少是没有一个衡量标准的,原因就是软件功能的实现结果,根本就没有一个最好的标准。以工作时间做衡量标准可以吗?
举个例子:同样的工作相同实力的程序员来做同一个工作,有的人一天就能完成,有的人要花两天,还有的要花三天,四天来完成。花一天完成的程序员做了功能上的实现,他是完成了,对绩效考核来说,是满分的。但是,比他花多时间的程序员呢?他们除了花在功能实现上,还花了很多时间在代码优化及界面操作设计上。它的绩效也是满分。那这两种程序员的工作量真的一样吗?谁都知道不可能一样。花时间长的程序员可能为了防止以后同样的工作的再次发生已经做的多方面的考虑。相比之下他的却节省了时间。
绩效考核框架是死的,而程序员的任务是活的,用一个死的框架套住一个活的思想,程序员们只为绩效的要求而实现,长久下去,我们生产出的只是一个标准化的产品而已。用简单思想框架来束缚程序员的思维创造性,这是拖累研究,极易打击程序员的研究主动性。
下面的提出一种程序的考核标准。
序号 | 标准 | 说明 | 评分标准 |
1 | 错误率 | 每千行程序20个错误以下(包含20个) | 5 |
每千行程序21-25个错误 | 4 | ||
每千行程序26-30个错误 | 3 | ||
每千行程序31-35个错误 | 2 | ||
每千行程序36个错误以上(包含36个) | 1 | ||
2 | 新技术使用情况 | 大量使用新技术, 并且解决了传统技术无法解决的问题; | 5 |
大量使用新技术,解决了传统技术难以解 决的问题, 大大提高了工作效率; | 4 | ||
使用部分新技术,替代了部分传统技术, 一 定程度上提高了工作效率; | 3 | ||
使用了少量的新技术,替代了了少量的传统技术; | 2 | ||
没有使用任何新技术,仍然用传统技术解决问题; | 1 | ||
3 | 程序编码的规范性 | 编码非常规范,无可挑剔,同时又对公司制度规范提出了改进意见; | 5 |
编码非常规范,无可挑剔; | 4 | ||
编码规范,不符合规范之处很少; | 3 | ||
编码基本规范,但不影响对程序的理解; | 2 | ||
编码存在较大的不规范性,并且对程序理解造成了比较严重理解误差; | 1 | ||
4 | 文档编写的规范性 | 文档书写按照公司的相关模板,规范、美观,无可挑剔; | 5 |
文档书写按照公司的相关模板,规范, | 4 | ||
文档书写基本规范,但美观性上有待改进; | 3 | ||
文档书写的规范性、美观性上都有待改进; | 2 | ||
文档书写的规范性、美观性上都存在很大的改进空间; | 1 | ||
5 | 及时性 | 能够在预定时间的80%内完成; | 5 |
能够在预定时间的90%内完成; | 4 | ||
能够在预定的时间内完成; | 3 | ||
超过预定时间的10%才完成计划; | 2 | ||
超过预定时间的20%才完成计划; | 1 | ||
6 | 编码注释的完整性 | 编码注解完整、清楚、容易被人理解,不会造成理解方面的偏差; | 5 |
编码注解完整、清楚、比较容易被人理解,但会引起少量的理解偏差; | 4 | ||
编码注解完整,比较清楚,但会引起部分理解的偏差; | 3 | ||
编码注解比较完整,但有部分代码没有注解; | 2 | ||
编码注释不完整,大量的编码没有注释,让人难以理解; | 1 |
有了以上标准,就有了一种标尺的感觉。但来看一下它的实效性,如果咱们按以上标准来衡量每个程序员的工作,如程序中的一个简单模块。有复杂的有简单的,总不能去统计代码行数,看看哪一行错了,然后记录下来再告诉程序员这里错了!再让他改吧?到月末再把所有的统计报告汇总?考核是为了激励,要基于如何激励来设计考核制度。这样单单机械统计肯定是不行的,摆明了是在监工,当然技术人员不乐意接受。你换个角度,如果你是程序员,你希望公司如何激励你、考核你?
对于脑力劳动成分高的科研技术类项目,应该实行结果管理而不是行为管理,比如代码的复杂程度、模块的难易等。因此,最好实行目标管理,事先对每个程序员的工作进行规划,将每个可考核的功能完成时间设为考核时间,然后采用积分制进行程序员水平整体考核。
编号 | 事件类型 | 得分 |
1 | 在考核时间之前完成的工作。 | 1.2*G |
2 | 在考核时间内完成的工作。 | 1*G |
3 | 在考核时间之后完成的工作。 | 0.8*G |
4 | 非正常工作时间内完成的工作。(紧急需要制作的程序) | 1*G |
◆ 一个工(1G)==评估应该一天能完成的工作。
◆ 如评估一项工作能够半天内完成则相当于0.5个工。(0.5G)
那么一个程序员一天应该有多少工呢?当然是一个G了。因为他不管是做两个0.5G的工作还是10个0.1G的工作都是一天评估能够完成的工作。不管他做几项工作每天做的工都是相同的。而且我们可以对每个工来做出评分。
◆ 如我们分配给一个人,一个工的工作,那他如果提前能够完成那他今天将得到1.2*1的考核积分。反之他得到的要么是1分要么是0.8分。
◆ 如果一个人一天超额完成任务,那他今天的得分将大于1.2 分
◆ 成绩突出的个人每月统计得分将高出正常人6分还要多。
◆ 然后我们就可以拿每月得分来衡量的一个人的工作能力及效率了。
◆ 上面所讲到评估工作时间是由技术管理者凭借经验和与开发者的交流来修正的。
其实工作的下发也应该考虑实际情况。采用自顶向下的任务安排,任务完成的时间让部下自己报,由技术管理者凭借经验和与开发者的交流来修正,最终在团队中建立“承诺”和“契约”的风气。
时间仓促,不足之处还请指正。
以上内容纯属个人观点。