心得分享 | 软件研发效能(1)

最近参加了关于研发效能的培训,结合自己的工作经验,将相关的心得总结出来,希望对大家和自己都有一些帮助。

研发效能

软件研发可以看作是一条流水线:

这条流水线具有很高的灵活性:

  • 灵活的最终产品——实现哪些用户需要的功能;
  • 灵活的节点间关系——不同节点是可以融合的,例如测试可以放到本地开发中;
  • 灵活的节点——节点有多种实现方式,例如测试可以用TDD、BDD;
  • 灵活的开发者——对于相同的问题采取不同的方法解决;

研发效能即通过流水线持续地为用户产生有效价值的效率,包括3个方面:

  • 快速——很快地生产发布产品;
  • 准确——产品对客户、对公司提供价值;
  • 持续——能够持续地高效生产;

效能度量

管理学大师彼得德鲁克曾经说过“你如果无法度量它,就无法管理它”(“It you can't measure it, you can't manage it”)。

为了提高研发效能,首先就必须能够度量整个流程,找出流程中关键的点,哪个点效能有问题。

效能度量需要一定的技巧,如果和绩效直接挂钩,往往不能达到效果,甚至会像下面的漫画描述的那样造成不良后果(检查bug修复数就去先产生bug)。

下面列出了可用于有效度量的部分具体指标:

如何建立高效研发流程

成本可以分为生产成本和交易成本。交易成本是指完成工作需要额外处理的内容,例如软件研发中的发布就可以看作一种交易成本。

自动化和持续流程是降低交易成本的有效手段,下面介绍在研发流程的不同阶段建立高效研发流程的常用手段:

代码入库前

  • 规范优化流程——获取开发环境、本地开发流程、入库前系统检查;
  • 快速反馈——自动化测试、联调环境、并行化提高效率;
  • 优化代码入库前流程和代码检查系统——UT、IT、自动化代码检查;
  • Trunk-based——代码尽早进入共享分支集成;

代码入库后

  • 持续交付——高效发现、定位问题,自动化保证检查效率;
  • 持续部署——提高资源使用效率;

代码上线后

  • 数据收集和问题定位——打点、Dashboard监控、Logview;
  • 功能开关——实现功能的快速“回滚”;

除此之外,针对流水线的优化可以基于以下几个原则进行处理:

  • 5个持续;

  • 提高测试完整性保证产品质量——建设框架、工具支撑测试用例编写、运行;

  • 提高流水线运行速度避免阻塞——包括构建速度、测试速度、反馈速度;

  • 提高环境一致性提前暴露线上问题——包括机器、数据、软件、网络;

  • 提高灵活性增强有效性——集成内外部工具,流水线可以自助化、自定制使用;

欢迎关注我的个人公众号”My IO“,转载请注明出处。

原文地址:https://www.cnblogs.com/feiyun0112/p/13611264.html