软件开发者的绩效管理

组织目标

绩效是指对应职位的工作职责,

所达到的阶段性结果,及其过程中可评价的行为表现。


绩效管理是指管理者与员工之间,

目标如何实现目标上达成共识的基础上,

通过激励和帮助员工取得优异绩效,从而实现组织目标的管理方法。


KPI(Key Performance Indicator)意为关键绩效指标

它是一种绩效考核办法

用来评价业绩实现过程中的关键结果目标和行为目标。


KPI的理论基础是二八原理

是由意大利经济学家帕累托提出的一个经济学原理,

一个企业在价值创造过程中,

每个部门和每一位员工的80%的工作任务,是由20%的关键行为完成的。

抓住20%的关键,就抓住了主体。


二八原理为绩效考核指明了方向,

即考核工作的主要精力要放在关键的结果关键的过程上。


总之,企业是为结果买单的,管理者为了实现组织目标

就得考虑如何将个人目标与组织目标进行关联,

并且,对个人目标的达成程度进行考核。


KPI是一种只考察关键结果关键过程的绩效考核方法。

知识工作

彼得·德鲁克,在《卓有成效的管理者》中提到,

对“体力工作”而言,我们所重视的只是“效率”。

所谓效率,可以说是“把事情做对”的能力,而不是“做对的事情”的能力。

体力工作的成果,通常可以用数量和质量来衡量,但是这种衡量方法并不能适用于“知识工作”。


谁也不知道一位“知识工作者”在想些什么,

然而,思考却正是他的本分,他既然是在思考,他就是在工作。

衡量“知识工作”主要应看其结果。


软件开发也可以看做是一种知识密集型的工作,

开发者每时每刻都在加工、处理和创造新知识

用代码量来衡量一个开发者是不行的,只能看他们对外界的贡献


软件开发过程是知识的不断细化过程,

一个不出问题的软件,必然是相关逻辑细节被完全掌控的结果,

弄清事情是怎么回事,是开发者最主要的工作

误区

在讨论软件开发者的KPI时,很多人都陷入了误区,

(1)将自己的目标与别人的目标进行对比,以求公平

(2)后期发现目标无法达成时,质疑目标的合理性

(3)与他人进行非目标之外的能力对比

我们来仔细分析一下。


要知道,目标是不可能相同的,在绩效考核中没有公平可言。

某些开发者可能被安排了困难的任务,而某些则是简单的,这不公平。

可即便是相同的任务,由于开发经验不同,也会有人说不公平


因此,绩效考核的规则不是对比目标,

而是对比每个人针对个人目标的完成程度


此外,由于软件开发的性质所限,能不能达成目标是事先难以确定的,

所以经常是到了项目后期,才发现目标的不合理之处。

一个看似简单的事情,未必真的那么简单,各行各业都是如此。


如果有稳赚不赔的目标达成路径,知识工作者的价值也将大大缩水了。


最后,与他人进行非目标之外的能力对比是毫无意义的,

“个子高”就理应拿到更高的薪水吗?

软件开发管理

考核一个开发者的工作表现时,有太多的不确定在里面,

但这也同时说明了,对开发者进行管理需要投入更多的精力


除了督促开发者完成个人目标之外,

管理者还要协助解决目标达成路径上遇到的典型问题。

尽可能的消除阻碍,让开发者能实现更好的自己。


主要包含以下几个方面。


首先,由于角色不同,管理者往往能够接触更全面的信息,

一些必要的信息流转不畅,会影响开发任务朝错误的方向进展。

因此将必要的信息进行疏通,消除信息孤岛,是管理者的重要职责。


其次,管理者在资源协调方面更有底气,

因为手里可供利用的资源比一线开发者更多,而一线开发者只有自己。

必要时可以选择投入更多的资源到某件重点事情上。


最后,在进行跨团队沟通时,即使双方主管不在,也不可能忽视他们的态度

毕竟私自做了其他事情,就没有时间去做主管要求的事情了。

所以有些时候管理者看不到下属的难处

结语

KPI对于软件开发而言,是否一种较好的绩效考核方法呢?

我认为不是


它导致了很多软件从业人员,把精力过早的放在结果上。

而实际人们应该更加关注的是软件开发过程


对于体力工作者而言,影响最终结果的主要原因可能是懒散

但对知识工作者(软件开发者)来说,就不尽然了。

任务进展不下去,主要原因之一是,开发者无法获取到想要的信息


知识工作者的脑力是其最重要的资源

致使脑力白白浪费掉的行为,就是在浪费资源


因此,绩效管理应该帮助这些资源用到一处,

而不是眼看它们被消耗掉,却还是按部就班,无动于衷。