1.6.1 从痛点入手
研发效能提升八项实践建议的第一项,是“从痛点入手”。很多时候,当我们手上拿着锤子的时候,看什么都像钉子。但是研发效能的提升恰好是反过来了,我们要先找到哪些是最碍眼的钉子,然后用体系化的方法论去打造合适的锤子。
所以在推行研发效能的早期阶段,我们通常会采用自下而上的策略,从一个个工程实践中的实际痛点(钉子)入手,从解决问题的角度打造研发效能提升的亮点,此时我们追求的是“短、平、快”,遵循的是将问题点逐个击破的原则。比如下面这些场景:
• 本地编译耗时长:提供增量编译和分布式编译能力。
• 本地测试困难,测试环境准备复杂且耗时长:基于Kubernetes的Pod提供一键搭建测试环境的能力。
• 自动化测试用例数量大,执行回归时间过长:采用并发测试用例执行机制,使用几百、几千台测试执行机并行执行用例,实现用硬件资源换时间。
• 自动化测试用例维护成本高:测试用例采用模块化和分层体系,实现低成本的自动化用例维护。
• 测试数据准备困难:引入统一的测试数据服务(Test Data Service)能力。
• 研发后期阶段,代码递交集中,缺陷井喷:推行测试左移策略,鼓励研发自测,遵循“谁开发、谁测试、谁上线、谁值班”的原则。
• 性能缺陷在研发后期发现,修复重测成本高居不下:从性能测试转变为性能工程,让性能融入软件研发的各个环节,而不是最后的一锤子买卖。
• 安全问题频现:将安全测试能力纳入研发的全生命周期,实现DevSecOps,而不是早期的SDL(Security Development Lifecycle,安全开发生命周期)。
• 集群规模庞大,发布过程耗时过长:各个层级的并发部署能力,集群内节点的并发、集群间的并发等。
• 项目的过程数据都是后期集中填充,失去度量意义:项目的过程数据由工具自动填充,不再依赖工程师手工输入。比如,开发完成的时间不再依赖于开发人员手工填写,而是由Jenkins构建完成后自动填写,以保证所有过程数据的真实有效性,从而为后面的度量和改进提供可靠的信息输入。