绩效考核之我见,我的一些想法,请各位大牛、小牛、小鸟们给点意见

GeekGarden 2009-11-15

我公司是个小公司,技术部程序员加美工也就10来个人,最近因为某些原因要进行一些改革,首先从绩效考核开始,因为大家都知道的开发这项工作不同于销售很难进行量化,因此我的想法是绩效考核应从效率、质量、创新等几方面进行评估,下面是我的想法不知道可不可行,请各位大牛,小牛,小鸟们给点意见

1.效率(40%)

以类和页面做为工作的最小单位,在不区分web前端和后端的情况下,以实例子帐号管理模块说明,它有列表、添加、修改和删除4个功能,根据详细设计文档可以得出此模块由以下8个类、2个页面和几个配置文件组成。

1) QueryParams			查询参数对象
2) User				数据实体对象
3) UserDAO			数据访问对象
       findUserList()
       findUser()
       findEmail()
       addUser()
       update()
       delete()
4) UserService			业务逻辑对象
       getUserList()
       getUserAdd()
       getUserEdit()
       checkEmail()
       updateUser()
       deleteUser()
5) UserAction			逻辑控制对象
       user_list()
       user_add()
       user_edit()
       user_delete()
       check_email()
6) UserFormAction			逻辑控制对象
       user_add_submit()
       user_edit_submit()
       validateUser_add_submit()
       validateUser_edit_submit()
7) UserActionTest			
8) UserFormActionTest		
9) user_list.jsp			列表页面
10) user_form.jsp			添加/修改表单页面

根据经验一个好的编码流程可以大大提高效率

第1步:分析设计文档建立好所需要的类、页面和配置文件(1个工作日内)

第2步:定义Action、Service和DAO中需要的方法,再编写单元测试(半个工作日内)

第3步:编写Action、Service和DAO的具体实现,然后执行单元测试(按方法的数量及逻辑复杂度来估计时间,比如这里的UserDAO应该1个小时能搞定。UserService牵涉的东西多半个工作日,Action有表单验证2个小时,合起来保守估计1个半工作日)

第4步:编写页面及调式(保守估计1个半工作日)

因此此模块需要4+2个工作日。因为根据以往的开发情况来看,主要拉长时间的都属于web前端这一块,特别是表单页面,所以保守估计预留2个工作日应付这种情况以及其他突发情况。

评分标准

在指定时间内完成,合格分

提前时间10%-20%左右,良好分

提前时间20%-30%左右,优秀分

提前时间40%以上,出色分

未在指定时间内完成,不及格分

超过指定时间20%以上,差

超过指定时间40%以上,很差

超过指定时间60%以上,非常差

补充说明:

1)完成的定义,是指你交付给项目负责人检查时,没有被检查出bug存在

2)未完成如果是因为特殊原因造成,比如中途有其他任务插入或者请假之类的,给予增加相应的时间

3)这里的估计是在假设具体负责人了解模块业务流程,并且熟练掌握各种需要的技术及工具的情况下。所以如果你业务流程不了解,或是需要的技术及工具不熟悉,这就需要你平常主动去学习和掌握它。

2.质量(40%)

2.1.编码规范

主要就是3点:命名、注释、排版

详见svn://192.168.1.250/docs/B2B文档V3.0/开发/Java编码规范.doc与网页设计规范.doc

评分标准

命名:符合设计文档的要求

注释:说明类、方法要完成的功能,每个输入参数的描述,返回值是什么

排版:如果是Java文件那就简单,就是调用eclipse的格式化功能,可以说是一种习惯问题。其他的诸如html、jsp、php等文件可能就需要手动调整

这些问题由项目负责人检查,发现问题后首先记录在当月的考核报表中,然后再提醒具体负责人修正,如果提醒超过3次以上,每超过1次扣当月质量分x分。

2.2.单元测试条件覆盖率

评分标准

查询方法:

1)默认的查询(所有参数都是默认值的查询)

2)所有参数的查询

3)个别参数的查询

更新方法:要被更新的字段是否都存在

添加方法:所有需要的字段是否都存在

删除方法:结合添加方法测试,也就是说先调用添加,然后再删除,也就是说只有添加和删除都存在时才需要测试

这里如果检查时被发现,直接记录历史并扣当月质量分x分。

2.3.代码设计

首先引用【重构改善既有代码设计艺术美:MartinFowier著侯捷熊杰译】中的一段话:作为一个程序员,任谁都有看不顺眼手上代码的情况,代码来自你邻桌的那个菜鸟,或三个月前的自己...

代码设计到底怎么样才是好的设计?这是一个牵涉面很广的领域,有很多经典的巨著,如上面提到的“重构改善既有代码设计艺术”与“设计模式”。人不同于机器每个人都有自己的想法,每个人的水平和经验也不同,不能一概而论,因此很难有一个客观的评分标准。但根据我以往的开发经验我认为最重要的是要做到以下几点。

1)抽取重复的代码片段(这是我在带领团队后发现得最多的问题)

2)合并重复的条件片段

3)引入参数对象

4)以异常取代错误代码

5)以测试取代异常

这里如果检查时被发现,首先记录历史和提醒3次,如果超过扣当月质量分x分。

3.创新(20%)

简而言之就是我们目前没有的东西,谁先引入进来就算谁的创新,前提条件是引入进来的技术或工具必须是成熟和稳定的。

评分标准,每创新1次视具体的作用程度,记录历史并加当月创新分x分。

4.季度总结

每季度评出一个技术之星,评分标准,3个月中考核总分最高者

5.年度总结

给予评过技术之星的人提高基本工资

这样能做到一个良性循环