结对与群体编程是什么
结对编程(Pair Programming)来自极限编程(XP):两个人共用一台机器,一人握键盘写(驱动者),另一人盯边界条件与异常分支(观察者),定时互换角色。群体编程(Mob Programming)把它扩展到一屏 3-5 人:一个人操作,其余人实时讨论方案。共同点是把「写完再评审」提前到「写的过程中评审」,缺陷在落键盘那一刻就被拦下,知识传递是顺带结果;代价是同一段时间消耗更多人。
基本信息
| 结对 | 两人一机:一人写码一人把关,定期轮换 |
|---|---|
| 群体 | 3-5 人一屏:集体设计、轮流驱动 |
| 适用 | 复杂逻辑、关键路径、新人带教、疑难排障 |
| 前置条件 | 任务边界清楚,两人能在同一份上下文里讨论 |
| 成本 | 单位时间占用的人更多,回报体现在缺陷率与上手速度 |
典型使用场景
- 核心算法或计费、权限等出错代价高的逻辑,需要写完即被校验
- 新人入职第一两周,用真实任务替代脱产培训
- 线上疑难故障,两人以上同时推理比单打独斗收敛更快
- 关键模块只剩单点掌握,用结对把隐性经验摊开
- 方案分歧大、返工成本高时,用群体编程一次把设计谈完
节奏建议示例
节奏建议示例
25-50 分钟一轮换,避免疲劳 # 时间过长双方注意力都会掉
驱动者专注键盘,观察者思考边界条件 # 分工不同,不要两人抢键盘
每天配对不超过半天,其余时间独立工作 # 保留个人深度思考的时段
轮换时交换角色并复述当前思路 # 复述最容易暴露理解偏差
结束后记一条改进项 # 复盘节奏比结对本身更易被丢掉角色与职责
| 角色 | 主要职责 | 常见误区 |
|---|---|---|
| 驱动者 | 敲代码、执行验证、把讨论转成实现 | 边讨论边随手改,范围超出当前任务 |
| 观察者 | 检查逻辑边界、异常分支、命名与重复代码 | 退化成沉默的旁观者 |
| 主持人 | 群体编程中控制议题与轮换节奏 | 自己也抢键盘,节奏失控 |
| 参与方 | 提出反例,记录结论与待办 | 讨论完无人负责落地 |
远程结对可用共享终端画面加语音,或编辑器的协作模式(如 VS Code Live Share、JetBrains Code With Me);延迟与光标争夺是主要体验问题,多数团队会改为「一人操作、一人语音指挥」。
结对之前先对齐目标与验收标准:需求本身没谈清时,两人会把时间花在论证各自理解上,反而比各自做慢。