🛠️ 第13章 从个人开发助手到团队级研发流程
📄 一句话概括

四步:一个人用顺手、两个人共享规则、三人小组加闸门、全组推广。 每步一个验收,不是「做了」而是「达到了什么状态」。 跳步的代价是可算的:六个人的规则两两比对,十五对全都有分歧。

📝 本章和前面几章的关系

前三篇讲清了「为什么要团队化、共享什么、怎么并发」。这一篇讲顺序。 为什么顺序这么重要? 因为团队化最常见的失败不是「做错了」,是「跳步了」—— 一次把所有人的规则收上来,然后花三个月吵一份共识。 Demo 给四步各配一个人数、一个通过率、一个返工率,再算一次跳步的代价: 六个人的规则两两比对,十五对里每一对都有两项以上不一致。

一、四步顺序

步骤 人数 验收标准
1 一个人用顺手 1 同一套命令跑满二十次
2 两个人共享规则 2 两人用同一份规则文件两周
3 三人小组加闸门 3 review 与 CI 都跑起来
4 全组推广 6 新人上手不靠口头教

四个人数是 1、2、3、6,不是 1、5、20、100。 这一点很关键:第四步的「全组」是「一个小组」,不是「全公司」。 一个小组跑通了,才谈得上第二个小组。 四步的顺序有一个内在逻辑:每一步解决的是上一步留下的新问题。 一个人时有手感就够了;两个人时手感传不过去,所以要文件;三个人时文件管不住分歧,所以要闸门; 六个人时闸门要自动化,所以要 CI。 三个验收标准里,第三个最容易被【做】成形式。 「review 与 CI 都跑起来」不是「开了 review 功能」,是「有一次 diff 被拦下来了」。 跑起来和被用上,是两件事。

二、为什么不能跳步

Demo 里六个人各有一套自己的规则,两两比对。 十五对组合,每一对都有两项以上不一致。 这个结果不是「他们不团结」,是「他们各自踩过不同的坑」。 张踩过缩进的坑,所以有 indent;李踩过长文件的坑,所以有 max_files; 王踩过误提交的坑,所以有 auto_commit。 跳步的代价就是这个数:你要先把十五对分歧收敛成一份。 而收敛的方式如果是「开个会讨论」,会开不出结果—— 因为每一条背后都有一个具体的事故,而事故之间没有可比性。 正确的收敛方式是「按事故排序」: 最近三个月发生过两次以上的坑,进规则;只发生过一次的,先记着。 这条判据能让讨论从「谁对」变成「多久发生一次」,而后者有数据。

三、每一步的验收

验收标准必须是「一个状态」,不是「一个动作」。

动作(不算验收) 状态(算验收)
开了 review 功能 有一次 diff 被拦下来
写了规则文件 两个人用了两周没改过它
接了 CI 有一次构建失败被它发现
培训了全组 新人只靠文档跑通一次

右边四行有个共同点:都能被「一次事件」证实或否证。 「开过会」不能被否证,「有人被拦下来过」能。 第四行是最值得做的那一条。 找一个没参与的人,只给他文档和仓库,看他能不能跑起来。 跑不起来的地方,就是文档缺的地方。 这条验收比任何「满意度调查」都准,因为它不问你感觉如何,只问「能不能跑通」。 而且它可重复:换一个新人,结论应该一样。

四、本章小结

问题 答案在哪一节 一句话
什么时候该上 13.1 四个信号,别按人数
共享什么 13.2 三层配置,权限不外放
怎么并发 13.3 worktree 隔离,交接要留全
按什么顺序 13.4 1、2、3、6,每步一个验收

四节的共同点是「把感觉换成能被证实的东西」。 成熟度换成四个信号,共享换成三层配置,隔离换成三棵树,顺序换成四个验收状态。 这一章讲的是「一群人」。下一章讲「边界」—— 哪些事无论如何都不该交给它,以及出错之后怎么归因。

五、动手 Demo:小团队试点的落地顺序:四步,每步一个验收

四步各一个人数、一个通过率、一个返工率、一个验收标准。 再算一次跳步的代价:六个人的规则两两比对,看有多少对不一致。 四个比率是我按经验设的,不是测出来的——能看的是【方向对不对】,不是【能到多少】。 而那个「十五对全有分歧」是脚本真算的。

rule_sets = {
    "张": {"line_width", "indent", "test_cmd"},
    "李": {"line_width", "indent", "lint", "test_cmd", "max_files"},
    "王": {"line_width", "test_cmd", "auto_commit"},
    "赵": {"indent", "lint", "test_cmd", "map"},
    "钱": {"line_width", "test_cmd", "lint", "scan"},
    "孙": {"test_cmd", "max_files", "auto_commit"},
}

for a, b in itertools.combinations(sorted(rule_sets), 2):
    diff = (rule_sets[a] | rule_sets[b]) - (rule_sets[a] & rule_sets[b])
    if len(diff) >= 2:
        print(a, b, len(diff))

实跑输出:

--------------------------------------------------------------------
小团队试点的落地顺序:四步,每步一个验收
--------------------------------------------------------------------

  团队化最常见的失败不是「做错了」,是「跳步了」。四步各有一步的验收。

  ① 四步与各自的验收
  --------------------------------------------------------------------
