研发工作流模型¶
结论:研发工作流的价值不在步骤数量。它让每类工作进入合适的对象,并用完成条件推动状态变化。
读者: 需要设计或改进研发协作流程的人。
用途: 用统一模型判断工作应放在哪里、何时可以推进、怎样才算完成。
边界: 本文讨论通用研发协作,不讨论人员绩效和具体行业规范。
1. 研究问题与方法¶
原始流程包含七个步骤。七个步骤连接想法、调研、决策、交付和项目跟踪。
本文不重复操作清单。本文回答一个更基础的问题:
研发流程怎样把不同类型的不确定性,转成可以协作、可以验收的工作对象?
本文采用四步整理:
- 提取原流程中的对象类型和完成条件。
- 把连续步骤归纳为状态层。
- 把规则归纳为推进门禁。
- 用反模式、度量和边界条件检验模型。
本文是概念研究。本文基于单个仓库流程整理。本文没有开展对照实验。
2. 核心结论¶
研发工作流可以写成一条最小模型:
四个条件分别回答四个问题:
| 条件 | 要回答的问题 | 最小合格输出 | 缺失后的典型表现 |
|---|---|---|---|
| 对象分层 | 当前工作是什么类型? | 一个匹配不确定性的工作对象 | 所有问题都塞进 issue 或聊天 |
| 状态转换 | 什么条件允许进入下一阶段? | 明确的入口条件和出口条件 | 工作长期停在讨论或执行中 |
| 完成证据 | 靠什么判断对象完成? | 可检查的结论、测试或验收结果 | 动作做了,状态不能关闭 |
| 周期反馈 | 怎样发现流程失效? | 固定检查项和修正动作 | 规则不断漂移,积压无人发现 |
关键判断有两点:
- 流程不是一条固定直线。对象可以跳过不需要的步骤。
- 跳过步骤不等于跳过判断。省略对象必须由更低的成本或风险支持。
3. 对象模型¶
研发工作流先区分对象,再规定动作。一个对象只解决一类问题。
| 对象 | 解决的问题 | 进入条件 | 完成条件 |
|---|---|---|---|
| Discussion | 问题存在,但做法不清楚 | 能描述问题、影响和场景 | 收到足够信号,或确认放弃 |
| Research issue | 存在一个明确未知项 | 问题可写成单个问句 | 结论写回正文 |
| ADR | 决策需要长期保存 | 影响范围大,或以后仍会被追问 | ADR 合并并进入 accepted |
| Feature | 交付需要多个单元 | 需要 2 个以上 PR,或超过 5 个工作日,或先改设计 | 全部 sub-issue 交付 |
| Task | 一个短交付单元 | 做法清楚,可以开始执行 | 对应 PR 合并 |
| PR | 一次可审查的代码变更 | 分支和一个明确交付目标 | 测试、评审和必要证据通过 |
| Project | 管理和观察对象状态 | 需要排期或跨对象查看 | 自动加入和字段状态可靠 |
对象模型使用下图表示。图中的箭头表达状态变化,不要求所有工作经过全部节点。
flowchart LR
A["问题或想法"] --> B{"未知项是否明确?"}
B -- "否" --> C["Discussion"]
C --> D["Research issue"]
B -- "是" --> D
D --> E{"需要长期决策?"}
E -- "是" --> F["ADR"]
E -- "否" --> G["Feature 或 Task"]
F --> G
G --> H["sub-issue / 分支 / PR"]
H --> I["验收与完成"]
对象分层的核心有两点:
- 未知项留在研究层,不把猜测写成交付。
- 长期决策进入决策层,不在多个 issue 中重复解释。
4. 状态转换¶
状态转换由完成条件和证据触发。角色不能只凭主观感觉推进状态。
4.1 理解门禁¶
Discussion 只负责发现问题。达到回复阈值或收到调研请求后,工作转入 Research issue。
Discussion 没有进入 Project 的价值。它不能承担排期和交付跟踪。
4.2 决策门禁¶
Research issue 必须只回答一个问题。研究结论必须写回正文,不能只留在评论里。
Research issue 有两个出口:
- 能直接执行,进入 Feature 或 Task。
- 需要长期保存,进入 ADR。
4.3 交付门禁¶
Feature 只承接足够大的工作。较小工作使用 Task。
Feature 的每个 sub-issue 都必须有验收标准。一个 sub-issue 对应一条分支、一个 PR 和一个可检查的交付结果。
4.4 完成门禁¶
PR 是代码证据,不是完成公告。
PR 至少满足以下条件:
- 测试通过。
- 必要评审通过。
- UI 变更提供真机证据。
- 没有未关闭的风险。
- 对应 issue 可以关闭。
Project 只记录状态,不复制完整正文。日期和进度字段只保留一处权威值。
5. 运行循环¶
工作流不是一个一次性项目,而是一个持续运行的控制循环。
flowchart TD
A["捕获问题"] --> B["限定未知项"]
B --> C["形成决策"]
C --> D["拆分交付"]
D --> E["验证证据"]
E --> F["更新状态"]
F --> G["周期检查"]
G --> A
每一轮循环执行六类动作:
- 捕获问题、影响和场景。
- 用时间盒限制研究范围。
- 把长期决策写入 ADR。
- 把可交付范围拆成小单元。
- 用测试、评审和真机证据关闭单元。
- 用周期检查发现积压、漂移和失效规则。
5.1 研究时间盒¶
Research issue 的默认时间盒是 2 个工作日。
允许延长一次。延长时间不超过原时间盒。
到期评审只决定两件事:结题或结束研究。评审不能让研究无限延长。
5.2 决策回填¶
未确定的决策引用必须在 5 个工作日内回填。
长期决策采用 ADR。旧 ADR 不删除,由新 ADR 标记为 superseded。
5.3 周期检查¶
维护人每周检查以下信号:
- 超过期限的
decision pending。 - 超过时间盒的 Research issue。
- 已合并但仍为
proposed的 ADR。 - 阻塞关系是否准确。
- Feature 的 sub-issue 进度。
- 等待 UI 评审的时间。
- Project 自动加入是否失效。
- 过期或不真实的
Target date。
6. 流程原则¶
6.1 一个对象只承担一个目的¶
Discussion、Research、ADR、Feature、Task 和 PR 不能互相替代。
一个对象承担多种目的时,状态和完成标准会冲突。
6.2 先降低不确定性¶
未知项进入研究,不进入交付。
研究用于回答问题。研究代码不得直接合并到 main。
6.3 用证据结束阶段¶
每个阶段都写完成证据。动作、工时和会议本身不是完成证据。
6.4 保持短反馈环¶
sub-issue 的工期控制在 1 到 3 天。
时间盒和周期检查限制工作停留在未知状态的时间。
6.5 只维护一处权威信息¶
正文写目标、结论和引用。Project 写状态、日期和进度。
同一信息不复制到多个对象。复制会产生冲突。
6.6 把流程变更当代码管理¶
流程文档通过 PR 修改。PR 需要非作者批准,并记录版本变化。
单人仓库可以自查。自查结论仍要写回 PR。
7. 度量建议¶
度量只用于发现流程问题。度量不能直接评价个人绩效。
| 指标 | 观察对象 | 可能说明的问题 |
|---|---|---|
| Research 结题时长 | Research issue | 问题过大或时间盒失效 |
decision pending 年龄 |
Feature 和 Research | 决策没有及时落地 |
| sub-issue 周期 | Feature | 拆分过大或阻塞过多 |
| PR 首次通过率 | PR | 验收标准或评审规则不清 |
| 证据缺失次数 | UI PR 和非 UI PR | 模板和门禁执行不稳 |
| 过期目标日期数 | Project | 排期没有维护 |
| 流程与仓库差异数 | 文档和配置文件 | 流程发生漂移 |
指标应结合案例解释。单独看一个数字不能证明流程有效。
8. 失败模式¶
| 失败模式 | 表现 | 修正动作 |
|---|---|---|
| 对象混用 | Discussion 直接变成 Feature | 先判断未知项和交付规模 |
| 研究无边界 | Research 长期不结题 | 只保留一个问题,并设置时间盒 |
| 决策只留在聊天 | 多个 issue 重复解释 | 建立 ADR,并回填引用 |
| 交付单元过大 | sub-issue 超过 3 天 | 按可验收结果继续拆分 |
| 没有验收证据 | 代码合并后仍无法关闭 issue | 在 PR 中补齐测试和验收项 |
| 状态字段失真 | Project 日期和状态过期 | 每周检查并清理字段 |
| 文档与仓库漂移 | 文档规则无法在模板中执行 | 用 PR 同步文档、模板和字段 |
9. 适用边界¶
本模型适合以下场景:
- 团队规模为 2 到 15 人。
- 使用 GitHub issue、PR 和 Project。
- 团队需要保留决策记录和交付证据。
- 团队可以执行每周检查。
本模型不覆盖以下场景:
- 需要 ISO 27001、SOC 2 等外部合规取证的组织。
- 不依赖 issue 和 PR 的工作流。
- 人员绩效评价。
- 超出单一研发团队的组织治理。
10. 与任务收敛模型的关系¶
研发工作流模型管理对象流。任务收敛模型管理单个任务能否执行。
| 层级 | 研发工作流模型 | 任务收敛模型 |
|---|---|---|
| 关注对象 | 团队工作和决策 | 单个任务 |
| 核心问题 | 工作应进入哪个阶段 | 当前任务能否推进 |
| 最小公式 | 对象分层 + 状态转换 + 完成证据 + 周期反馈 | 目标可判 + 下一步可做 + 完成可验 + 反馈可决 |
| 主要产物 | Research、ADR、Feature、Task、PR | 任务图、完成标准、反馈点 |
两个模型可以同时使用。工作流模型决定工作放在哪里。任务收敛模型决定当前对象是否已经可以执行。
11. 来源¶
原始材料¶
关联研究¶
方法参照¶
12. 局限与未验证项¶
- 模型来自单个仓库的流程总结。本文没有验证其他团队。
- 模型依赖 GitHub 的能力和配置。
- 团队规模 2 到 15 人是经验边界。本文没有确定精确适用范围。
- 本文没有量化流程对交付速度的影响。
- 指标用于诊断流程,不用于评价个人。
13. 版本记录¶
| 版本 | 日期 | 变更 |
|---|---|---|
| 1.0 | 2026-10-28 | 创建专题研究。从研发工作流中抽象对象模型、状态门禁和反馈循环。 |