Spec-Driven Development AI编程新超能力

AI写代码老翻车?一张规格纸治好了它的精神内耗

AI写代码飞快,但快不等于能用。真正让AI写出靠谱代码的,不是多会问问题,而是写一份“说明书”。这份说明书叫规格书,它把AI从乱猜的疯子变成听话的实习生,这才是程序员的新超能力。

程序员的新超能力不是打字快,而是写说明书

你有没有遇到过这种情况。你让AI帮你写一段代码,它噼里啪啦给你生成了几百行,结果跑起来全错。你问它为什么,它说“我以为你要的是这个”。你气得想把电脑砸了,但仔细一想,好像你也没说清楚到底要什么。

这就好比你去餐厅点菜,你跟服务员说“来点好吃的”。服务员端上来一盘香菜,你又不吃香菜。你怪服务员,服务员怪你。你说谁有理。谁都没理。因为你没说清楚,服务员也没问清楚。

现在AI写代码就是这么个情况。AI像个特别积极但特别爱猜的服务员。你跟它说“帮我写个登录功能”,它刷刷刷写完了,结果用了你根本没用过的数据库,密码还明文存。你问它为什么,它说“我看网上很多教程都这么写”。你欲哭无泪。

这不是AI笨,是你没给它看菜单。菜单在编程世界就叫规格说明书,英文叫spec。这玩意儿不是什么高大上的东西,就是一张纸,写清楚你要什么、不要什么、边界在哪、出错了怎么办。你把这张纸给AI,AI就老实了。

为什么AI越厉害,你越需要一张破纸

你说不对啊,我直接跟AI说“写个登录功能”,它也能写出来啊。是能写出来,但写出来的东西你敢直接上线吗。用户密码明文存,被人黑了算谁的。登录不记录日志,出了问题查都查不了。这些细节AI不会主动想,它只能猜。

猜就是赌博。赌对了运气好,赌错了你加班修bug。而且AI猜的方向往往是最常见的写法,但最常见的写法不一定最适合你的项目。你的项目有自己的规矩,有自己的老代码,有自己的一堆坑。AI全不知道。

所以你得给AI立规矩。这规矩不是限制它,是帮它别犯错。就像你给一个实习生安排任务,你说“去把那个桌子擦了”。实习生拿起抹布就擦,擦完了你发现桌子是擦干净了,但旁边的电脑屏幕被他用湿抹布糊了一层水。你气得骂他,他说“你又没说屏幕不能擦”。

给AI写规格书也是这个道理。你把所有“你以为是常识但AI不知道”的东西全写下来。比如密码要加密存、登录失败要记日志、用户名不能包含特殊字符、一个小时只能试五次。这些你脑子里的默认设置,AI不知道,你得写出来。

规格书不是写作文,是画框框

很多人听到“写规格书”就觉得头大。以为要写几十页跟法律条文一样的东西。哪有那么夸张。规格书的核心就三样东西:要什么、不要什么、怎么算完。

要什么很好理解。就是功能本身。用户输入账号密码,系统验证通过就跳转首页,不通过就报错。这就是要什么。

不要什么更好玩。这部分专门写AI容易自由发挥的地方。比如不要用明文存密码、不要往控制台打印用户密码、不要记录用户密码到任何文件里。你看,这些都是你不说AI就可能干的事。

怎么算完是最重要的。这部分写验收标准。就是你凭什么说这个功能做完了。比如用户名密码对了就跳转、错了就弹提示、密码试错五次就锁账号十五分钟。这些条件都满足,就算做完了。

这三样东西写出来,AI就像有了导航。它不会再瞎猜,不会再自由发挥,每一步都有对照。你没写的东西它不会主动碰,你写的东西它会老老实实干完。这就是规格书的魔力。

AI和规格书的关系,像外卖和订单

你点外卖的时候会跟商家说“来点好吃的”吗。你不会。你会说“一份黄焖鸡米饭,微辣,多加土豆,不要香菜,送到301室,电话138xxxx”。你说得越清楚,商家送得越准。

AI写代码跟外卖一样。你说“写个登录”,跟说“来点好吃的”没区别。AI只能猜你喜欢吃什么。猜对了算你的,猜错了你饿肚子。但你给了规格书,就等于给了详细订单。什么口味、什么配菜、送哪里、几点到,全写明白了。

订单越详细,送错的可能性越小。规格书越详细,AI写错的可能性越小。这不难理解吧。

而且规格书还有个好处。你点外卖的时候如果商家送错了,你拿出订单一看,明明写了不要香菜,你给我放了,那商家得重新做。AI也一样,你拿出规格书说“这里明明写了密码要加密,你怎么存明文”,AI只能乖乖改。有凭有据,谁也不赖谁。

规格书怎么治住爱乱跑的AI

AI有个毛病,它特别想表现自己。你跟它说“写个登录”,它不光写登录,它可能还给你加个注册、加个密码找回、加个记住我、加个短信验证。看着挺贴心的吧。但你本来只想先上个登录。结果它给你整了全套,代码量翻了三倍,里面还有bug。你改都改不完。

这不是AI好心办坏事吗。它就是太想表现了。规格书的作用就是按住它。你在规格书里写“本次只做登录功能,不包含注册、密码找回、记住我、短信验证,这些是第二阶段的事”。AI一看,哦,这些不在单子上,那我不做。

