文章

一场关于研发效能的思考

一场关于研发效能的思考

序言

德鲁克管理准则揭示,效能是做正确的事,效率是正确地做事。研发效能必须以系统视角融合目标校准(价值有效性)、‌流动优化‌(端到端交付)、‌能力沉淀‌(知识复用)三重维度,避免陷入个体效率的局部优化陷阱。

研发效能 = ∑(个人效率) × ‌流程润滑度‌ × ‌目标对齐度‌ × ‌知识复用率‌。如同交响乐团——个人演奏技巧(效率)是基础,但指挥协同(效能)才能成就完美乐章。

个人效率,是单点突破的“加法逻辑”,聚焦单点任务执行速度(如代码行数/缺陷修复量等)。团队强调研发效能,是系统协同的“乘法逻辑”,‌关注端到端价值流动效率(需求交付周期/用户价值转化率/流动效率等),强调全局最优。

研发效能管理的核心维度

  1. 度量体系构建
    • 建立科学的指标矩阵(如需求交付周期、代码质量、部署频率)
    • 区分过程指标(代码评审通过率)与结果指标(用户满意度)
    • 避免”指标陷阱”:过度优化局部指标导致系统失衡
  2. 流程优化方向
    • 价值流分析:识别从需求提出到交付的阻塞点
    • 敏捷实践落地:每日站会应聚焦障碍清除而非进度汇报
    • 分支策略选择:平衡发布频率与代码稳定性
  3. 工程能力建设
    • 自动化金字塔:单元测试→接口测试→UI测试的合理配比
    • 环境治理:实现开发/测试/生产环境的一致性
    • 技术债务管理:建立定期重构机制
  4. 组织协作模式
    • 打破”需求流水线”思维,建立产品-技术深度协作
    • 采用契约测试解决微服务协同问题
    • 度量指标应与组织结构匹配(如特性团队vs组件团队)

组织协作模式

敏捷流程

Desktop View 敏捷流程

需求篇

需求类型

一般来说,需求分为产品需求(业务驱动)、技术需求(技术优化)和Bug

需求拆分

在敏捷实践中,根据颗粒度(即任务清晰程度)和优先级顺序的不同,需求通常被分为3个层级,分别是史诗、用户故事和子任务。

  • 史诗Epic),也称史诗故事,是基于产品长期战略被提出的、颗粒度最大的研发需求,具有跨迭代特性。它通常表示一个可独立使用的产品功能模块或者功能合集,能够被拆分成若干个用户故事并在多个迭代周期中完成。
  • 用户故事,也称故事,是任务需求最清晰的、颗粒度最小的需求,一般要求在一个迭代周期内完成。当需求落到故事层级,敏捷团队就可以通过完成它实现价值交付,因此故事有时也被称为需求的最小可交付单位。
  • 如果说故事是最小可交付单位,那么子任务就是最小可执行单位,在LigaAI中以子任务或Subtask表示。它是用户故事的完成路径,是组成故事的具体工作事项;只有将若干个子任务全部完成,才能最终交付完整的用户故事。

Desktop View 用户故事(图片来自网络)

制度篇

迭代周期制

拿双周迭代举例,看怎么把时间和角色融入到敏捷流程中。

Desktop View 进版计划示例

  • 迭代周期定义:每周二到下下周一;
  • 需求PRD评审:由产品发起(技术专项需求主R充当产品角色),确定好关联方(比如运营、前后端开发、设计、测试),组织相关人员参加,拉齐需求认知;
  • 需求进版排期:由项目经理发起,第二周的周四定为需求评审日,需求最晚在评审日确定,最好需求评审前确定;提前收集好优先级不等的需求(含完整的PRD文档、最终UI设计等),各方Owner对需求初步评估(人力、技术难度等),最后给出开发、测试和上线排期;
  • 迭代开始:周二开始下一个迭代开发;
  • 技术方案评审:由RD发起,组织相关人员参加(必须有产品和测试),拉齐技术实现,对齐需求目标;
  • 测试用例评审:由测试发起,组织需求相关人员参加(必须有产品和研发),拉齐测试case,对齐需求目标;
  • 开发阶段:编码开发、单元测试、开发自测、发起CR,联调测试通过后,提测准入;
  • 测试阶段:冒烟测试、自动化测试、业务测试、性能测试,测试通过后产出测试报告,并通知产品验收;
  • 验收阶段:验收通过,等待发版;验收不通过,回炉改造后,重新进行测试、验收;
  • 迭代发版:每个团队可以根据双周迭代节奏自定义发版时间窗口,可根据各需求实际情况自行调整(比如需要跨迭代),一般发版时间窗口为周二或者周四。

