RAVI ON PRODUCT · 文章整理

📜 规格说明书是新的源代码

Specs Are the New Source Code
✍️ 作者:Ravi Mehta(前 Tinder CPO,Product Competency Toolkit 作者) 🔗 blog.ravi-mehta.com
AI 让工程师的交付速度飞快提升之后,瓶颈不再是「把东西做出来」,而是「知道该做什么、并让团队对需求达成一致」。这篇文章提出一个核心论断:曾经被当作走过场文书的规格说明书(spec),正在成为软件开发真正的「源代码」——对人和机器同时生效的唯一事实来源。

🗂️ 被轻视的规格说明书从「按重量计价」到「餐巾纸上的 spec」

作者 Ravi Mehta 用自己的职业生涯开场:在他的整个职业生涯里,spec 变得越写越短。刚入行在 微软 时,一个 PM(产品经理)的价值是「按 spec 的分量来衡量的」——文档越厚重,越显得专业。多年之后在 Tripadvisor,团队里被传为佳话的反而是那位把 spec 潦草写在一张餐巾纸上、就直接带去产品评审会(Product Review)的 PM。

产品团队普遍把规格说明书当成一种文书作业(paperwork)——是开始「真正工作」(发布产品)之前不得不应付的必要之恶。工程师因优雅的代码受到赞誉,设计师因漂亮的用户体验受到赞誉,PM 因交付业务影响而获得称赞。但 spec 呢?通常是匆匆写完、随手丢开、很快被遗忘。

⚠️
作者的判断:这从来都是一个错误。在他的 Product Competency Toolkit(产品能力工具包)中,「功能规格说明(Feature Specification)」位居榜首——在十二项能力中排第一——这是有原因的:它与「产品交付(Product Delivery)」「产品质量(Product Quality)」共同支撑起「产品执行(Product Execution)」。
完美无瑕的执行是优秀产品管理的根基,而一份出色的 spec 就是起跑线。 Flawless execution is the foundation of good product management, and a great spec is the starting line.

而今天,构建产品的方式正在发生转变:工程师变快了——快得多。AI 可以在几分钟内把粗糙的想法变成能运行的代码。瓶颈不再是「构建」本身,而是知道要构建什么,并让团队围绕这些需求对齐

于是,这份不起眼的规格说明书突然不再是转瞬即弃的文书。它是产品管理的根基——它正在成为源代码本身

💬 没看懂「spec」指什么?点这里换种说法
这里的 spec(specification,规格说明书)泛指产品团队用来描述「我们要做一个什么东西、为什么做、做成什么样才算对」的那份文档——在不同公司也叫 PRD(产品需求文档)、概念文档,甚至可以是餐巾纸上的几行字。它的本质是:把意图写清楚,让所有参与的人(现在还包括 AI)照着同一份描述去干活。(此段为帮助理解的增补说明,非原文)

🚧 为什么 PM 突然成了瓶颈Why PMs are suddenly the bottleneck

吴恩达(Andrew Ng)在他最近的演讲 Building Faster with AI 中提到了一个前所未有的趋势:

我人生中第一次看到,有管理者向我提议:PM 的人数要配到工程师的两倍。我仍然不确定这个提议是不是个好主意,但我认为这是世界走向的一个信号。 "For the first time in my life that I saw managers proposed to me having twice as many PMs as engineers. I still don't know if this proposal is a good idea, but I think it's a sign of where the world is going." —— Andrew Ng(吴恩达)

这印证了作者在上一篇文章中的预测:当工程师借助 AI 以数倍速度交付时,公司需要更多而不是更少的 PM,来支撑这些高产的工程师。

随着产品交付不断加速,巨大的压力被转移到产品管理的其他每一个环节上——理解客户需求、打磨正确的功能、验证实际影响。而所有这些压力,最终都汇聚到同一个产物上——spec

⚡ AI 加持工程师 分钟级产出可运行代码 🏗️ 构建不再是瓶颈 交付速度大幅提升 🔍 理解客户需求 🧩 打磨正确的功能 📊 验证产品影响 📜 Spec 压力的汇聚点
图 1 · 因果链:AI 提速工程交付 → 瓶颈从「构建」转移到「理解与对齐」→ 所有压力汇聚到 spec 这一个产物上

💾 Spec——新的源代码Sean Grove:我们把 AI 开发做反了

要理解这个标题里的比喻,先要弄清传统软件开发里「源代码」和「目标代码」的关系。

🧱 源代码 vs 目标代码(原文给出的背景概念)
是什么

在传统软件开发中,程序员编写人类可读的「源代码(source code)」,再由编译器把它编译成高度优化、机器可读的「目标代码(object code)」,也叫二进制文件(binary)

为什么源代码才是根本