你看,规格书不光说做什么,还明文说了不做什么。这叫把边界画清楚。AI在边界里随便发挥,但出了边界就踩红线。有了这个,AI的“热情”就被管住了。

别光让AI干活,你得让它按流程走

光有规格书还差点意思。你想想,你让AI帮你写代码,它不是光写出来就行了。它得测试吧,得检查安全吧,得看看性能吧,得写个文档吧。这些都是步骤。

如果你不跟AI说步骤,它可能写完代码就交差了。然后你一看,代码写得挺漂亮,但没测试。你问测试呢,它说“你没说要测试啊”。你又得跟它说一遍“去写测试”。它写了测试,你又发现没写文档。每一步都要你提醒,你累不累。

所以还得有个流程。这流程是个步骤清单。比如第一步写代码,第二步写测试,第三步检查安全,第四步写文档,第五步你自己审核。你把流程给AI,AI按顺序走完。每一步走完还能给你打个报告。

这不就省心了吗。你不用每次都跟AI说“别忘了这个别忘了那个”。流程就是AI的施工队队长,盯着它干完所有活。

写规格书这个技能,以后比你写代码还值钱

以前衡量一个程序员牛不牛,看谁打字快、谁记得住一堆函数名。现在AI来了,这些全不值钱了。AI打字比你快一万倍,函数名记得比谁都清楚。你跟它拼这个,你拼不过。

那拼什么呢。拼谁能把一个模糊的需求变清楚。你老板说“做个数据看板”,你同事转手就交给AI“做个数据看板”。AI做了个花花绿绿的界面,老板一看说“我要的不是这个,我要的是服务器健康状态”。你同事傻眼。

但你不一样。你先写规格书。你在规格书里写清楚“数据看板展示的是服务器CPU、内存、磁盘使用率,数据来源是监控系统API,每三十秒刷新一次,红色代表超过80%需要报警,绿色代表正常”。然后把这个规格书给AI。AI做出来,老板一看,就是这个。

差距在哪。差距在你比同事多想了一步。你把老板脑子里的那个画面,先翻译成文字了。文字给AI,AI还原成画面。你的同事没翻译,直接让AI猜。AI猜错了,他背锅。

以后值钱的不是代码写得好的人,是能把话说明白的人。代码AI能写,但需求转成规格书这件事,AI现在还干不了。这就是你的护城河。

小bug有小规格,大功能有大规格

你不用每修一个bug都写三页纸。那不是给自己找麻烦吗。规格书的大小跟你干的事的大小匹配就行。

比如你发现登录页面有个拼写错误,把“登录”写成了“登入”。你直接跟AI说“把登录页面的‘登入’改成‘登录’”。一句话的事,不用写规格书。这种小事AI不会犯大错。

但如果你要新加一个功能,比如用户能上传头像。这个就得写规格书了。要写清楚头像文件多大不能超过、什么格式支持、上传到哪个目录、文件名怎么生成、没有头像显示什么默认图。这些你脑子里有,但AI不知道。你不写,它就自由发挥。到时候头像存了一堆,但全是乱的,你后悔都来不及。

所以学会看菜下饭碟。小事一句话,大事写规格。别走极端,别什么鸡毛蒜皮都写,也别啥都不写就让AI搞大工程。

你的规格书仓库,就是你的AI兵工厂

有个好习惯。把你写过的规格书都存起来。不是让你存着落灰,是让你复用。这次写了个“用户上传头像”的规格书,下次又来一个“用户上传封面图”的需求,你把上次的复制过来,改几个字就能用。

AI也能用你的规格书仓库。下次你再让AI写类似的东西,直接甩给它一句“参考我之前上传头像的那个规格书,这次是上传封面图,其他规矩一样”。AI一看就知道怎么干了,不用你从头写一遍。

这不光省事,还统一。所有的上传功能都一个规矩,文件大小限制一样、存储目录结构一样、命名规则一样。以后维护起来也方便。新人来了看规格书就能懂,不用你嘴对嘴教。

规格书仓库攒多了,你就有了一个AI也能读懂的“公司代码规矩大全”。新人AI来了,先读一遍,再干活。干出来的活就是公司的风格,不是它自己瞎编的风格。多好啊。

别把规格书写成法律条文,那不是给人看的

最后说个最重要的。规格书写给AI看,但首先得写给你自己看。所以别写成法律条文。什么“如果条件A成立,则执行操作B,否则执行操作C”。这种东西你自己看着都累,AI读着也累。

就写人话。像你跟你同桌说话一样。“用户上传头像的时候,图片文件不能超过2MB,太大了存不下也加载慢。支持jpg和png两种格式,其他的格式用户选了就告诉他不支持。头像存到这个文件夹里面:/uploads/avatars/{用户id}/。文件名用时间戳加随机数,避免重名。”

你看,多清楚。该有的技术细节有,但读起来不累。AI能看懂,你同事能看懂,你两周后回来看还能看懂。这才是好规格书。

规格书不是考试题,是说明书。说明书要让人一看就明白,不是让人一看就犯困。

总结
你以为AI会写代码就结束了,其实它才刚开始。最头疼的不是写代码,是让它别写错。规格书就是把AI从“你觉得呢”变成“你说了算”的那张纸。以后最牛的程序员不是写代码最快的,而是写规格书最准的。