吴恩达谈“Spec 驱动开发”:AI 编程时代,真正值钱的不是会写代码,而是会把需求写清楚
吴恩达谈“Spec 驱动开发”:AI 编程时代,真正值钱的不是会写代码,而是会把需求写清楚
你可能也有过这种挫败感:
第一次让 AI 写个小工具,它看起来很聪明;第二次你说“再改一下”,它开始东一榔头西一棒子;第三次你补一句需求,前面能用的部分又被它改坏了。
很多人会把问题归结为一句话:模型还不够强。
但最近吴恩达推出的一门新课,恰恰把焦点拉回了另一个更关键的问题:不是 AI 不会写,而是你没把要什么说清楚。 这门课讨论的核心,是一种老概念在新环境下的重新爆发——Spec-driven development,也就是“规格驱动开发”。
这篇文章不准备停留在“课程新闻搬运”。更重要的是,我们想把这件事翻译成普通用户能立刻上手的方法:在 AI 编程时代,谁更会写规格,谁就更容易得到可用结果。
AI 正在把“写代码”这件事,逐渐变成“先定义清楚问题”。
---
这门新课为什么值得关注:不是新术语,却在 AI 时代突然变重要了
“Spec 驱动开发”并不是今天才出现的概念。传统软件开发里,需求说明、接口定义、测试标准,本来就是项目成功的底盘。只是过去这些东西往往属于产品经理、架构师和工程团队的分工地带,普通用户很少直接碰到。
但 AI 编程出现后,情况变了。
以前你想做一个小工具,必须自己写代码,或者找程序员;现在你只需要打开 Claude Sonnet 4.6、Claude Opus 4.6、Gemini 3.1 Pro,或者配合 Cursor 这类工具,就能让 AI 直接产出页面、脚本、接口甚至数据库结构。开发门槛被拉低了,需求表达能力却被放大了。
吴恩达这门新课之所以值得关注,不是因为它发明了什么新词,而是因为它点中了当下 AI 编程最普遍、也最容易被忽视的痛点:
- 不是所有失败都来自模型能力不足
- 很多“效果不稳定”,本质上是需求输入不稳定
- 不是 prompt 要写得更花,而是规格要写得更清楚
从趋势数据看,这件事也不是小圈子的自嗨。
根据 Stack Overflow 2024 Developer Survey,超过七成开发者已经在使用或计划使用 AI 工具参与开发工作。而 GitHub 此前关于 AI 编程助手的研究也指出,AI 能显著提升编码效率,但前提是任务边界清晰、上下文完整。说白了,AI 越融入开发流程,“需求描述质量”就越像新的生产力杠杆。
所以,这门课真正值得普通人关注的,不是“又多了一门课程”,而是它释放了一个强烈信号:
AI 编程的竞争,正在从“谁会问问题”,升级到“谁会写规格”。---
什么是“Spec 驱动开发”:把模糊想法变成可执行说明
很多人一听 spec,脑子里会浮现一本文档、几十页流程图,瞬间就想关掉页面。
其实没那么复杂。
在 AI 编程语境里,spec 可以简单理解为:一份足够清楚、足够具体、让 AI 可以照着做的需求说明。
它通常至少包含这些元素:
| 要素 | 作用 | | 目标 | 你到底要做什么 | | 功能 | 必须具备哪些能力 | | 约束 | 用什么技术、不能做什么 | | 边界 | 什么场景要处理,什么场景不用处理 | | 示例 | 输入输出长什么样 | | 验收标准 | 怎样算“做对了” |如果你对 AI 说:
“帮我做一个记账网页。”
这不是 spec,这是愿望。
如果你对 AI 说:
“做一个给个人用户使用的记账网页,包含收入/支出录入、按月份筛选、按分类统计、CSV 导出;采用本地浏览器存储;页面分为录入区、明细区、统计区;移动端优先;当金额为空或不是数字时提示错误;验收标准是新增、删除、筛选、导出都能在本地完成,不依赖后端。”
这才更接近 spec。
普通 prompt vs Spec 化需求说明
下面这个对比,最能说明问题:
#### 错误示范
帮我写一个漂亮的记账网页,要简单好用。
#### 优化后
请开发一个个人记账网页,面向非财务专业用户。
目标:
- 让用户在 30 秒内完成一笔收入或支出记录
核心功能:
- 新增收入/支出
- 按日期、分类筛选
- 查看本月收支汇总
- 导出 CSV
- 删除单条记录
页面结构:
- 顶部:月度汇总卡片
- 中部:录入表单
- 底部:账单列表和筛选区域
技术约束:
- 使用 HTML/CSS/JavaScript
- 不接后端
- 数据保存在 localStorage
- 不引入大型 UI 框架
不要做什么:
- 不要登录注册
- 不要多用户系统
- 不要复杂图表库
异常处理:
- 金额为空时报错
- 日期为空时默认当天
- 分类为空时默认“其他”
验收标准:
- 新增记录后刷新页面不丢失
- 按月份筛选结果正确
- 导出 CSV 文件可直接用 Excel 打开
区别不在字数,而在可执行性。
它和 PRD、技术方案、测试用例是什么关系?
你可以把 spec 理解成三者之间的“轻量交集”:
- 比 PRD 更短,不追求面面俱到
- 比技术方案更偏结果,不要求写到架构评审级别
- 比测试用例更早出现,先定义“什么叫完成”
所以它特别适合 AI 协作:既不重到写不动,又不轻到 AI 无从下手。
---
吴恩达这套思路,对普通人最有价值的启发是什么
真正有价值的,从来不是课程里的名词,而是你今天能不能拿来用。
如果把这套思路浓缩成对普通中国 AI 用户最实用的三句话,我会总结成下面这三点。
1. 别再只写一句话需求
很多人用 AI 编程时,习惯把它当“自动许愿机”:
- 帮我做个官网
- 帮我写个爬虫
- 帮我做个后台
- 帮我优化这个页面
问题是,这些话对人类都不够清楚,更别说对模型。
AI 在这种场景下通常会默认补全一堆你没说出口的假设。于是它第一次给的结果看似完整,实际却偏题:功能不对、技术不对、边界不对、风格不对。
一句话需求最大的问题,不是太短,而是默认前提太多。2. 把“验收标准”写出来
这是最容易被忽略、但最能立竿见影的一步。
很多人和 AI 来回改 10 轮,根本原因是没有提前定义“怎样算改好了”。如果没有验收标准,每一次修改都只是情绪表达:
- 看起来不太对
- 再简洁一点
- 更像产品一点
- 更高级一点
这种词非常主观,AI 很难稳定执行。
相反,如果你写成:
- 表单提交后数据必须保存在本地
- 移动端宽度 390px 下不能横向滚动
- 抓取失败后最多重试 3 次
- 接口超时后要写日志并跳过当前任务
AI 的执行空间就小很多,结果自然更稳。
3. 把“不想要什么”也写进去
很多返工,其实不是因为 AI 没做,而是因为它做多了。
比如你只是想要一个个人用的小工具,它却给你加了用户登录、后台权限、复杂数据库设计;你只想做个简单爬虫,它却默认接入完整任务调度系统。
所以写 spec 时,有一项特别重要:明确排除项。
比如:
- 不要登录注册
- 不要后端服务
- 不要云存储
- 不要复杂动画
- 不要引入大型依赖
- 不考虑多语言和国际化
这一步很像装修时提前说“这个墙别拆”。你不说,施工的人就会按自己的经验发挥;你说了,返工成本会低很多。
---
两个案例看懂:Spec 为什么能显著减少跑偏和返工
案例 A:小白做记账网页
模糊需求版
帮我做一个记账网页。
常见结果是:
- UI 看上去还行,但没有筛选
- 数据只存在内存里,刷新就没了
- 默认做成英文界面
- 没有导出功能
- 手机端布局错乱
- 甚至顺手给你加了登录模块
这类结果最大的问题不是“不能用”,而是离真正可用总差一口气。你会进入无休止补丁模式。
Spec 化版本
# 项目目标
做一个个人记账网页,适合中国用户日常记录收支。
用户是谁
不懂财务、主要在手机上使用的个人用户。
要解决什么问题
快速记录每日收支,并按月份查看统计。
功能清单
- 新增收入/支出
- 分类选择:餐饮、交通、购物、房租、工资、其他
- 按月份筛选
- 显示月收入、月支出、月结余
- 删除记录
- 导出 CSV
输入/输出示例
输入:2025-08-20,支出,餐饮,35 元,备注“午饭”
输出:账单列表新增一条记录,并更新当月统计
技术栈要求
- HTML/CSS/JavaScript
- 本地 localStorage 存储
- 不使用后端
不要做什么
- 不要登录注册
- 不要多用户
- 不要联网同步
- 不要复杂图表
验收标准
- 刷新页面数据不丢失
- 月份筛选正确
- 导出文件可在 Excel 中打开
- 在手机屏幕下可正常使用
这时 AI 给出的结果通常会更接近“半成品产品”,而不是“课堂作业”。
案例 B:进阶用户写爬虫
模糊需求版
帮我写一个 Python 爬虫并保存到数据库。
看起来没问题,实际上信息黑洞很多:
- 爬哪个站?
- 静态还是动态页面?
- 抓列表页还是详情页?
- 多久抓一次?
- 如何去重?
- 数据库表结构是什么?
- 报错怎么处理?
- 失败要不要重试?
于是 AI 往往会生成一个“能跑一下”的脚本,但离稳定使用差得很远。
Spec 化版本
# 项目目标
抓取某资讯站的文章标题、发布时间、正文链接,并保存到 MySQL。
目标页面
- 仅抓取栏目列表页前 5 页
- 每篇文章提取:title、url、publish_time、summary
抓取规则
- 每天执行 2 次
- 已抓取过的 url 不重复入库
- 遇到 429 或超时,最多重试 3 次
- 请求间隔随机 1-3 秒
数据库要求
表名:articles
字段:
- id
- title
- url(唯一索引)
- publish_time
- summary
- crawled_at
日志要求
- 成功抓取数量
- 失败 URL
- 重试次数
- 最终错误原因
不要做什么
- 不使用分布式框架
- 不接消息队列
- 不做复杂调度系统
验收标准
- 重复 url 不重复写入
- 抓取失败有日志
- 数据库字段完整
- 脚本可单独运行,配置项可修改
这种写法的价值,不只是“更像专业开发”,更重要的是它能明显减少两类成本:
1. Bug 成本:很多错误在编码前就被框住了
2. 沟通成本:你不用每轮都重新解释一次自己到底要什么
---
普通人怎么写出更像“Spec”的 AI 编程需求
最实用的方法,不是追求一次写完,而是采用两阶段流程:
1. 先让 AI 帮你补全 spec
2. 再让 AI 按 spec 开发
这招非常像“先让 AI 当产品经理,再让 AI 当程序员”。
一份可直接复制的需求模板
# 项目目标
用户是谁
要解决什么问题
功能清单
输入/输出示例
技术栈要求
UI/交互要求
错误处理
不要做什么
验收标准
双阶段提示词示例
#### 阶段一:补全 spec
我想做一个 AI 编程项目,但我的想法还比较模糊。请你先不要写代码,而是先充当产品经理,基于我的描述帮我补全一份结构化 spec。
要求你按以下字段输出:
项目目标、目标用户、使用场景、核心功能、输入输出示例、技术约束、不要做什么、异常处理、验收标准。
如果信息不完整,请先列出你需要我补充的关键问题,再给出一个建议版 spec 草稿。
#### 阶段二:按 spec 开发
现在请你基于下面这份已确认的 spec 开发第一版代码。
要求:
1. 严格按照 spec 实现,不要自行新增功能
2. 先给出项目文件结构
3. 再分步骤输出核心代码
4. 每完成一个模块,说明它对应了哪条验收标准
5. 如果 spec 有冲突,先指出问题,不要擅自猜测
一个非常关键的小技巧:先确认,再开工
很多人最容易犯的错,是把“需求讨论”和“直接开发”混在一个回合里。结果就是 AI 一边猜、一边做,做着做着就跑偏。
更高效的方式是:
- 第一轮:只讨论需求
- 第二轮:只确认结构
- 第三轮:再生成代码
- 第四轮:按验收标准测试和修复
这时候你会明显感觉到,AI 不再像一个爱发挥的实习生,而更像一个按图施工的工程执行者。
---
从“会提问”到“会写规格”,AI 编程的门槛正在重新定义
过去两年,大家都在讲 prompt engineering。这当然重要,但今天更值得重视的,是另一件事:需求工程正在平民化。
以前,软件开发的权力掌握在能写代码的人手里;现在,AI 把“动手实现”这一步大幅自动化了,于是新的门槛变成了:你能不能清楚定义任务。
这不是在说程序员会被取代。恰恰相反,专业开发者依然重要,尤其是在复杂系统、架构设计、性能优化和工程治理上。但对普通人来说,变化已经足够大:
- 你不一定要先学会写代码
- 但你必须学会把需求写清楚
- 你不一定要会设计系统
- 但你要知道什么是目标、约束、边界和验收
这就是“Spec 驱动开发”真正迷人的地方:它不是让非程序员假装成程序员,而是让更多人第一次拥有了“指挥软件开发”的能力。
如果你想马上拿这套方法实测,一个很实用的做法是:在多模型环境里对比同一份 spec 的执行效果。像 api.884819.xyz 这样的聚合接口平台,就更适合做这种横向测试:同一份需求说明,切换 Claude Sonnet 4.6、Claude Opus 4.6、Gemini 3.1 Pro、Deepseek R1/V3、通义千问 Qwen3、Kimi K2.5、GLM-5,看谁更稳定、谁更“听话”。
而且对普通用户很友好:
- 用户名 + 密码即可注册,不需要邮箱验证
- 平台内置 AI 对话功能,注册后直接能用
- 国产模型完全免费
- 没有月租、没有订阅,按量付费
- 新用户注册即送体验token。
真正开始写 spec 之后,你很快会发现:模型能力当然重要,但清晰表达需求的能力,正在变成更稀缺的竞争力。
AI 正在把软件开发从“手写代码”变成“定义规格”,而这很可能就是普通人第一次接近开发权力的入口。
下一篇,我们就接着聊一个更落地的问题:不会写 PRD 也没关系,普通人怎么用一页纸 Spec 让 AI 做出可用小程序。
本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#AI编程 #Spec驱动开发 #吴恩达 #人工智能 #8848AI #Prompt技巧 #需求工程 #Claude