我第一次接触KISS复盘法是在一场围棋比赛中。职业棋手在赛后总会做一件事:把对局从头到尾重演一遍,标记关键决策点——这被称为"复盘"。这种传统后来被日本围棋大师吴清源系统化为"保持优势手(Keep)、改进失误手(Improve)、尝试新战术(Start)、淘汰旧套路(Stop)"的四步法。
有趣的是,敏捷开发中的Sprint回顾会议与围棋复盘有着惊人的相似性。都强调三点核心:
我在带领团队实践Scrum时发现,直接套用围棋复盘模板会让工程师们更易理解。比如用"死活题"类比阻塞问题,用"官子阶段"比喻迭代尾声的资源分配。这种跨界类比消除了方法论的距离感。
某次为电商客户实施持续交付时,我们发现在压力环境下,团队自发形成了"晨会+午间同步"的双频沟通机制。这属于典型的意外优势——那些未被计划但效果显著的做法。
在复盘会上,我们通过以下方式固化优势:
关键要区分真正的优势与幸存者偏差。我们曾误将某次成功的紧急修复归因为英雄主义,后来用故障树分析发现实际是监控体系起了作用。
某金融项目遇到需求变更率高达70%的困境。传统做法是抱怨客户善变,但用KISS模型我们这样做:
这比单纯说"要加强需求管理"更可操作。我们后来把这个模式总结为"痛点→数据→实验→度量"的改进闭环。
技术债管理是个典型场景。传统做法是专门安排重构迭代,但往往被业务需求挤占。我们尝试:
这种渐进式创新比"重构月"更可持续。关键在于控制试错成本——我们规定任何新实践必须满足:
最难的是识别那些食之无味弃之可惜的"僵尸实践"。我们建立了一套淘汰机制:
有个反直觉的发现:那些"大家都觉得没用却还在做"的事情,往往承载着隐性功能(比如冗长的周报其实是跨部门博弈工具)。所以Stop环节必须配套分析替代方案。
在GitLab MR模板中,我们设计了KISS检查项:
markdown复制## KISS 复盘
- [ ] Keep:本次提交值得推广的模式(如防御性编程技巧)
- [ ] Improve:需要优化的代码段(用#L行号标注)
- [ ] Start:建议尝试的新工具/模式(如静态分析规则)
- [ ] Stop:应当避免的写法(如魔数使用)
配合Git钩子实现:当MR包含"Improve"项时,自动创建技术债工单;"Start"项触发对应工具的POC分支。这让复盘从会议延伸到日常编码。
传统故障复盘会陷入"谁该负责"的争论。我们将KISS与可观测性工具结合:
用Grafana重现故障时间线的指标三件套:
在复盘会议中:
某次数据库故障中,这套方法帮我们发现:虽然有多层监控,但缺少连接池排队时间的观测点。后来新增的p99排队时长指标,在三个月后成功预警了类似问题。
我们每季度用KISS模型更新技术雷达:
| 象限 | Keep | Improve | Start | Stop |
|---|---|---|---|---|
| 语言与框架 | Spring Boot的稳定表现 | 优化K8s Operator使用 | 评估Rust | 淘汰jQuery |
| 工具 | GitLab CI流水线 | SonarQube规则集 | 试点Argo CD | 停用Jenkins X |
| 平台 | AWS EKS生产就绪 | 完善Istio监控体系 | 测试Wasm边缘 | 下架Hadoop |
这种结构化的评估方式,使得技术决策更数据驱动。比如决定停用Jenkins X时,我们列出了近半年所有相关故障单和维护成本,阻力大大降低。
在推行KISS复盘三年后,我观察到团队形成了这样的正向循环:
微小改进→快速验证→成功固化→信心增强→更多改进
几个关键催化因子:
有个DevOps团队甚至开发了KISS机器人,当Slack消息中出现"为什么总是..."时,自动回复:"这可能是Improve候选,要发起KISS讨论吗?"
这种深度融入工作流的实践,比任何方法论培训都有效。就像围棋选手通过数千次复盘形成棋感,技术团队也会在持续改进中培养出工程直觉。