在当今互联网技术日新月异和企业降本增效的时代,研发效能已经成为衡量一个团队或组织竞争力的关键指标。提升研发效能不仅能加速产品上市时间,还能提高产品质量,增强客户满意度,持续提升企业竞争力。本文旨在介绍得物如何从原则、方法到成功实践,系统性提升研发效能的过程和经验。期待与行业专家深入探讨和交流,共同推动研发效能实践的新突破。
得物业务近几年高速发展,技术团队规模增长超过20倍,形成了千人以上的敏捷迭代开发模式。每双周的需求吞吐量达到上千个,应用构建超数万次,应用发布也超过了数千次。这对研发效能基础设施和技术实践提出了非常高的要求。在协同方面,我们通过技术效率调研、流程再造、系统升级等方法,提高了研发生产过程中跨域、跨团队、多职能协同效率;在工程方面,通过自研一站式BizDevOps研发效能平台,提高了构建效率、流水线效率和发布效率等。在不断提升业务需求价值流动效率、反馈效率和持续学习改进效率过程中,形成了得物特色研发效能解决方案和效能实践。
研发效能指的是在软件开发过程中,团队利用资源(包括时间、人力、技术等)的效率和效果。高效能的研发团队能够以更低的成本、更快的速度和更高的质量完成项目开发。提升研发效能能够帮助组织快速响应市场变化,持续提高竞争优势。
研发效率和研发效能有什么不同?
很明显,提升研发效能更加重要,但是比提升研发效率要难很多。 从经验来看,在团队早期阶段,把研发效率作为首要目标比较合适,毕竟在工具、系统、度量没有非常完备的阶段, 很难清晰地定义出研发效能。 当团队和基建成熟度到了一定阶段, 研发效能就应该成为重要的指标,这时,团队开始注重需求的价值, 而不是一味追求需求吞吐率。我们逐步对需求价值复盘达标率,有效需求交付率提出明确要求,进而提升整体研发效能。
研发效能提升的理念基于系统思考,旨在全局范围内寻找最优解。我们从全局和整个生产线的角度出发,清晰定义从业务到技术实现的端到端系统链路,并分析各个环节的流动效率,发现问题、分析问题和解决问题。
研发效能提升的原则包括精益理论、敏捷原则和持续改进。首先,我们倡导全员参与,在全过程寻找约束项,减少一切形式的浪费。其次,应用敏捷原则,通过技术效率问卷和访谈,从公认的痛点问题入手,快速响应快速迭代解决问题。最后,通过定期调研和数据度量分析,持续解决问题,形成提升效能的增强反馈循环。通过这些方法,我们能够系统化地优化研发过程,提高整体效能。
原则:
软件工程的发展经历了几个重要的阶段,每个阶段都旨在应对特定的挑战和需求。总结起来,这些阶段分别为了快速响应市场变化、需求变化和代码变化,以及聚焦业务价值。
首先,精益理论方法强调破除各种约束,减少一切浪费,以提高整体效率和价值交付。这一理念帮助团队专注于高价值活动,最大限度地利用资源。
接下来,敏捷开发模式,主要目的是为了快速响应不断变化的需求。通过短周期迭代和持续反馈,敏捷开发能够更灵活地适应需求的变化,提高产品的适应性和用户满意度。
随后,DevOps的提出则是为了应对代码变化带来的挑战。通过打通开发(Dev)和运维(Ops)之间的壁垒,DevOps实现了更加快速和高效的代码交付和部署,使得从代码编写到上线的整个过程更加顺畅和可靠。
现在,BizDevOps的概念进一步扩展了这一思路,旨在提升端到端的整体研发效能。BizDevOps不仅关注开发和运维的协同,还将业务(Biz)需求紧密融合到整个研发流程中,从而实现业务与技术的无缝对接。通过这种方式,BizDevOps 确保了从需求提出到最终交付的每一个环节都能够高效运转,全面提升企业的市场响应速度和价值交付能力。
得物在提升研发效能的方法和实践中,完整经历了敏捷迭代、质量工程、DevOps以及BizDevOps四个阶段的演进。结合得物技术精细化管理方法,我们逐渐形成了具有得物特色的研发效能解决方案和实践。在持续探索和应用这一系列实践的过程中,我们有效保障了在技术团队规模不断增长的同时,也实现了得物整体研发效能的稳步提升。
得物是新一代品质生活方式平台,采用社区+电商的业务模式,具有链路复杂度高和玩法新颖等特点。近几年业务快速增长,得物技术团队需要支撑全业务域十几条业务线作业,同时保障横跨四地的研发中心千人以上规模团队的有效协同。这些因素带来了巨大的协作和管理挑战,特别是在保持业务敏捷性和快速响应市场变化方面。
敏捷开发实践
为了有效应对这些挑战,得物采取了一套特色的敏捷开发模式,能够支撑全业务域十几条产线的千人团队进行双周迭代作业。
得物敏捷开发实践, 包含以下主要特点:
敏捷开发实践收益
通过实施这套敏捷开发模式,我们能够快速响应业务需求,在每次迭代中能够上线超过1000+需求,并且MRD的吞吐率达到75%以上;PRD的吞吐率更是达到80%以上,对于优先级最高的P0和P1需求,完成率达到了100%。累计下来,通过这套敏捷开发模式我们已经完成了1.2w+个项目和11w+个需求的交付。
在实施敏捷开发双周迭代模式的过程中,我们面对的挑战不仅仅是需求量的庞大和迭代周期的压缩,还有跨域需求多和电商链路上下游依赖长等复杂问题。在这样的背景下,我们传统的质量保障方法,如功能测试和集成测试,已难以应对快速迭代中需求上线的质量。
为了克服这些挑战,我们实施了一系列质量管理方法和实践,核心在于质量内建的共识和质量工程实践相结合。我们认为高质量的产品并非在测试阶段才能实现,而应当在代码开发阶段就内建其中。在这样的共识下,全体成员都会参与质量内建和质量工程工作,实现了从项目起始到终结的全过程质量保障活动和实践。
质量工程体系
得物的质量工程体系涵盖了质量策划、质量保障活动和质量评估与改进三大核心过程,能够为双周敏捷开发提供全面质量管理保障,保持高水位的需求交付质量和线上服务稳定性。
「质量策划」
「质量保障活动」
「质量评估与改进」
质量保障活动-迭代过程质量管理
迭代过程质量管理,是值得展开介绍的质量活动之一。在迭代中,质量活动会完整覆盖到需求阶段、研发阶段、测试阶段、发布阶段和运营阶段。 通过全生产链条实施质量专项覆盖,包括自动化、流量回放、精准测试、线上巡检和线下监控等,提升缺陷拦截率和线上稳定性。
质量保障活动-迭代过程质量管理-质量大盘
质量大盘是迭代过程中质量管理的重要度量和可视化工具,能够清晰展示双周迭代中的需求总数、缺陷总数、开发与测试人日比,以及一系列内建质量协同指标,如冒烟测试一次通过率、准时提测率、缺陷日清率和缺陷引入率等。每个迭代都能提供实时反馈,帮助团队更好地进行质量改进。
质量工程实践成果
通过这些系统化的质量策划、保障活动和持续的评估与改进措施,能够确保项目在每迭代需求上线质量都能达到准出标准,并且能够持续提升产品的整体质量和用户满意度。 在观测质量指标方面, 能够看到代码新增技术债归零,缺陷引入率从过去3到现在0.7缺陷/需求以下,线上故障数持续下降,以及线上SLA达到4个9以上的明确结果。
为了进一步提升研发效能,得物在敏捷开发的基础上引入了DevOps实践。通过定义研发效能的三个主要阶段:规划与协同阶段、研发与验收阶段、发布与运营阶段,并采取分阶段治理的方法,提高了整体效率。
在规划与协同阶段,我们升级了需求管理系统,融合了协同面板,从而提高了需求流转效率和上下游任务流效率。在研发与验收阶段,建立了代码管理系统、流水线系统和测试管理系统,有效提升了编码和测试验收的效率。在发布与运营阶段,通过发布系统的升级、实现蓝绿发布模式等,大幅提升了发布的稳定性和效率。
通过一系列系统升级和流程再造实践,我们显著提高了需求流动、代码流动和应用流动的效率,从而提升了价值流动效率,实现了应用快速部署和需求快速交付能力。
持续集成流水线
通过引入持续集成流水线,将原有的手动构建、部署和测试流程实现了自动化,并大幅提高了整体交付效率。以下是我们常用的几种流水线类型:
持续发布提效
在得物的双周版本发布中,由于应用数量超过100个且跨域需求和场景较多,应用之间的依赖性较强,导致发布梯队和批次较多,发布时间和验证时间较长。为了解决这一问题,我们采用了蓝绿发布模式,有效解除版本间的依赖,提升了发布效率。
DevOps实践成果
通过DevOps实践,提高自动化的覆盖范围, 增加流水线在各个阶段和协同场景中的应用, 我们大幅提高了构建效率、部署效率和班车效率。
流水线应用成果
通过Push流水线的应用, 前置反馈代码类问题,实现需求染色环境流水线自动化部署提效;通过MR流水线应用,能够作为代码门禁,在代码合入阶段有效拦截高风险代码问题(例如:编译问题、代码扫描、Jar包检查、DTO实体规范扫描、安全扫描等); 通过提测流水线的应用能够作为研发需求代码测试准入卡口,实现自动化测试左移,保障提测质量; 通过集成流水线能够提升质量保障专项测试和集成测试效率;通过daily流水线, 能够日常巡检当日变更服务的代码质量情况和自动化Case稳定性。 这一系列流水线的应用,有效提高了需求提出到上线的效率。
MR流水线成果
MR流水线作为代码门禁,在代码合入阶段有效拦截高风险代码问题。目前迭代MR流水线各项指标保持在高水位,包括流水线成功率92%+、构建成功率98%+、代码扫描通过率99.9%、Jar包通过率88%+、Semgrep扫描通过率88%+、DTO实体规范扫描通过率99%+。
Daily流水线成果
Daily流水线全域成功率99.6%、构建成功率99.9%、部署成功率99.8%、代码扫描通过率92%、基准集成自动化成功率99.7%、迭代集成自动化成功率99.7%。
班车发布提效成果
通过蓝绿发布和发布场景优化等措施,双周大版本班车的发布时间从过去10小时以上,现已优化至2小时内。显著提高了发布效率,大幅节省了研发和测试在发布过程中的投入。
全域发布提效成果
全域构建成功率平均为97.47%,部署成功率平均为98.71%,回滚率平均为0.63%,热修平均为1.76%,整体法发布效率和稳定性保持在比较高的水位。
为了持续降本增效和更加聚焦业务价值,持续提升研发效能。在DevOps的实践基础上,得物继续引入BizDevOps 实践,通过加强业产研运的协同,提高业务目标、产品需求和技术资源投入的关联度,提高业务有效价值的交付效率,帮助业务更好的增长。
得物一站式BizDevOps平台
为了提高Biz阶段业务目标的感知和管理,得物研发效能平台系统再次升级,通过OKR系统与需求管理系统打通,需求管理系统与时间手账关联等系统功能, 打通全链路价值流、需求流、代码流、应用流和时间流,实现一站式BizDevOps解决方案能力。
业务目标与需求关联
我们采取了以下几个关键的实践方法,包括OKR系统与需求管理系统打通,以及在需求评审和复盘环节增加需求价值判断和高优需求资源占比等分析改进:
BizDevOps实践成果
从敏捷开发实践、质量工程实践到DevOps实践和BizDevOps实践, 研发效能团队不断探索和创新, 自研大量的特色定制化工具和系统, 以加速实践落地效果,确保项目快速、高质量地交付。本节将全面介绍得物在研发效能提升方面所采用的一些具有特色的平台和系统。
在得物研发效能平台系统中,有6大核心研发效能管理系统值得重点介绍和分享,分别是需求管理系统、代码管理系统、测试管理系统、流水线管理系统、发布管理系统和时间手账系统。这些系统分别管理着研发生产流水线中的6种重要的生产过程介质:PRD、Code、TestCase、Pipeline、Service和Time。每一个系统都致力于在最短时间内高质量地交付其所管理的介质,直至其生命周期的结束。
需求管理系统(PRD-Based Management)是一个以需求管理为核心的平台,旨在全面提升项目和需求管理的效率,同时促进各职能线之间的高效协同作业。该系统不仅能承载所有项目管理、需求管理、需求排期、任务拆分、缺陷管理等工作,还能够支持需求在各职能线之间的顺畅状态流转,形成一个高度集成和协同的工作平台。
功能特点:
【RDC需求管理】
【协同管理】
代码管理系统(Code-Based Management),以代码管理为核心,平台提供仓库管理、分支管理、MR管理和CR管理等功能。 支持在线阅读代码,多需求分支管理(分支规范、分支需求关联、分支版本关联、分支快捷合并移除、分支回收站等特性),线上CR、IDE插件CR以及AI辅助CR等功能。
功能特点:
【分支管理】
【线上CodeReview】
测试管理系统(TestCase-Based Management),以TestCase管理为核心, 测试可以根据测试管理系统创建用例、评审用例和执行用例。 测试管理系统,包括手工用例管理、自动化用例管理、资损用例管理等,包括功能测试、性能测试和兼容性测试用例等,是支持快速迭代的全量测试用例管理中心。
功能特点:
【集成用例管理】
【自动化用例管理】
流水线管理系统(Pipeline-Based Management), 以Pipeline为中心, 包含Push流水线、MR流水线、提测流水线, 集成流水线,发布流水线等。流水线系统是持续集成与持续部署(CI/CD)核心,通过在流水线中自构建和部署,可以快速地将代码变更集成到应用和发布到环境,实现快速集成和交付。
功能特点:
【流水线任务管理】
【流水线插件管理】
发布管理系统(Service-Based Management),以应用/制品为核心,经过应用依赖编排,根据各应用的服务特征和配置等,通过发布流水线,发布上线。 发布管理系统支持滚动发布、蓝绿发布和同城双活发布功能。 并且支持不同技术栈和发布场景, 包括前端发布、算法发布和社区发布等。
功能特点:
【应用发布】
【蓝绿发布】
时间手账系统(Time-Based Management),以时间管理为核心, 经过时间分配、时间投入登记、时间分析复盘和时间管理优化等过程, 形成时间管理最佳实践。在时间手账系统上,能够清晰的看到各个职能团队和项目组的时间投入分配、个人工作任务时间花费情况,以及其他工作事项的时间投入的细节。 能够帮助个人和团队优化时间管理,减少低价值工作时间投入, 提升单位时间工作效率,进而提升整体研发效能。
功能特点:
【时间分析】
研发效能度量是一个至关重要的领域,值得专门讨论和分享。首先,我们要认识到研发效能度量贯穿于软件开发的整个生命周期,它不应该仅仅被视为某个特定环节的任务。这意味着从需求分析到设计,再到编码、测试、发布,直至软件交付,每一个阶段都需要关注和实施有效的度量。
其次,度量的根本目的在于促进更有效的管理和持续改进。正如管理学大师德鲁克所强调的那样:“如果你不能度量它,你就不能管理它。”这句话指出了度量在管理过程中的核心作用,通过具体、可量化的数据,管理者能够清晰地把握研发过程的效率和成果,从而做出更加明智的决策。
最后,尽管度量的重要性不言而喻,但我们也必须警惕陷入度量指标的陷阱。度量工作应当服务于研发效能和产品质量的提升,而不是单纯为了收集数据而收集数据。我们需要确保度量工作能够真正地为研发过程带来价值,而不是成为团队的负担。简而言之,度量应当被视为提升研发效能的工具,而不是目标本身。
得物研发效能度量体系包含 研发效能展示层、研发效能度量评估层、研发效能度量数据层和研发效能数仓,能够提供全流程全视角的研发效能度量能力。
「研发效能度量展示层」
「研发效能度量评估层」
「研发效能度量数据层」
首先,我们需要明确终极指标,即用户价值或需求价值。这通常是我们计算人效的关键,也是最终的结果指标。为了优化这一结果指标,我们需要识别出过程指标和约束项。通过减少约束并提高过程指标,我们可以提升最终的结果指标,从而提升整体研发效能。
其次,参考DORA 4-key-indicator指标。 DORA在其研究报告中提出了四个关键指标,用于衡量软件交付和运维性能。这些指标在实践中被证明与高绩效团队相关,可以帮助组织更好地了解其当前的软件交付能力,并找到改进的方向。这四个关键指标包括:
最后, 结合现有业务场景现状和研发模式, 补充现阶段比较关心的过程指标比如质量内建指标、代码质量和测试效率等。最终形成得物研发效能度量指标集。
基于得物研发协同模式,研发效能度量聚焦在规划与协同阶段, 研发与验收阶段, 和发布与运营阶段三大阶段和大能力域: 「需求管理」、「任务管理」、「缺陷管理」、「版本管理」、「代码管理」、「API管理」、「持续集成」、「测试管理」、「环境管理」、「发布管理」, 在各个能力域分别定义了比较详细的度量指标。
效能大盘-标准迭代度量
在迭代过程中,我们通过跟踪交付效率、交付质量和交付能力的数据,深入分析具体需求和职能团队,识别改进点。通过持续跟踪和优化,确保每个迭代都能有所进步。
效能洞察-全域看板
通过研发效能数据仓库,实现数据聚合功能,我们能够在效能洞察系统中查看全域、多迭代的数据。该系统支持在研发效能的十大能力域内洞察效能水平,为持续改进提供全面的数据支持。
提升研发效能是一个复杂的过程,涉及到方法论、技术、工具、流程、人员和文化等多个方面。只有当这些元素协同工作,形成一个支持快速学习、持续改进和高效协作的环境时,组织才能真正实现研发效能的提升。
得物研发效能团队演化进程,大概可以分为三个阶段, 分别是工具型团队、平台型团队和业务型团队。 研发效能团队发展的三个阶段并不是刻意定义和驱动形成,而是随着组织对于研发效能需要和解决问题方法逐步演进形成。
得物技术团队始终以“稳定”“效率”“体验”“成长”“创新”作为核心关键词,致力于打造学习型组织,不断提升技术硬实力,立志成为上海最优秀的技术团队。
在提升研发效能的过程中,我们始终保持高度的共识和行为一致性。团队在工作中具备明确的目标、开放的沟通环境和持续学习的态度。在项目推进过程中,我们逐渐形成了一系列行为习惯:
通过坚持这些行为准则,我们确保团队在研发效能提升过程中,始终保持高效协作和持续进步,推动得物技术研发效能不断提升。
技术部荣誉激励
值得一提的是,得物技术团队始终重视并积极激励那些在优秀实践中表现突出的个人和团队。为此,我们专门设立了一系列研发效能实践荣誉激励奖项,以表彰在研发效能方面取得优异成果的贡献者。具体奖项包括:
通过这些激励措施,我们不仅认可了优秀实践的价值,还激发了团队和个人不断追求卓越、持续改进的动力。
提升研发效能绝非一朝一夕之事,而是一项涉及全企业、要求全员参与的系统性工程。它既需自上而下的决策引导,也依赖自下而上的执行力支持。过程中不仅要求明确的策略规划和强有力的领导推动,还需要每一位团队成员的积极参与和持续贡献。我们需要构建一个开放的沟通环境,鼓励创新思维,并采纳精益敏捷的实践方法,企业才能逐步构建起一个高效、协同的研发生态系统。未来,随着AI技术不断融入研发效能的各个环节,包括智能问答系统、AI智能编码、流水线问题智能定位以及研发效能Agent应用等,我们有充分的理由相信,研发效能的提升将为企业带来显著的市场竞争力、更快速的响应速度以及更强的创新能力。
*文/ Nik
本文属得物技术原创,未经得物技术许可严禁转载,否则依法追究法律责任!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。