会写代码 ≠ 会交付系统
2025-08-26
在程序员最关心的职业焦虑里,很多人都会问:“为什么现在 AI 已经能写代码了,我还会不会很快被替代?”
知乎上有人问过这个问题,底下有个高赞回答说:“AI 写得再快,也只是函数片段,离真正上线可用的系统还差着十万八千里。”
今天我就结合经典的软件工程学、真实的案例,以及我们日常工作里看似琐碎却关键的细节,告诉你背后的关键:会写代码不等于能交付系统,AI 在‘写代码’和‘交付系统’之间有一条鸿沟。
正如软件工程经典著作《人月神话》里说的:“没有银弹,复杂性才是软件开发最大的敌人。”(Fred Brooks, The Mythical Man-Month, 1975)。
布鲁克斯提醒我们,软件难的不是写函数本身,而是面对复杂性的协调、分解和控制。
我有个朋友小李,是团队里的“全栈高手”。前几年大家流行黑客马拉松,他用了一整晚拼出了一个 AI 写作助手的 demo,大家一看:输入一句话,马上能生成一段漂亮的文字,界面也干净利落。那时所有人都拍手称赞,以为产品马上能上线。
但真正把它放到业务环境时,问题接二连三冒出来:用户量一大,接口就崩溃;生成内容可能包含敏感词,没过内容安全审查;前端调接口时延时过长,体验断崖式下降;最后法务部门说,这东西的数据存储合规性过不了关。
小李那晚的代码,写得没问题,逻辑正确、跑得通,可它离“交付可用的系统”还远着。
所以,如果你今天要做一件事,先记住:写出一个 demo 不难,把它做成稳定的系统才难。你真正的护城河,是能驾驭这种复杂性的能力。
再来看看第二个支点。
《谷歌软件工程》这本书里有句话:“代码本身不是资产,代码以外的环境和实践才决定了价值。”(Titus Winters et al., Software Engineering at Google, 2020)。
什么意思?就是单看一段函数,它可能是天才之作,但若没有测试、版本管理、回滚机制、监控报警、灰度发布,那它在生产环境里就是一颗不定时炸弹。
前段时间 Uber 有个真实的事故:工程师把一段 seemingly 正常的脚本部署到生产,结果计费系统出现 bug,几小时里少收了几百万美金。后来事后复盘,问题根源不是“代码有 bug”,而是缺乏完备的测试和部署流程。
你看,这才是大规模软件系统最可怕的地方。AI 可以帮你快速生成一段逻辑,但它并不能替你验证在极端场景、边界条件、并发冲突、异常处理时是否依旧可靠。
所以,如果你要做一件事,先学会写好测试、懂得回滚,把运维和监控链路熟练掌握。因为未来 AI 会替代掉“写逻辑”的部分,但不会替代“保证系统稳定运行”的责任。
第三个支点。
哈佛大学计算机科学教授 David Parnas 曾经说过:“软件工程的本质在于分解——把复杂系统拆分成可以独立理解和管理的部分。”(David Parnas, On the Criteria To Be Used in Decomposing Systems into Modules, 1972)。
我认识的一位 CTO 老王,早年带过一个大型电商平台。平台上线前,大家争分夺秒,几百人写代码,模块一天就能出几十个版本。表面上看,产能惊人。
可是等到系统集成时,问题爆发了:模块之间接口对不上,调用链路缺乏统一标准,数据库 schema 不一致。于是出现了经典的“集成地狱”,开发效率直线下降,修 bug 修得人心力交瘁。
老王后来复盘说,真正的差距不是“谁能写多少行代码”,而是“谁能设计出清晰的边界和解耦的架构”。
这正是 AI 做不到的地方。它生成一段局部逻辑没问题,可如何定义领域模型,如何确定有界上下文,如何权衡延迟与吞吐、扩展与稳定,这些决策只有人能做。
所以,如果你要做一件事,先练习用领域驱动设计(DDD)、用事件风暴的方法,把需求翻译成清晰的领域模型和边界。记住:未来写代码可能不稀缺,但能画出正确的架构蓝图的人,永远稀缺。
有人可能会问:那是不是 AI 完全帮不上系统交付?
不对。边界要划清楚。
比如在一些标准化场景里——自动生成 CRUD 代码、编写单元测试样例、把已有模块改写成另一种语言——AI 已经能带来显著提效。但在复杂业务里,尤其是涉及合规、跨系统依赖、大规模用户量的环境下,它还远远不能替代人的判断与责任。
就像《人月神话》里另一句经典:“加人手可以让项目更晚。” 这句话放到今天也一样适用——“加 AI 可以让 demo 更快,但未必能让系统更稳。”
所以,AI 的最佳位置不是替你写完整系统,而是作为你的副驾,让你少花时间在重复劳动上,把更多精力放到需求澄清、架构权衡、系统治理这些真正需要智慧的地方。
如果你只做一件事,那就是从今天开始,把注意力从“写多少行代码”转移到“交付可用系统”上。
想更进一步,再做第二步:学习可靠性工程(SRE)的思维,把稳定性、运维、观测纳入设计之初。
第三步:修炼架构思维,能在混乱的需求和环境里画出边界、定义模块、搭好骨架。
你有没有遇到过类似情况?明明功能写出来了,但上线时 bug 不断、系统扛不住?欢迎在评论里分享。
合十。
如夜话,至此。
发表评论: