上篇文章聊了”没写过代码的人最敢说 AI 能写代码”,评论区的讨论比我预想的激烈。有条读者评论,说自己是产品经理,没有代码经验,用 AI 做了一套交易系统。他说 AI 会失忆、会误删文件、会犯各种离谱的错,但他通过规范流程、优化文档记忆、拆解需求,硬是把东西做出来了。最后他说了一句:“跟写代码无关,只要结果符合预期就行。”
但我看完之后的感觉完全不一样。不是佩服,是一种很奇怪的错位感——他做的那些事,规范流程、拆解需求、处理 AI 的各种故障、确保最终结果符合预期——这些就是工程师每天在做的事情。他只是不知道而已。
你做的就是程序员的活
我把他描述的那些操作翻译成工程师的语言,你听听看:
“规范技能规范流程”——这叫工程规范制定。每个正规团队都有代码规范、提交规范、Review 流程,做的事情一模一样。
“优化文档和记忆”——这叫上下文管理。资深工程师用 AI Coding 的时候,最花心思的就是怎么把项目规则写进 CLAUDE.md、怎么拆 session、怎么在上下文窗口溢出之前把关键信息存到文件里。
“拆解需求”——这叫需求分析和任务拆分。一个大功能拆成若干个边界清晰的小任务,每个小任务交给 AI 之前都要想清楚输入输出和边界条件。这是软件工程里最核心的技能之一。
“跟写代码无关,只要结果符合预期”——这句话是最有意思的。什么叫”结果符合预期”?你的交易系统跑通了 Demo,那它在并发 100 的时候还能跑吗?网络断了会丢数据吗?重启之后状态能恢复吗?半夜两点崩了谁来修?
他不是在”跟写代码无关”的环境里做出了产品。他是在一个他自己不知道的工程环境里,用 AI 代替了键盘,做了一整套工程师的工作。他觉得自己没有写代码,但他做的每一步都是写代码之外真正值钱的那部分。
这就引出一个更大的问题:到底什么是”写代码”?
“写代码”这三个字,被严重误解了
在公众的认知里,“写代码”约等于”在屏幕上敲英文字母”。所以当 AI 能替你敲这些字母的时候,结论就变成了”AI 会写代码了,程序员要失业了”。
这个认知错得离谱。
敲代码只是软件工程里最表层的那一环。就像砌砖只是盖房子最表层的那一环——真正决定房子能不能住人的,是地基、承重结构、水电管线、消防设计。你让一个不懂建筑的人去指挥施工队,他能说清楚的只有”我要一个房子”。至于地基多深、承重墙在哪、管线怎么走,他说不出来,因为他脑子里没有这个知识体系。
软件也是一样的。一个真实的产品从需求到上线,中间要经过需求分析、技术方案设计、数据模型设计、接口设计、编码实现、单元测试、集成测试、代码 Review、部署上线、监控告警、运维保障。编码实现这一步,在整个链条里大概占 20% 的时间。AI 能帮你把这 20% 加速,但剩下的 80% 它帮不了你。
而且更要命的是:那 80% 里的每一项,都需要你自己先具备判断力。你不知道什么是好的技术方案,你就没法判断 AI 给的方案靠不靠谱。你不知道什么是合理的数据模型,你就没法发现 AI 设计的表结构会在三个月后变成一团乱麻。你不知道什么是边界条件,你就没法告诉 AI 要去检查哪些异常路径。
操作 AI 的人脑子里有什么,决定了产出质量的上限。这个上限不会因为有了 AI 就自动提高。
还有一种更极端的观点,我觉得必须拿出来说说。有些人觉得自己不需要学数学、不需要学英语、不需要懂软件工程、不需要学计算机原理和数据结构——反正有 AI 嘛,有什么不会的问它就行了。用一个语言模型,就觉得自己能写代码了。
说难听点,这跟意淫没什么区别。
你让一个不懂数据结构的人用 AI 写一个需要处理百万级数据的系统,他写出来的东西大概率是一个能跑 Demo 但撑不住生产环境的玩具。他不知道什么是时间复杂度,所以他不会告诉 AI 要用哈希表而不是列表去做查找。他不知道什么是索引,所以他不会发现 AI 生成的查询语句在做全表扫描。他不知道什么是死锁,所以他不会检查 AI 写的并发代码有没有加锁顺序的问题。
这些东西,过去可能没那么重要——因为写代码本身就是一道门槛,不懂这些的人根本迈不过去。但现在不一样了。代码本身已经几乎免费了,AI 可以在几秒钟内生成几百行代码。当代码变得免费,那些过去被代码门槛挡住的东西——工程原理、计算机基础、数据结构和算法——反而变得无比珍贵。
因为代码是免费的,但这些东西不是免费的。
一个没有任何专业背景的人,用一个概率语言模型生成的代码,最多写写玩具。这话我说得很绝对,但我找不到更温和的表达方式。玩具和产品之间的距离,不是代码量的差距,是整个知识体系的差距。
吴恩达说的没错,但他只说了一半
前几天吴恩达发了一篇文章,标题很直接:AI 不会摧毁就业市场。下面是他的原文。