每日晨会+周会周报制

晨会制度通常聚焦于短期任务协调,周会周报体系更侧重战略层面。

  • 晨会应聚焦障碍清除而非进度汇报,建议在上班后15-20分钟内完成,采用站会形式提升效率,避免影响后续工作节奏;
  • 全体周会常来同步项目进度与风险预警,管理层周会则用来决策资源调配与目标调整,周会预留充分讨论时间;
  • 通过轮值主持机制培养团队成员的综合能力;
  • 该制度成功关键在于保持仪式感与实用性的平衡,避免陷入形式主义。

Owner责任制

一个项目需求(特别是大型跨部门需求)一定要有主O方,主O方基本充当需求驱动、把控项目节奏、质量验收的角色,一般需求的主O方由业务需求提出方承担(需求利益关切方),从主O的角度来说,应该对端到端的结果质量负责。

  • POPRODUCT OWNER(产品Owner
  • FOFUNCTION OWNER(研发Owner
  • VOVALIDATION OWNER(测试Owner
  • PMOPROGRAMER MANAGER OWNER(项目经理Owner

如果需求跨了部门(比如AB两个部门),A部门为业务需求提出方,那么A部门为主OB部门配合A部门完成需求。需求评审、技术评审,以及上线前评审,应由主O发起,把跨部门项目组相关人员拉在一起,对齐开发、上线节奏,切记不要遗漏相关方。

规范篇

开发规范

  • 需求分析:由产品同学提供完整的PRD进行分析,对PRD内容的合理性、可行性进行正确评估,对PRD中存在的问题,需要在需求评审会上集中讨论解决,严格保证开发之前PRD是由产品、前端、后端、测试,多方认同的。
  • 技术方案评审:主要考虑需求的具体实现方案,重要的技术方案,需要拉上项目相关同学一起讨论。对功能点进行拆分形成任务,保证不遗漏、不重复,对任务进行时间安排规划。
  • 开发:严格遵守devtest、预发布、线上分支流程,简单的功能要求完成自测,复杂的功能要求完成自测,并对部分逻辑进行单测,自测、单测通过之后上dev环境,进行回测;
  • 测试dev环境回测完成之后,将已经完成的需求告知测试同学,进行提测;提测需要准入,需要通过安全渗透测试、漏洞复测、单测覆盖率等,提测过程中出现的问题要及时解决,并保证上述各个环节的质量。
  • 上线SOP评审:梳理上线的功能点,保证上线内容是由产品、前端、后端、测试,多方认同的,组织上线CheckList文档评审,保证上线造成的影响最小化。
  • 灰度上线至全量:按照上线CheckList的计划执行服务发布上线,上线期间遇到问题,及时沟通、解决。各方上线后,应在需求群中周知相关方。需严格按照服务发布静默/封网规范进行服务的发版。
  • 回归测试:产品、前端、后端、测试,多方同学都可以进行回测,保证上线逻辑的准确性;测试同学回测完毕之后,应邮件通知相关人员。
  • 组织复盘:对迭代过程进行全面分析,做得好的经验分享,做得不好的改进计划,可以选择在每周周会进行分享。

代码分支规范

Desktop View GitLab协同工作流

  • master分支:master为主分支,也是用于部署生产环境的分支,确保master分支稳定性,master分支一般由release以及hotfix分支合并,任何时间都不能直接修改代码;
  • test分支:test为测试分支,始终保持最新完成以及bug修复后的代码;
  • feature分支:开发新功能时,以master为基础创建feature分支。分支命名: feature/开头的为特性分支,命名规则:feature/user_modulefeature/cart_module
  • release分支:release为常规需求的预上线分支,提测分支阶段,release分支代码为基准提测,最后合并到master分支;
  • hotfix分支:分支命名hotfix/开头的为修复分支,它的命名规则与feature分支类似。线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和test分支。

版本管理规范

  • SNAPSHOT版本分三部分+后缀: 大版本.中版本.小版本-SNAPSHOT 比如:0.1.0-SNAPSHOT
  • RELEASE版本分三部分: 大版本.中版本.小版本 比如:0.1.0
  • 开发分支打SNAPSHOT
  • 合到master后再统一打release版本
  • master然后再升级到下个SNAPSHOT版本

服务分级规范

  • 核心服务:核心链路中必不可少的服务, 是调用链路中的的必经服务, 不可用会导致整个功能或业务不可用,其它业务或服务的强依赖。
  • 次核心服务:业务中解决用户痛点,提升用户体验的服务,并不是调用链路中的必经服务,挂掉不影响核心调用链路,不影响用户使用核心功能,但是会牺牲掉用户体验,对用户很不友好,其它业务或服务的弱依赖。
  • 非核心服务:不可用对用户影响比较小或者无感知,其它业务或服务的弱依赖。

强弱依赖的定义:不影响业务流程、不影响业务可用性、没有带来损失的依赖都是弱依赖,反之就是强依赖。
服务级别越高,架构设计的可用性和资源倾斜力度越大。

其他规范

除以上规范外,还会有运维管理规范数据管理规范等。

工程能力建设

多环境建设

  • 开发环境feature分支对应的开发环境,用于RD联调、自测。
  • 测试环境test分支对应的测试环境,用于QA测试。
  • 预发布环境release分支对应的预发环境,用于上线前最后一轮的仿真测试,高度仿真线上环境。
  • 线上环境master分支对应的线上环境,提供线上服务。

效能平台

效能平台的本质是 ‌“用系统确定性应对业务复杂性”‌,通过技术中台固化最佳实践(DevOps流水线)、通过数据中台驱动持续改进(如资源利用率优化),最终实现“人效×系统效”的乘数效应。

研发流程运营

自动化覆盖代码构建、测试部署、上线发布、监控告警等环节,缩短交付周期。

业务运营

统一平台是“业务操作系统”,以‌数据融合为血液‌、‌流程自动化为骨架‌、‌智能决策为大脑‌,驱动企业从“单点效率”升级为“系统效能”。

数据运营

统一数据运营平台是 ‌“将数据原油炼化为业务燃料”‌ 的智能中枢。通过数据资产化(消除孤岛)、分析智能化(预测决策)、运营场景化(闭环赋能),实现从“事后统计”到“实时驱动”的进化。

统一运维

统一运维平台是 ‌“用技术确定性支撑业务敏捷性”‌ 的数字基座。通过全局资源池化、操作自动化、监控智能化,将运维从“救火式响应”升级为“预防性服务”,最终保障互联网业务的高可用与持续创新。

最后

所有的研发效能管理最终都得落实到团队和组织架构中,研发效能管理需融合流程精益化‌(如价值流分析)、‌工程自动化‌(如DevOps平台)、‌组织敏捷化‌(特性团队)三支柱,方能持续释放技术团队的战略价值。

附录

QA

问题1

Q1后端服务发布上线,为什么要规定发版时间窗口?发版时间窗口为什么最好选在周二或者周四?

A1核心在于‌平衡风险缓冲、团队协作效率与系统稳定性。‌

  1. 流程标准化与资源协同
    • 强制开发纪律性‌,固定窗口倒逼开发团队提前完成代码集成,避免“最后一刻提交”导致的测试遗漏,如需求要排期周二发版需上周五封版‌,强制预留3天集成测试周期。‌
    • 集中运维资源‌,运维团队只需在特定日期值守,避免日常高频发布分散人力。基础设施资源(如预发环境)可复用,减少环境冲突概率。
  2. 风险缓冲与紧急响应(核心价值)
    • 故障处理时间窗口‌
      • ‌周二发布‌:若上线后出现故障,可利用周三、周四工作日快速修复,避免问题滞留到周末。
      • 周四发布‌:周五仍保留完整工作日用于应急(如回滚/补丁),大幅降低周末加班概率。
      • 案例:某支付系统周四发版遇数据兼容性问题,团队周五完成回滚,避免影响周末交易高峰。
    • 规避绝对高风险期‌
      • ‌周一‌:团队处于工作启动期,易因准备不足导致发布流程混乱;
      • 周五‌:故障可能引发周末全员紧急响应,且跨部门协作效率低下。
  3. 跨部门协作优化,对齐产品/测试节奏‌
    • 测试团队可规划每周一、三集中验证,与发版窗口形成闭环;
    • 产品经理可在发版后及时观察数据,快速决策下周需求。

周二/周四窗口是‌风险控制的仪式化实践‌——通过牺牲部分发布灵活性,换取故障响应的时空冗余性,尤其适配用户量大、故障容忍度低的业务。

问题2

Q2“半夜三更,低峰期上线”和‌“夜间部署预发布环境验数,第二天白天再发布线上环境”,应该选择哪个?

A2这个问题涉及三个关键技术点:环境差异风险、故障响应效率、业务流量特征。低峰策略核心是减少影响用户数,白天策略核心是保障修复效率,核心差异在于‌风险分层处理‌和‌关键环节的资源保障。最佳选择是在“用户无感知”与“团队高效应急”间取得平衡,而非机械执行时间规则。“‌夜间预发布验证+白天生产发布‌”的分阶段策略,与传统的低峰期上线策略‌并不冲突‌,而是基于业务特性对低峰期策略的精细化升级,尤其适用于故障成本高、架构复杂的系统。

系统高可用性应该用“受影响请求数/总请求数”来评估,单纯按物理时间划分高低峰是片面的。

  • 对于金融交易类系统,白天少量灰度发布可能比深夜全量发布实际影响的请求更少。
  • 对电商秒杀系统,大促前夜的发布反而可能是真正低峰。
  • 不同业务有完全相反的“高峰”定义,比如某些广告系统凌晨才是流量高峰。

不同业务对“低峰期”的定义和风险承受力不同,

‌业务类型‌ ‌传统低峰期策略适用性‌‌分阶段策略必要性‌
‌高频交易系统❌ 凌晨发布风险高✅ 需即时修复能力(如支付故障)
‌内部管理后台✅ 影响小,可凌晨发布⚠️ 非必需
‌微服务架构应用❌ 依赖链复杂,难快速回滚✅ 白天发布便于多团队协同止损
  1. 策略目标的一致性:规避高峰流量(如午间/晚间峰值)。两种策略均遵循“避开业务高峰期”‌ 的核心原则,但侧重点不同:
    • 传统低峰期上线‌:通常指在‌全天流量最低时段(如凌晨)一次性完成所有环境发布‌,以减少用户影响。
    • 分阶段策略‌:预发布验证在夜间‌,利用夜间‌自然低流量‌完成接近生产环境的测试与数据核对(对数),避免干扰用户。生产发布在白天‌,选择‌工作日流量可控时段(如上午)‌,而非绝对流量最低的凌晨,以保障团队响应能力。分阶段策略进一步区分了验证与发布的优先级。
  2. 冲突的化解:关键矛盾在响应效率而非时间点
    • 若仅在夜间低峰期一次性发布,会面临两大风险,
      • 故障响应延迟‌:凌晨发布若遇问题,团队可能因不在岗或疲劳操作导致故障扩大。
      • 预发布验证不充分‌:夜间一次性完成发布,可能压缩预发布环境的数据核对、性能压测时间,掩盖环境差异问题。
    • 分阶段策略优势‌:‌夜间专注验证‌(无用户干扰) → ‌白天快速响应‌(全员待命,确保运维、开发、测试团队全程值守),既利用低峰期特性,又规避夜间响应短板。

最佳实践:低峰期与白天的协同
成熟团队往往结合两种策略优势:

  1. 预发布验证‌,严格在夜间低峰期完成
    • 生产级数据校对(如订单对账)
    • 全链路压测(模拟峰值流量)
  2. 生产发布‌,在‌次日的业务平峰期‌(如工作日上午10点)执行
    • 采用渐进式发布(金丝雀发布)
    • 确保运维、开发、测试团队全程值守
  3. 监控兜底‌
    • 发布后实时追踪错误率、延迟等指标
    • 自动熔断+人工回滚双保障
本文由作者按照 CC BY 4.0 进行授权