目标

  1. 通过明确技术难度,根据不同难度等级需求输出不同详尽程度或要求的技术方案,避免技术方案质量的不可控。
  2. 通过理清技术实现思路,尽早发现在实现产品需求/功能中在技术实现上的问题,避免返工,提高代码质量。
  3. 通过梳理当前技术实现的全流程任务,进行任务拆分和工时预估,由相关人员进行规模预估的评审,尽可能及时发现风险和问题,避免因估算规模偏差大导致计划的不可控。

    评审成员

  • 部门
  • 开发者
  • 第一评审人(难度:简单、一般)
  • 第二评审人(难度:复杂,或当第一评审人认为当前方案存在不确定性或无法达成一致意见或高难度技术方案时,邀请第二评审人参与完成最终方案的评审。)

    评审流程

image.png

评审形式

  • 所有评审不限线上或线下形式
  • 技术方案输出前如已判定故事为高难度高风险技术实现,及时邀请评审团成员参与共同需求评审或线下沟通
  • 所有面对面沟通评审必须完成沟通记录的沉淀

    开发者:评估技术难度等级,确定技术方案输出标准

  • 需求澄清会后,由相关开发成员在当前迭代下创建「前/后端技术方案评审」任务单,并根据以下技术难度标准判定进行技术难度等级评估 | 技术难度 |

    前端判定标准标准 |

    后端判定标准 | 方案输出标准 | | 归档要求 |

    评审人 | | —- | —- | —- | —- | —- | —- | —- | | | | | 前端 | 后端 | | | | 简单 |
    - 无业务变更风险
    - 影响范围单一
    |
    - 无性能风险,判定标准见下方注释
    - 影响范围单一
    |
    - 改动点
    - 影响范围
    |
    - 配置项
    - 接口设计
    - 表设计
    | 评审单中描述 |
    | | 标准 |
    - 无复杂交互
    - 有业务变更但风险可控
    - 影响范围广但明确
    - 小规模改动底层框架
    |
    - 存在性能风险,判定标准见下方注释
    - 影响范围广但明确
    - 小规模改动底层框架
    - 引入新的小型第三方库
    |
    - 改动组件
    - 业务流程
    - 影响范围
    - 潜在风险
    |
    - 业务流程
    - 配置项
    - 接口设计
    - 表设计
    | 可根据实际情况:
    - 评审单中描述
    - wiki文档记录

    |
    | | 复杂 |
    - 新项目/新业务
    - 影响范围广
    - 大规模改动底层框架
    - 引入或升级NPM包依赖
    - 组件库新增或者升级组件
    - 复杂交互
    |
    - 新项目/新业务
    - 影响范围广
    - 大规模改动底层框架
    - 引入新的大型第三方库
    - 引入新的基础设施组件
    |
    - 调研过程记录
    - 选型依据
    - 影响范围
    - 潜在风险
    - 组件文档

    |
    - 调研过程记录
    - 选型依据
    - 版本/配置变更流程
    - 业务流程
    - 配置项
    - 接口设计
    - 表设计
    | wiki文档记录 | |

开发者:输出技术方案,拆分任务,预估工时,创建评审单

  • 根据技术难度等级,输出相应标准的技术方案,归档wiki, 并将该wiki链接贴在相应的「技术方案评审」任务单描述中(如判定为复杂难度或根据实际情况,可在该阶段邀请评审人进行提前沟通,明确思路)
  • 根据输出的技术方案进行任务拆分和工时预估
  • 完成上述工作后,将「待评审」的【前/后端技术方案评审】任务单负责人转给相应的评审人员,填写「评审人员」成员属性

    评审者:评审技术方案

  • 评审人员收到「待评审」任务单后,根据提交方案进行评审

    • 评审「技术难度」,在当前开发者提交的技术难度基础上进行判定和修改,确保复杂方案设计的有效性
    • 评审「技术方案」,对当前开发者提交的技术方案进行评审,可根据实际情况采取线上或线下评审(原则上要求所有「复杂」等级技术难度方案进行线下面对面评审)
    • 评审「任务拆分和工时预估」,识别任务拆分和工时预估中的问题或风险,帮助团队减轻估算偏差造成的计划变更
    • 记录评审结果:在当前任务单评论中记录评审问题
    • 完成本轮评审,将状态流转至「评审通过」/「评审不通过」

      开发者:修改技术方案/重新评审

  • 如「评审不通过」,根据评审记录和意见完成方案修改后重新完成评审流程