我对 Spec Driven Development 的看法
Contents
TLDR; 我觉得 Spec Driven Development 没有解决什么问题, 这套范式和方向是错误的. 银弹尚未出现, 软件工程的效率仍旧被限制. 即使 AGI 出现, 能够出现类人的智能表现, 这个困境短期内也无法解决.
怎么解决? 我不知道. 没有圣杯, 没有银弹, 小团队快速迭代可以缓解这个问题, 这已经是目前的最优解了. Coding Agent 可以大幅优化这个最优解, 依旧是放大器那个领域, 放大了本来强的地方. 但是没有办法弥补这个缺陷, 解决这个目前.
软件工程仍旧是从经验中学到的一些教训, 没有时间的沉淀是无法被验证有效的. 所幸好消息是, 现在 Coding Agent 的出现能让一切加速. 好的经验教训一般都比较容易接受, 然后作为工程师我们也能受益.
一项好的设计或者经验, 可能会被独立的多次发现, 只要有一个发现者愿意分享出来而不是私藏, 整个业界就都能受益. 目前工程界和学术界的氛围还是比较开放的, 在这种氛围下, 我对我暂时不会被拉下这件事情还是挺乐观的.
OK 回到 Spec Drive Development 这个话题.
Spec Driven Development 已经出现有一段时间了. SpecKit 也差不多有半年了. SpecKit 的作者在微软里貌似也因为这个事情得到了晋升. Spec 这个概念在开发者和非开发者里也非常火.
我在 SpecKit 刚出现的时候就开始用, 一开始感觉还不错, 比我从 0 开始迷茫 prompt 稳妥多了. 然而继续使用后发现, 我的时间陷入到了一轮又一轮提早设计, 脑内逻辑推演里. 最终生成的 Spec, Plan, Task, 只要覆盖到的地方, 执行的还不错, 但是一旦没有覆盖到就是一坨大便.
所以我的开发过程变成了:
- 本质上是瀑布流的项目拆解, 与 AI 对话, YY 出一堆似乎会发生的情况
- 然后发现生成的代码在细节上有非常多的小问题, 而质量又很差, 我非常不想改
- 一个巨大的 PR 就搁置在那里
后来 Claude Code Plan Mode 出现了, 我就再没用过 SpecKit. 当然, 那个 “只要覆盖不到的地方就是一坨大便” 的问题一直没有得到解决. 但至少我不需要提前脱离框架想那么多事情了.
在很早之前, 我一直就是那个不怎么写文档, 而是坚信“好的代码是自解释”的这个流派的. 同时我期望中的的好代码需要拥有合理的假设, 尽量小的思维负担, 以及足够符合直觉的用法. 一个好的抽象应该是, “我的这个东西啊, 你只要这么这么用, 你就能保证能获得那样那样的效果, 你感兴趣的话可以来看看内部实现, 但是你不不想看, 也没关系, 照常用”.
而 Spec Driven Development 就是像极了, 我有一份自然语言描述, 产品文档/PRD/Spec/随便你怎么叫, 然后我有某种机制去把代码对其到这个描述上. 之前这个机制是程序员, 现在这个机制是 Agent.
作为程序员, 我们知道:
- 文档和代码的表达能力之间, 有巨大的 gap, 我们无法在一个经过简化后的载体(spec)上表达完整的信息(product).
- 需求会一直变, 代码一直变, 而文档往往跟不上. 一般来说最早的设计往往偏离真实情况非常远, 所有的软件都是一点一点变得复杂而且坚挺的. 而文档的更新是快速迭代中最弱的环节.
- 代码中包含大量反直觉的的隐含知识和经验, 例如为什么软件的维护成本远高于开发成本, 为什么软件总是无法 bug free, 为什么需要可维护性特别重要. 这些都是工程师在软件工程领域从实践中得到的真实教训. 产品人, 营销人一直不关注这一点, 而 Coding Agent 把这一点百倍放大了.
另外插一句对于用容忍 Vibe Coding 些烂代码的现象, 我觉得不能放任的一个原因是, 假设 Coding Agent 真的像我们一样思考, 那把 API 设计的简单易懂些, 同样也能减少 token 消耗, 减少犯错呀.
代码就是逻辑, 逻辑一定程度上也算数学吧, 数学很诚实, 不理解就是不理解, 学不会就是学不会. 现在有一个神奇海螺, 摇一摇就能吐出看上去还不错的东西, 感觉打磨打磨就可以赚钱了. 很多人在这个诱惑前丧失了理智, 丧失了思考的能力, 在一个自己不理解, 成功率不确定, 而且未经过时间认证的魔法盒子上装扮成一个小丑, 疯狂地表达自我.
之前只是产品人, 营销人. 但是最近越来越多的工程师也开始妥协, 在巨大的诱惑前放弃自己的判断力. 甚至开始诱惑他人, 甚至在这条路上做产品, 让我很难受.
春江水暖鸭先知, 我相信当奇点到来时, 一线工程师是最先知道的一批人.
如果这一天到来, 我也会诚实地接受. 这件事情早晚会发生, 而且无论我做什么事情, 也无法加速或者减缓它的发生.
最后, 我曾经问过朋友一个问题:
- “什么时候 Coding Agent 能一把过, 直接生成优雅到我能直接 approve 的代码?”
- “肯定在你失去工作之后.”
我相信未来有一天 AI 一定能到达某种智能程度, 其表现之一是写出非常好的代码, 如果能够到达这个地步, 这就不是简单的我要不要丢工作的问题了, 而是整个社会, 整个人类群体的存在主义危机.