伴随着数字化与信息化的发展,研发效能和降本增效日渐成为企业管理焦点。尤其对于研发型团队而言,快速地、保质保量地交付价值是优先级最高的任务,但在实际的开发过程中,我们总会遇到技术债务、并行冲突等影响研发效能的情况。
在告别野蛮生长,主张精耕细作的今天,企业/组织应该如何解读种种效能障碍,制定可复制的解决方案?本篇文章将从7 个常见的研发场景出发,分享有关研发效能提升的心得与经验。
组内/组间并行,或由代码回退/合并等造成的各种并行开发导致代码冲突是常见的效能问题之一。并行化的分支管理和版本管理是比较重要的议题,而合并策略、Feature分支管理、变更管理都可能影响研发效能。
解决这个问题,可以考虑以下三种优化方式:
以时间为轴,串起整个版本主线,代码对版本负责,版本对功能负责。
对同一系统而言,代码是并行开发的,但最终的交付物/发布物是顺序发布的;对不同系统而言,主要考虑相互间的依赖关系,影响面以及发布顺序。
按照敏捷迭代方式将大功能化整为零,更好地应对变化。 如遇到迭代周期内需求必须变更的情况,需要确定好变更的影响范围和需求优先级。
技术/优化需求和跟版迭代需求可能需要采用不同的发布策略和分支管理。 这样既可以保证业务目标按期、有效地达成,还能保障各种优化和支撑工作灵活地进行和并行。
技术债是一个老生常谈的话题。企业在平常的研发管理中,应重视「好习惯」的培养,若等到技术债堆积成山,系统病入膏肓才着手解决,恐怕就为时已晚了。
建议在日常的研发管理中,加强代码审核机制,实行代码的P3C规范化检查;前期对业务的技术方案也应作出合理取舍。
另外,架构设计应结合实际业务和资源进行充分考虑,谨防过度设计。 好的架构是演化而来的,没有一劳永逸的完美架构。
并行协同时,配置和资源文件的不同步也是造成冲突和问题的重要因素。为避免额外的排除工作影响研发效能,企业可以考虑提升配置和资源的独立性以及简化性。
第一,尽量按时间顺序管理需求配置的唯一值;如果不能保证唯一配置,则推荐按分组逻辑管理各组的修改值(不冗余其他组的原有配置)。
比如,按时间序列管理或分组并列管理,待确定提测节点后再进行合并。这样可以较清晰地发现冲突项,防止互相覆盖。
此外,除公共配置外,考虑按功能进行分组配置,不要将全部内容写在一个配置文件里。
第二,配置合并时,签入签出流程要尽可能短。 配置的合并过程需要审核,但配置调整的流程时间窗口不易过长,以免造成额外的等待成本,诱发潜在的冲突。
许多时候,生产环境的数据必须脱敏,但同时,研发团队又需要验证生产问题或缩小问题的影响面。这种情况应该如何解读和解决?
生产环境的客户数据脱敏后,记录部分非敏感的ID参数、异常等日志仍可以作为有效数据,完成特定场景下的分析诉求。
准备一个与生产环境相对一致的「克隆体」——Pre准生产环境,同步并通过非客户数据完成生产环境的验证。
非客户数据包括部分生产测试的数据、经客户允许的可搜集的部分数据,以及经过合规完全脱敏后的数据等等。
通过少量客户渗透,或对部分特定租户进行生产环境的短时渗透运行, 稳定后再投入大规模部署。
研发过程中,开发环境和部署环境的复杂度也会影响研发效能。因此,建议尽可能地降低自测、联调、环境部署的复杂度,以及同一个服务的代码量和复杂度。
举个例子,有些系统仅是启动就要耗时 30 分钟,那么每位开发者每天花在应对环境、应对启动的时间成本也显著增加了。
不可否认地,没有一款产品、一项服务能永远不出问题。因此,搭建有效、可快速反应的业务监控和运维监控体系非常重要。
不管选用哪种监控平台系统,核心目的都是监控核心目标,并实现关键指标的及时预警和通知。有效、直接、快速地反应和处理发现的问题,比丰富的监控方案更为重要。
其次,重视测试环节。 考虑补充多种测试手段,尽可能地发现问题,比如针对接口的自动化测试、针对场景的集成测试、对大型系统的压测环境等等。
在研发流程管理过程中,非技术因素也会对研发效能产生重要的影响。
研发流程管理是研发效能提升领域中重要的议题。管理者可以以鸟瞰视图,分析和判断研发全生命周期的运转情况,并借助智能化的监控和预警工具,发现问题、解决问题、避免问题,做出更可靠的管理干预和引导。
了解更多敏捷开发、项目管理、行业动态等消息,关注我们 LigaAI@oschina 或点击LigaAI - 新一代智能研发协作平台,在线申请体验我们的产品。