目标代码只是一个副产品——只要有源代码,随时可以重新编译生成它。所以源代码才是字面意义上的事实来源(source of truth):它包含注释、结构、文档,承载了理解和修改这个系统所需的一切;二进制只是下游产物。

例子

(增补例子)你不会小心翼翼地备份一个编译出来的 .exe 文件、却把写它的工程文件删掉——丢了源码,程序就成了没人能看懂、没法改的黑盒。

来自 OpenAISean Grove 在他最近的演讲 The New Code 中提出了一个颇具挑衅性的论点:一份写得好的提示词(prompt)——也就是 spec——才是新的源代码

从这个视角看,我们现在做 AI 开发的方式是彻底反过来的:我们精心撰写提示词,向模型传达意图;AI 生成代码;然后我们把代码留下来,把提示词扔掉。

这感觉就像:你把源代码撕碎了,然后小心翼翼地对二进制文件做版本管理。 "This feels like you shred the source and then you very carefully version control the binary." —— Sean Grove,OpenAI

仔细想想这句话。在传统编程中,源代码是神圣的——它包含注释、结构与文档,是理解和修改系统所需的一切;二进制只是下游产物。但在 AI 开发中,我们把这层关系翻转了:把生成出来的代码当成值得保存的产物,却把规格说明——那份 prompt——当成用完即弃的东西。

传统软件开发(正确的关系) 📝 源代码(人可读) 注释 · 结构 · 文档 · 意图 → 被版本管理 ✅ 编译 ⚙️ 目标代码 / 二进制 副产品,可随时重新生成 当前的 AI 开发(做反了) 📜 Prompt / Spec(意图) 用完就扔 🗑️(相当于撕碎源代码) AI 生成 💻 生成的代码 被当成宝贝版本管理(≈ 给二进制做版本管理) Grove:这恰好把「什么才是源头」搞反了
图 2 · 对比:传统开发精心保管「源头」(源代码),而当前 AI 开发却保管「产物」(生成代码)、丢弃「源头」(prompt/spec)——Grove 认为这正是搞反了的地方

🔦 代码只是 spec 的「有损投影」

📉 有损投影(lossy projection)
是什么

Grove 认为,代码——哪怕是优雅的代码——只是从规格说明「投影」出来的一个有损(lossy)版本:从 spec 到代码的转换过程中,信息丢失了。

为什么

原文用反编译作类比:就像把二进制反编译回代码时,拿不回原来的注释和变量名一样,阅读代码也无法告诉你它背后完整的意图。「为什么这么做」「权衡了什么」「价值取向是什么」——这些只存在于 spec 里。

例子

(增补例子)看到一段限流代码,你能读懂「每秒最多 5 次请求」,但读不出「因为付费转化实验发现超过 5 次会伤害体验」这个决策理由——后者只写在 spec 里。

而规格说明书则包含一切。一份足够健壮的 spec 能生成什么?Grove 的原话是:

一份足够健壮的规格说明,可以生成优质的 TypeScript、优质的 Rust、服务端、客户端、文档、教程、博客文章,甚至播客。 "A sufficiently robust spec can generate good TypeScript, good Rust, servers, clients, documentation, tutorials, blog posts, and even podcasts." —— Sean Grove,OpenAI
📜 一份健壮的 Spec 完整承载意图与价值取向 🤖 AI 生成 💻 优质 TypeScript 🦀 优质 Rust 🖥️ 服务端 / 客户端 📚 文档 / 教程 ✍️ 博客文章 🎙️ 甚至播客 代码可以重新生成;spec 才是不可替代的那一份
图 3 · 输入-输出关系:同一份足够健壮的 spec,可以派生出代码、服务、文档乃至播客等多种「下游产物」

🤝 Spec 还能做代码做不到的事:对齐人类与机器

更重要的是,规格说明书能做到代码做不到的事情:让人类和机器在共同目标上对齐。Grove 说得很直白:

一份书面的规格说明能有效地对齐人类,它是你用来沟通、讨论、辩论、引用和同步的那个产物。 "A written specification effectively aligns humans and is the artifact that you use to communicate and discuss and debate and refer to and synchronize on." —— Sean Grove

他还给出了一个预测:

在不远的将来,沟通最有效的人就是最有价值的程序员。而且毫不夸张地说:只要你能有效沟通,你就能编程。 "In the near future, the person who communicates most effectively is the most valuable programmer. And literally, if you can communicate effectively, you can program." —— Sean Grove
🔑
新的稀缺技能不是写代码,而是撰写能够完整捕捉意图与价值取向的规格说明。对产品经理来说,这听起来应该很熟悉——这本来就是我们一直在做的事,只不过现在,机器也在听了。

🧪 等等,原型不是已经杀死了 Spec 吗?Wait, didn't prototypes kill the spec?

