Matt Pocock:AI 时代软件基础比以往更重要
Matt Pocock 时代软件基础比以往更重要 —— 演讲学习笔记
来源:微信公众号文章 https://mp.weixin.qq.com/s/QRA_MwrI4Loau8ZdsNF2Og(公众号「老丁888」整理稿) 原始素材
Fundamentals Matter More Than Ever — Matt Pocock at AI Engineer Summit(视频) 性质 编程方法论演讲笔记,核心是”AI 时代经典软件工程理论反而更值钱”一句话
AI 编程工具越好用,好代码库和烂代码库之间的差距就越大:好代码库里 AI 如虎添翼,烂代码库里 AI 加速腐烂。软件基础(模块设计、接口定义、测试策略、领域建模)决定你能从 AI 撬出多少生产力。
核心痛点 的陷阱
- 模式:写需求规格 → AI 生成代码 → 出 bug 改 spec → 重新生成
- 实测结果:第一次能跑,第二次更烂,第三次更更烂,循环到底就是垃圾
- 理论依据(《程序员修炼之道》):软件熵 —— 每次只盯局部改动、不想系统整体设计,代码库就朝崩溃方向滑一步;AI 把这个过程加速了
- 反驳”代码很廉价”:烂代码是史上最贵的代码。代码库不可改,就接不住 AI 的生产力红利
把 AI 编码失败映射回经典理论(本文最精彩的框架)
| 你遇到的问题 | 哪本书早就讲过 |
|---|---|
| AI 不听你的,做出来完全不对 | Brooks《设计的设计》:“设计概念” |
| AI 啰嗦得要死,沟通效率极低 | Evans《领域驱动设计》:“统一语言” |
| AI 一次写太多,跑不起来 | 《程序员修炼之道》:“跑得比大灯快” |
| 代码越改越难改 | Ousterhout《软件设计的哲学》:“复杂度”定义 |
套路:观众对 AI 编码没有成熟评判框架,但对经典有信任。说”AI 的问题其实就是 Ousterhout 说的复杂度问题”,瞬间通了。
五个开源技巧(mattpocock/skills,层层递进)
- Grill Me(拷问我):写代码前让 AI 反问 40-100 个问题,直到达成共同理解,沿设计树分支逐一解决决策依赖。不是帮写代码,是帮你想清楚要什么。直言比 Claude Code 的 plan mode 好用(“plan mode 太急于产出资产,只想赶紧搞个计划然后开干”)。
- 统一语言(Ubiquitous Language) 啰嗦的根因是没共享术语。扫描代码库自动生成术语表 Markdown,所有 AI 对话引用它。效果 思考轨迹更精简,不用每次重新猜术语含义。
- TDD 强制小步迭代 默认一次性生成巨量代码再检查类型 = “跑得比大灯快”。反馈速度就是你的限速。先写测试→通过→重构。好代码库 = 容易测试的代码库 → 反馈循环好 → AI 产出好(正反馈)。
- 深层模块 > 浅层模块 Module(大量功能藏在简洁接口后)vs Shallow Module(功能少接口复杂)。AI 天然擅长制造浅模块密集的碎片化代码库,但对 AI 自己是灾难——探索时被碎片海淹没。解法:持续重构,把相关代码封装成深层模块。
- 设计接口,委托实现(终极形态):人在战略层,AI 在战术层。你设计模块边界和接口 → AI 实现接口内部细节(被测试边界约束)→ 你在接口处写测试验证 AI 产出。“大块里面的东西交给你,我只从外面测试验证,这真的拯救了我的大脑。“
军事比喻
AI 是非常优秀的一线程序员——战术层面在战壕里改代码的士官。但需要有人在战略层面思考,那个人是你。这需要已用了 20 年甚至更久的软件基础技能。Kent Beck:“Invest in the design of the system every day.”(每天投资于系统的设计)—— Spec-to-Code 是撤资,你在做的才是投资。
两种范式对比
| Spec-to-Code | 软件基础驱动 |
|---|---|
| 写 spec → AI 生成 → 改 spec → 再生成 | Grill Me 共识 → 统一语言 → TDD → Deep Module |
| 不看代码 | 设计接口,AI 填实现 |
| 代码质量持续下降 | 代码质量持续改善 |
| 人越来越被动 | 人越来越像将军 |
四本书(只读一本就从 Ousterhout 开始)
- 《软件设计的哲学》 A Philosophy of Software Design — John Ousterhout。不到 200 页,整本只讲一件事:复杂度从哪来、怎么消灭。“Deep Module”概念出处。写码超两年的人会重新审视每一个 export。
- 《程序员修炼之道》 The Pragmatic Programmer — Andy Hunt & Dave Thomas。1999 初版,20 周年重写第二版。“破窗理论""软件熵""跑得比大灯快""石头汤”的源头。不必顺序读,随手翻开一章都能学到东西。
- 《设计的设计》 The Design of Design — Frederick P. Brooks(人月神话作者晚年反思)。核心论点”设计概念”:多人协作时有个无形、飘在中间的”共同理解”,写不进文档,一旦丢了整个设计散架。Grill Me 的理论基础。
- 《领域驱动设计》 Domain-Driven Design — Eric Evans。2003 “大蓝书”。统一语言正好是 LLM 高效协作的必需品。先读 Part II(模型驱动设计的构建块)+ Part III(重构加深理解)。
- 题外 Beck(TDD/XP 之父、敏捷宣言签署人)——《测试驱动开发》开山之作、《解析极限编程》XP 精髓。
数据核验(2026-08-11, GitHub API)
- 文章称”Grill Me 仓库 13,000+ 星”:无独立 grill-me 仓库(API 404),Grill Me 是 mattpocock/skills 内的一个 skill
- 实际仓库 mattpocock/skills 212,704 | forks 18,379 | 创建 2026-02-03 | 最近 push 2026-08-07(活跃维护)
- 中文复刻/mattpocock-skills-zh(185 stars,基于官方仓库每日同步)
横向对比 时代三种开发范式
| 维度 | 本文方案(软件基础驱动) | Spec-to-Code 纯生成 | 传统人工编码 |
|---|---|---|---|
| 核心理念 | 人定接口,AI 填实现,测试兜底 | spec 即代码,改 spec 重生成 | 全部人手写 |
| 证据支撑 | 经典理论映射 + 实战(21 万星) | 现象级但作者实测失败 | 20 年工程实践 |
| 适用范围 | 有测试基础的中大型代码库 | 原型/一次性脚本/小工具 | 一切场景(效率最低) |
| 争议点 | 要求开发者有软件功底 | 代码熵随循环累积 | 跟不上 AI 时代节奏 |
领域趋势
协作正从”生成更多代码”转向”约束 AI 产出质量”,本文是”约束派”代表声音,与 vibe coding 对立的另一极。个人提炼
- 澄清前置 > 生成 Me 反问我 40-100 问的做法的本质是”用 AI 的提问能力做需求澄清”,与我自己 grilling/to-spec 技能同源,可交叉验证。
- 术语表注入:项目级 glossary.md 注入所有 AI 对话,是低成本高杠杆的做法,立即可用。
- 接口即测试边界:把 AI 限制在”接口内部实现”,人在接口处写测试——这是把 TDD 和 AI 结合的最清晰范式。
- 数字警惕:公众号文章里的 GitHub 数字经常过时或失真(13k vs 实际 212k),重要引用必须 API 核验。