研发质量与效率的绩效指标设计
程序员的 KPI 指标设计一直是业界的一大难题,因为研发人员的工作绩效很难量化,即便如此还是需要制定相应的绩效指标,这些指标有部分可以简单量化,但都无法最终衡量研发的质量和效率,还是需要经验丰富的管理人员加以主观的判断。
关于软件质量的概述在《代码大全》一书中有非常详细的介绍,其中提到软件质量包含外部质量和内部质量,外部质量指软件的外部特征包括软件易用性等,内部质量指软件内部特征包括代码质量等。
在给研发人员制定绩效指标的时候,可以综合考虑软件外部质量和软件内部质量,以便更好地引导其更全方位地提升研发质量。
研发质量指标
需要关注的研发质量指标包括以下这些:
- 软件外部质量(软件外部特征)
- 正确性(整个系统设计和实现的正确程度,bug 多则正确性低,但还应考虑程度)
- 可用性(使用系统的难易程度)
- 效率、性能(对系统资源的最小利用,包括存储和执行时间)
- 可靠性(成功执行特定功能的能力)
- 完整性(完整性内容包括:防止非法或不适当地访问的能力、参数校验、界面、安全性等,可以综合衡量工作的真实完成度)
- 适应性(系统在多个环境下不做修改就能使用的能力,比如移动端也能正常使用)
- 精确性(系统不受错误影响的程度,尤其在数据报表方面,精确性是对工作性能良好的衡量)
- 稳定性(应对无效输入或并发较大仍能提供服务的能力)
- 软件内部质量(软件内部特征/代码质量)
- 符合编码规范
- 可维护性(修改系统以增加功能、提升性能、修复 bug 的能力)
- 灵活性(修改后能适用不同用途或环境的能力)
- 可移植性(修改后能在其他环境下运行的能力)
- 可重用性(用于其他系统或模块的难易程度)
- 可读性(能理解系统源代码的能力)
- 可测试性(对系统编写单元测试或进行系统测试的难易程度)
- 可理解性(能从整个系统水平或细节说明上理解整个系统的难易程度,相比可读性更偏向不同系统间的交互是否易于理解)
- 单元测试质量(测试代码质量、单元测试覆盖率等)
- 可测试性(代码的可测试性,通常高内聚低耦合的代码更具有可测试性)
- 文档质量
- 外部文档(综合资料、技术方案、详细设计文档)
- 程序内文档(编码风格、可读性、有效注释)
- 系统安全
研发效率指标
在研发质量部分提及了许多指标,因为质量与效率的相互影响,效率部分似乎难以提取出额外指标,其实不然,研发效率不应局限于个体成员的编码速度、任务完成速度上,而应多从团队整体效率出发,对于提升团队整体效率的行为要加以鼓励。
研发效率指标包括:
- 项目及任务按时完成率
- 编码效率
- 敏捷反馈(尽早提测、持续集成)
- 敏捷编码(保持简单、合理设计、增量开发)
- 敏捷协作
- 代码提交质量
- 项目提测质量
- 及时准确地反馈真实进度
- 团队技术指导
向专业人士看齐
以上的常规指标,可以用于管理人员制定绩效指标,也可以作为研发人员检验自己工作完成度的一份清单,除此之外,做一些对整个团队有利的事情能够更显专业。
当研发人员表现出以下的一些行为时,管理人员往往会给其「超出期望」的评价。
- 积极参与代码审查,发表有效代码评论。
- 踊跃分享个人知识与经验。
- 对已有代码的有效重构。
- 发现或修复系统现有错误。
- 抽取通用代码,减少重复编码现象。
- 使现有重复性工作自动化。
- 帮助团队成员解决技术难题。