直到不久之前,产品生命周期还必须从 spec 开始(或者叫 PRD、概念文档,甚至一张餐巾纸)——由它启动最初的线框图、设计、原型和 MVP 开发。

这种传统做法给人的感觉是一种必要之恶:工程师做出简陋的 MVP,只为把「随便什么东西」尽快塞到客户手里。「如果你不为产品的第一个版本感到尴尬,说明你发布得太晚了」(注:这句硅谷名言出自 LinkedIn 创始人 Reid Hoffman——此归属为增补说明,原文未点名)一度被奉为圭臬。

但我们构建产品的整套方式最近发生了重大转变。在这个新世界里,spec 往往是「产出」,而不是「输入」

今天,你不需要发布一行代码,就能把原型送到客户手中。像 v0LovableReplit 这样的工具,让你能在几小时(而不是几周)内搭出可运行的原型——完全不需要工程师参与。

这不只是「更快」——而是根本性的不同。带着一个「vibe coding(氛围编程)」出来的原型,你可以在写下 feature spec 的第一行字之前,就收集到真实的客户反馈:验证假设、迭代流程、打磨交互。

🕰️ 旧工作流(原文原述)
模糊的想法 线框图 设计稿 工程师搭建 MVP 客户反馈 痛苦地修改 spec 线框图 设计稿 重建 祈祷 🙏
⚡ 新工作流(原文原述)
模糊的想法 快速原型 客户反馈 清澈见底的 spec AI 辅助实现 ✅
💡 模糊的想法 旧路径:先写 spec,再漫长验证 线框 / 设计 工程师建 MVP 客户反馈 痛苦改 spec重建 → 祈祷 🙏 新路径:先拿反馈,spec 是产出 🧪 快速原型 客户反馈 📜 清澈见底的 spec 🤖 AI 辅助实现 原型没有杀死 spec——它让 spec 变得更好
图 4 · 分叉对比:旧路径里 spec 是起点、要经历「重建→祈祷」的循环;新路径里客户反馈前置,spec 成为吸收了真实反馈之后的清晰产出
🌱
原型并没有杀死 spec,它们正在让 spec 变得更好。先用原型收集真实反馈,再沉淀出一份「清澈见底」的 spec——顺序反过来了,spec 反而更有含金量。

🛠️ 规格驱动开发实战Spec-driven development in action

来看一个上手实操的例子。Danny Martinezdecimals 的创始人——这是一个仍处于隐身(stealth)阶段的平台,让创作者经济(creator economy)领域的专家能把自己人脉网络中的人才推荐安置到工作岗位上。

📎 原文此处附有一则征集启事:如果你是正在寻找新机会的 AI-first PM,可以留下资料,他们遇到有意思的机会时会通知你;如果你是想招聘 AI-first PM 的公司,可以申请加入他们的人才网络,获得精选候选人名单。

Danny 将展示他们的规格驱动开发(spec-driven development)流程。这套流程带来了两个影响:

下面交给 Danny——

📌 案例背景:一个按钮的诞生

Danny 最近处理的一个例子:他们的产品让专家型网红(expert influencers)能把自己网络中的候选人安置到工作岗位。在上线新落地页之后,需要给专家们一个快速获取自己页面链接的入口。联合创始人在 Slack 里发来这样一条消息:

我们需要在页头加一个按钮,指向 company-apply 页面。我现在正忙着搞邮件。这个是可以 vibe code 的,你能接一下吗? "We need a button in the header that directs to the company-apply page. I'm focused on the emails at the moment. This is vibe code-able if you can pick it up please." —— Danny 的联合创始人(Slack 消息)

就是一个简单的按钮——非常容易,而且恰恰是非技术背景的人如今可以自己发布上线的那类需求。

🧰 工具配置(原文清单)

整个发布过程只用了几分钟。以下是完整步骤(原文配有 Loom 操作视频,括号内为视频时间戳):

  1. 1
    把联合创始人的 Slack 消息生成为一张 Linear 工单00:14需求从聊天记录变成正式的、可追踪的工单。
  2. 2
    在工单里澄清按钮的新文案(copy)应该是什么00:25把模糊需求补充成明确规格——这就是「写 spec」的动作。
  3. 3
    打开 Copilot,提示 Claude 打开这张 Linear 工单01:18借助 Linear MCP server,AI 直接读取工单内容。
  4. 4
    提示 Claude 审阅工单,并结合代码库进行分析01:52让 AI 把需求映射到真实代码结构上。
  5. 5
    提示 Claude 创建分支并实现这些改动02:30
  6. 6
    测试改动,确认按预期工作02:52
  7. 7
    在 GitHub 上开一个 Pull Request(PR),把改动合入代码库03:55
  8. 8
    等待工程师评审 / 批准这个 PR人类工程师仍然是改动进入代码库前的最后一道关。