| 步骤 | 人数 | 一次通过率 | 返工率 | 验收标准 |
|---|---:|---:|---:|---|
| 1 一个人用顺手 | 1 | 35% | 55% | 同一套命令跑满二十次 |
| 2 两个人共享规则 | 2 | 45% | 45% | 两人用同一份规则文件两周 |
| 3 三人小组加闸门 | 3 | 58% | 36% | review 与 CI 都跑起来 |
| 4 全组推广 | 6 | 65% | 30% | 新人上手不靠口头教 |

  四个人数、四个比率。注意最后一步的人数写的是六——它是「一个小组」的规模,不是「全公司」。

  ② 为什么不能跳步
  --------------------------------------------------------------------
| 两人 | 不一致的项 | 条数 |
|---|---|---:|
| 孙×张 | auto_commit、indent、line_width、max_files | 4 |
| 孙×李 | auto_commit、indent、line_width、lint | 4 |
| 孙×王 | line_width、max_files | 2 |
| 孙×赵 | auto_commit、indent、lint、map、max_files | 5 |
| 孙×钱 | auto_commit、line_width、lint、max_files、scan | 5 |
| 张×李 | lint、max_files | 2 |

  六个人两两组合 15 对,有 15 对存在两项以上不一致。
  ! 跳步的代价就是这个数:不是多开几次会,是要先把 15 对分歧收敛成一份。

  ③ 每一步该补的前置
  --------------------------------------------------------------------
| 跳到第几步 | 必须补什么 |
|---|---|
| 直接全组推广 | 先写出至少一份跑满二十次的流程 |
| 从第 3 步开始 | 先让两个人用同一份规则两周 |
| 从第 4 步开始 | 先有一个小组的 review 和 CI 在跑 |

  三行是同一个意思:把上一步的验收补上,再往前走。补的不是流程,是「别人凭什么信这套流程」。

  ④ 推广时的三个坑
  --------------------------------------------------------------------
| 坑 | 症状 | 怎么绕 |
|---|---|---|
| 规则一次写三十条 | 没人看完,也没人遵守 | 先三条,用一个月再加 |
| 能力包不版本化 | 一个项目升级,别的全坏 | 第一次共享就锁版本 |
| 跳过新人验证 | 老人都会,新人一脸问号 | 让新人只靠文档上手一次 |

  第三行是最值得做的验收:找一个没参与的人,只给他文档和仓库,看他能不能跑起来。
  跑不起来的地方,就是文档缺的地方。
  ! 这条验收比任何「团队满意度调查」都准,因为它不问你感觉如何,只问「能不能跑通」。

  ⑤ 四步走完之后
  --------------------------------------------------------------------
| 指标 | 第一步 | 第四步 | 方向 |
|---|---|---|---|
| 一次通过率 | 35% | 65% | 升,好事 |
| 返工率 | 55% | 30% | 降,好事 |
| 新人上手时间 | 靠问人 | 靠文档 | 不靠人了 |
| 规则条数 | 3 条 | 8 条左右 | 涨,但可控 |

  四个数里两个是比率,方向都对:通过率往上、返工率往下。另两个不是数,但趋势同样清楚。
  这些值是我按经验设的,不是测出来的。能看的是「方向对不对」,不是「能到多少」。

四步那张表里,最后一步写的是六个人。 它不是笔误——「全组推广」推的是「一个小组」,不是「全公司」。 一个六人小组跑通了,第二个小组才有模板可抄。 十五对全有分歧,这个数看着吓人,但它其实是好消息。 它说明每个人都真的在用自己的方式干活,而不是「其实没人想过这事」。 有分歧能收敛,没想法才难办。 收敛的办法不是开会,是按事故排序。 最近三个月发生两次以上的进规则,一次的先记着—— 这条判据把「谁对」换成了「多久一次」,而后者有数据。 最后那张表四行里,第四行最值得做:找一个没参与的人,只靠文档跑一次。 跑不起来的地方就是文档缺的地方,而且这个结论可重复——换一个新人,答案应该一样。

30 秒实验

  1. 写下你现在处在第几步。 写下那一步的验收标准达到没有。 两件事都写不出来,说明你在跳步。
  2. 找一个没参与你项目的人,只给文档和仓库,看他能不能跑起来。 卡住的地方,就是你要补的地方。
  3. 数一下你们最近三个月每个坑发生了几次。 两次以上的进规则,一次的先记着。

常见误区

  1. 「直接全组推广,边用边改。」 边用边改的意思通常是「改的人累死,用的人各改各的」。 六个人十五对分歧,收敛要时间。
  2. 「验收就是看有没有做。」 做是动作,达到状态才是验收。 「开了 review」和「有一次 diff 被拦下来」是两件事。
  3. 「共识靠开会形成。」 开会能形成表态,形成不了共识。 按「多久发生一次」排序,才有可讨论的对象。
自测三问(点开对答案) 1. 四步的人数为什么是 1、2、3、6? —— **每一档解决上一步留下的新问题。** **而第四步的「全组」是一个小组,不是全公司。** 2. 为什么跳步的代价这么大? —— **因为六个人十五对全有分歧,而每一对背后都有一个具体事故。** **事故之间没有可比性,所以讨论不出结果。** 3. 验收为什么必须是「状态」而不是「动作」? —— **因为状态能被一次事件证实或否证。** **「开过会」不能被否证,「有人被拦下来过」能。**

第 13 章到这里收住。最后一章讲边界:哪些事不该交,出错之后怎么归因。

相关笔记