他用数据反驳”AI 导致大规模失业”的恐慌叙事——软件工程受 AI 冲击最大,但招聘依旧强劲。美国失业率维持在 4.3%,程序员没有被替代。他还说了一个词:AI jobpocalypse(AI 就业末日),说这种叙事在”制造不必要的恐惧”。
但他不只是摆数据。他分析了这种恐慌叙事为什么会流行,这段分析比数据本身更有价值。
他提到了三个利益相关方。
第一个是前沿 AI 实验室。他们有强烈的动机把 AI 说得越强大越好——如果一个技术能替代大量员工,那这个技术一定很值钱。所以他们愿意传播”AI 可能取代人类”“AI 可能导致灭绝”这类科幻叙事,因为这些叙事会推高估值。
第二个是 SaaS 软件公司。传统软件收每人每年 100 到 1000 美元,但如果一家 AI 公司能替代一个年薪 10 万美元的员工——或者让他们效率提升 50%——那收 1 万美元都显得便宜。把定价锚定在员工工资上,而不是软件行业的常规价格上,就能卖出高得多的价格。
第三个是裁员的企业。把裁员包装成”我们用 AI 提效了,所以不需要这么多人了”,比承认”疫情期间低利率环境下我们招多了人”要体面得多。AI 成了裁员最好的遮羞布。
吴恩达还做了一个类比:历史上社会给自己讲过很多没有事实基础的故事。对核安全的恐惧导致核电投资不足。1960 年代的”人口炸弹”恐慌导致一些国家实施了严苛的人口政策。对膳食脂肪的担忧让政府推广了几十年高糖饮食。每一个恐慌叙事都影响了数以亿计的人的决策,事后看来全是错的。
这个观察很准。但我觉得吴恩达只说了一半。
另一半是:AI 确实没有替代程序员,但它正在重新定义”程序员”这三个字的含义。
以前一个初级工程师,入门前两年干的活可能是写 CRUD、改样式、调接口。这些活 AI 现在确实能干,而且干得比人快。这意味着什么?意味着入门级的活正在被 AI 消化,初级工程师必须更快地往上升——学会设计、学会判断、学会为系统负责。否则你就是那个只会敲代码的人,而敲代码这件事,AI 确实已经很会了。
这才是真正的冲击。不是”程序员失业”,是”只会写代码的程序员会被淘汰”。区别在于:被淘汰的不是因为 AI 来了,是因为他们只做了那 20% 的表层工作,从来没有往深处走。
结果能跑,不等于产品能用
这里还有一个很多人忽略的问题:Demo 和产品之间的距离,比大多数人想象的要远得多。
一个交易系统的 Demo 能跑,意味着什么?意味着在理想条件下,输入正常数据,它能输出看起来正确的结果。这大概需要两三个小时就能搞定。
但一个交易系统能上线,意味着什么?意味着它要能处理网络延迟、数据不一致、并发冲突、用户误操作、服务器宕机、数据库主从切换。它要有日志、有监控、有告警、有回滚机制。它的代码要有人 Review、有人能看懂、有人能在半夜两点把它修好。
这两者之间的差距,不是 10 倍,是 100 倍。
我犯过一个错,特别能说明这个问题。有一次让 AI 帮我写一个数据迁移脚本,它写完了,本地测试全部通过。我直接上了生产环境。结果跑到一半挂了——原因是生产环境的数据量是本地测试的 200 倍,内存直接爆了。这个脚本没有做分批处理,因为它不知道生产环境的数据量,我也没告诉它。AI 给了我一个在特定条件下能跑的方案,而我误以为它是通用的。
这就是”结果能跑”和”产品能用”之间的区别。前者只需要在你的电脑上跑通一次,后者需要在任何情况下都跑得通。
他的交易系统,我猜大概率停留在 Demo 阶段。如果它真的已经在处理真金白银了,那他需要面对的就不只是”AI 会不会犯错”的问题,而是”AI 犯的错谁来兜底”的问题。一个没有技术背景的产品经理,面对生产环境的事故,他能做什么?打电话给 AI 吗?
有人可能会说:那如果 AI 继续进化,这些问题不就都解决了?上下文窗口会更大,代码质量会更高,理解能力会更强。
会的。但有一件事不会变:你得先知道什么是对的,才能判断 AI 给的是不是对的。这个能力不是 AI 能给你的,是你自己积累出来的。AI 可以帮你写出更高质量的代码,但它不能帮你判断这个代码该不该写、这个方案该不该用、这个功能该不该做。这些判断,每一个都需要你对这个领域有足够的理解。
我自己的体感是,AI 用得越多,越觉得自己的判断力重要。以前写代码的时候,大部分时间花在怎么实现上。现在 AI 帮我把怎么实现加速了,反而更多时间花在了该不该实现和这样实现对不对上。工具越强大,使用者的判断力就越值钱——这个趋势不会因为模型进化而改变。
真正危险的不是 AI,是误解
回到吴恩达的推。他说”AI 导致大规模失业”是不负责任的恐慌叙事,我同意。但我想补充一句:比恐慌更危险的,是误解。
误解有两层。
第一层是评论区那种:觉得自己用 AI 做出了东西,就等于自己会写代码了。这种误解的危险在于,它会让人在不该自信的地方自信。等产品真的上线、用户量上来、需要处理真实世界的复杂性的时候,他会发现 AI 帮不了他——因为他脑子里缺的不是代码,是整个工程体系的知识。
第二层是更广泛的公众认知:觉得 AI 已经能写代码了,所以程序员不重要了。这种误解的危险在于,它会影响决策。当老板觉得”AI 都能写代码了,为什么还需要这么多人”的时候,被砍掉的不是程序员的岗位,是产品质量的底线。
前两天还有一个更极端的例子。有人在网上说”以后软件就是日抛的,每天让 AI 重新写一遍,要什么版本管理”。底下一片叫好。我看到这条的时候,心里只有一句话:你试试用日抛的代码跑一个交易系统,看看你的钱还在不在。
版本管理、代码 Review、测试覆盖、部署流程——这些不是程序员矫情,是无数次线上事故之后总结出来的生存法则。你觉得它们多余,只能说明你没有经历过它们不存在的年代。
工具变了,本质没变
最后说回这件事。
我不觉得那位读者做的事情有问题。恰恰相反,他做的事情很好——一个产品经理能用 AI 搭出一套交易系统,这说明他有很强的学习能力和解决问题的能力。他做的那些规范流程、需求拆解、上下文管理,每一步都是对的。
我唯一不同意的,是那句”跟写代码无关”。
这不是跟写代码无关。这就是写代码。只不过”写代码”这三个字的含义,从来不只是敲键盘。
AI 改变的是敲键盘的那一步。它让一个不会写代码的人,也能通过自然语言驱动 AI 生成代码。这很了不起,但它没有改变剩下的一切——需求分析、架构设计、质量保障、生产运维。这些东西依然需要人来做,需要人来判断,需要人来负责。
吴恩达说得对,AI 没有导致大规模失业。但 AI 确实在做一件事:它正在把”会写代码”和”能做软件”之间的距离拉得更大了。以前这两件事的差距没有那么明显,因为敲代码本身就是一道门槛。现在门槛没了,很多人以为自己跨过了那道门槛就到达了终点。
没有。门槛后面是一整片旷野。
如果你是那样的人——有学习能力、愿意花时间去搞清楚工程体系里的每一个环节、不在乎自己算不算程序员这个标签——那你其实已经在旷野里走出路了。你只是不知道自己走的那条路,跟工程师走的是同一条。
但更多的人,是连门槛都还没摸到就觉得自己已经到了终点。不是说他们不行,是说他们得先承认自己不知道的东西还有很多。这个承认,比任何 AI 工具都重要。
AI 是你脚下的加速器,但方向盘还在你手里。如果你不知道要去哪里,加速器只会让你更快地迷路。
夜雨聆风