我有一阵子没在这里写东西了。
不是因为我没有观点了。
那才让人担心。
我只是厌倦了那没完没了的:
- AI 会取代开发者
- AI 永远不会取代开发者
- 这个模型改变了一切
- 这个智能体改变了一切
- 软件工程已死
- 软件工程从未如此重要
所以我停笔了一段时间。
AI 可没停。
现在回来,有一件事感觉相当明显:
AI 变强了。
软件没有。
模型更好了。
编程智能体更好了。
一个下午能生成的代码量,说实话,跟一年前比简直离谱。
然而不知怎的,我们仍然有:
- 过度设计的后端
- 围绕一个简单数据库调用套七层抽象
- 依赖地狱
- 没人要的功能
- 微服务在解决根本不存在的问题
- 团队骄傲地以机器速度交付复杂性
所以也许代码生成从来就不是瓶颈。
也许我们只是希望它是。
写代码从来都不是最难的部分
开发者喜欢把编程说得好像价值全在于敲出实现。
我不这么认为。
难的部分一直是决定:
这东西该存在吗?
这真的是正确的解决方案吗?
我们在解决真正的问题吗?
这需要再加一层吗?
这个能不能直接删掉?
你咖啡还没喝完,AI 就能给你 600 行看起来完全像样的代码。
但这并不意味着那 600 行就该存在。
而这就是我认为 AI 让事情变得有点危险的地方。
它消除了摩擦。
听起来很棒。
但摩擦有时能让我们免于自己那些糟糕透顶的想法。
以前,如果你想构建一个没必要那么复杂的系统,你至少得为此受点罪。
现在一个智能体会热情地帮你把整场灾难搭建起来。
AI 极其擅长帮你过度设计
让 AI 解决某个问题,它通常都想帮上忙。
非常想帮忙。
帮忙得让人起疑。
你要一个小功能,突然之间你就有了:
- 一个服务层
- 仓储模式
- 依赖注入
- 校验抽象
- 重试逻辑
- 配置对象
- 三个接口
- 一个工厂
而且一切看起来都挺合理。
这就是问题所在。
糟糕的软件很少一开始就是那种一眼看上去很蠢的东西。
它始于许多单独看来都合理的决定。
AI 现在能比我们后悔的速度更快地做出那些合理的决定。
AI 越强,我越想要无聊的软件
我之前写过,我 2026 年的技术栈无聊得要命。
当时我是认真的。
现在我更认真了。
因为如果 AI 要写更多的实现,我希望周围的系统可预测到令人痛苦。
给我:
- 无聊的数据库
- 无聊的 API
- 无聊的框架
- 无聊的部署
- 显而易见的架构
- 另一个人不需要一张解释图表的图表就能看懂的代码
我不需要我的技术栈有趣。
我需要产品有趣。
这是有区别的。
而我觉得我们有点忘了这一点。
代码正在变得廉价
这可能是会惹恼一些人的部分。
我认为代码本身正在变得不那么有价值。
不是一文不值。
是价值降低了。
生产代码的能力正在以极快的速度商品化。
这并不意味着开发者正在变得一文不值。
它意味着开发中有价值的部分正在转移到别处。
转向:
- 判断力
- 架构
- 调试
- 产品思维
- 品味
- 知道该拒绝什么
- 知道 AI 什么时候自信地错了
- 知道什么时候正确的实现是不实现
我认为“品味”将成为最重要的工程技能之一。
而且它难得让人恼火地难以衡量。
当你和拥有它的人共事时,你就知道了。
他们会删东西。
他们会简化。
他们会问令人恼火的问题。
他们不知怎么地把你那聪明的 14 步方案变成五行无聊的代码。
这些人在一个 AI 密集的世界里会做得非常好。
我们不缺代码
这是我反复回到的一点。
我们从来没有真正缺过代码。
GitHub 并没有坐在那里想:
“求求了。来个人。我们迫切需要更多的 JavaScript。”
我们缺的是好的决策。
AI 给了我们更多的产出。
更多的实现。
更多的选项。
更多的原型。
更多的代码。
太棒了。
但更多并不自动等于更好。
有时候更多只是……
更多。
而如果开发者不变得更擅长筛选生成出来的东西,我们最终可能会用我们创造过的最强大的开发工具,生产出历史上最大的一堆平庸软件。
高效地。
我一直在用 AI
这不是一篇反 AI 的文章。
恰恰相反。
我用 AI 来编码、调试、研究、写作、探索想法,以及挑战我自己的解决方案。
我不想回到过去。
但我对“AI 写了整个功能”这件事的惊叹,已经不如从前了。
很酷。
但这是对的功能吗?
代码可维护吗?
你理解它生成了什么吗?
它是否增加了你并不需要的复杂度?
你自己会那样设计吗?
这些问题现在对我来说更重要。
也许这份工作从来就不是写代码
也许那只是最显眼的部分。
也许这份工作一直都是在不确定性下做决策。
理解系统。
做权衡。
找到能起作用的最简单方案。
偶尔还要告诉所有人:
不。我们绝对不需要为这个上 Kubernetes。
AI 能生成的软件,比我们任何人手工写出来的都要多。
那部分已经解决了。
现在真正有意思的问题是,我们是否真的更擅长判断哪些软件值得存在。
我不认为我们做到了。
说实话?
这可能是一个比 AI 取代程序员更大的问题。
你怎么看?
AI 是让开发者成为更好的工程师——还是只是让他们更快地产出他们本来就要构建的东西?
