研发效能
团队能够持续地为用户产生有效价值的效率,包括有效性(Effectiveness)、效率(Efficiency)和可持续性(Sustainability),就是能否长期、高效地开发出有价值的产品
效能度量
从应用程序开发的生命周期中获取数据,并使用这些数据来衡量软件开发人员的工作效率
- 研发效能难以真正地被度量
原则:效能度量不要与绩效挂钩,提供度量作参考和工具
指标分类:
- 速度:交付的速率
- 准确度:是否跟计划吻合,跟用户需求吻合,能否提供较大的用户价值
- 质量:包括产品的性能、功能、可靠性、安全等方面
- 个人效能:开发过程中的效率指标
如何度量:
- 目标驱动,关注什么,度量什么
- 先从全局上找瓶颈,再深入细节
- 收集主观的评价,作为度量数据
- 关注个人维度的指标提高效能
流程
对于优化的方法,做法是逐步优化已有的开发流程和框架,甚至只给出原则,让团队成员逐步摸索并最终找到合适的方法
入库前
- 规范化、自动化核心步骤
- 快速反馈,增量开发
信息流通
- 战略目标相关信息:只有当团队成员清楚公司以及团队目标时,才能更容易把自己的目标与之对齐
- 代码相关信息:尽量公开。代码是最直接的参考,是最实时的文档
- 研发过程的各种文档:通过统一的工具,方便大家添加、修改、查询这些文档
- 各种标识信息:各种工具之间流动着多种标识信息,包括任务工单、代码提交号、版本号、代码审查 ID、测试用例 ID、Bug ID 等,管理这一类信息的有效方法是,各种工具通过提供 API,做到服务化,形成工具之间的网状连接
研发环境
- 舍得投入资源,用资源换取开发人员时间
- 对环境的获取进行服务化、自助化
- 注重环境的一体化、一致性,固化最佳实践
代码审查
引入阶段:
- 统一思想,代码审查也是工作量
- 选择合适的试点团队
- 机器审查和人工审查结合,使得人工审查更聚焦
实施阶段:
- 保证提交原子性,重视提交说明
- 审查时互相尊重和基于讨论
技术债
- 利用技术债的好处,必要时要大胆“举债前行”
- 控制技术债,在适当的时候偿还适当部分的技术债
目标
- 技术目标:偿还技术债 或 前瞻性的技术准备
- 业务目标
技术常常在短期被高估,在长期被低估,不要因为短期的业务目标而忽略长期的技术目标