🖼️ 原文此处附有一张流程截图(操作界面),以及后文一张「AI-first 公司 PM 招聘增长」的图表;两图均为佐证性配图,文字信息已完整保留在本节与下文中。

把镜头拉远,这套配置的真正威力才显现出来。是的,这是个不起眼的例子,但要点仍然成立:一个非技术背景的人,现在只需向 Claude(通过 GitHub Copilot)发出几个提示,就能在 Linear 工单、代码库和工程师之间自由穿梭。而且再强调一次——这一切的关键不是代码本身:是 spec

⚖️ 三个前提:这套玩法要成立,离不开这些条件

Danny 特别强调,上面的做法要运转良好,必须满足以下前提:

  1. 1
    够具体(Being specific)用含糊的 spec 只会得到一个混乱的代码库。让 Claude 拿着工单初稿、审阅代码库、帮忙把工单写得更具体,是流程中必不可少的一环。Danny 团队还专门制定了「如何写好 spec」的指南。
  2. 2
    会挑活(Being selective)这套方法最适合较简单的任务。工单越复杂,就越需要真正懂行的人介入——在那些情况下,「自助服务」最后往往变得一点也不「自助」。
  3. 3
    有把关(Gatekeeping)这套方法之所以行得通,是因为有一位真正懂行的工程师在评审每一处改动,确保「简洁」与「功能」之间的平衡不被破坏。
📜
但有一点必须明确:规则已经变了。Spec 是所有参与产品建设者的事实来源(source of truth)——包括 LLM 在内。

有了合适的配置,非技术背景的人为代码库做贡献是完全现实的期待。只要有足够的时间和耐心,你可以逐渐读懂代码库、亲自实现改动,而不是每次都指望 Claude 来救场。有朝一日,你甚至可以期待:你端着咖啡小口啜饮的工夫,一个 AI 智能体已经把你的工单做完发布了。

💼
如果你是一名 PM,正担心 AI 会对你的工作造成什么冲击——关键是要意识到:这份工作本身正在改变。但其他所有人也一样。好消息是,一名出色 PM 所需的核心技能,在这个新世界里反而更有价值了。正如作者在之前的文章中预测的:以这种方式工作的公司需要更多而不是更少的 PM——而且事实证明,这个预测的走势相当不错(原文此处以图表佐证)。

🎉 Spec 万岁!Long live the spec!

科幻作家威廉·吉布森(William Gibson)——「赛博空间(cyberspace)」一词的创造者——说过一句名言:

未来已经到来——只是分布得还不太均匀。 The future is already here—it's just not very evenly distributed. —— William Gibson

每当思考 AI 能做什么、还做不了什么时,作者就会想起这句话。今天,AI 带来的收益是极不均匀的:有些事情——生成代码、文本、图像——已经实现了飞跃,以「AI 速度」运转;而另一些事情——与客户交谈、发现他们的需求、说服他们购买——仍然以「人类速度」推进。

这种不均匀的分布正在重塑产品团队:聚光灯正从「实现类工作」转向「理解类工作」。那些一直以来区分顶尖 PM 的核心能力——理解用户需求、清晰地定义问题、设计优雅的解决方案——其价值已呈指数级放大。

最优秀的 PM 会把这些洞察转化为 spec——能对齐团队、指导实现、并在日益自动化的开发世界中长存的规格说明书

📖 关键术语表阅读本文需要的概念速查(增补辅助,非原文)

术语简释
Spec / 规格说明书描述「做什么、为什么做、做成什么样才算对」的文档,即 specification;PRD、概念文档都是它的变体。
源代码 / 目标代码源代码是人写的、人可读的程序文本;编译后得到机器可执行的目标代码(二进制)。前者是源头,后者是可再生的副产品。
有损投影lossy projection——从 spec 生成代码的过程会丢失意图、理由等信息,就像反编译拿不回注释和变量名。
PMProduct Manager,产品经理。
PRDProduct Requirements Document,产品需求文档。
MVPMinimum Viable Product,最小可行产品——能拿去验证需求的最简版本。
Vibe coding「氛围编程」——用自然语言向 AI 描述想要的效果、由 AI 生成代码的开发方式,写作者本人可以不懂代码。
v0 / Lovable / Replit三款无需工程师即可快速搭建可运行原型的 AI 建站/编程工具。
Linear一款项目管理 / 工单(ticket)追踪工具。
MCP 服务器Model Context Protocol 服务器——让 AI 助手能直接连接并读写外部工具(如 Linear 工单)的标准接口。
PRPull Request——把自己分支上的代码改动提请合入主代码库、供他人评审的请求。
CopilotGitHub Copilot,嵌在编辑器里的 AI 编程助手;文中通过它调用 Claude Sonnet 4 模型。