全栈不是"什么都能改",而是"什么都看得懂、守得住"
这是《AI 编码时代的代价》系列第 1 篇。如果你更关心决策层的认知变形,可以直接跳到[第 2 篇];如果你更关心产品落地的漏斗损失,可以直接跳到[第 3 篇]。
一、你最近有没有说过这些话?
过去一年,越来越多的技术团队开始推行"全栈 + AI"的工作模式:鼓励每个人都成为全栈工程师,借助 AI 编码工具快速交付需求。从管理视角看,这似乎是效率的飞跃——需求吞吐量上去了,人均产出提高了,Demo 和 POC 层出不穷。
但如果你是一个正在写代码的工程师,扪心自问:你最近有没有说过——或者至少想过——这些话?
"这个模块不是我负责的,我只是临时改了一下。" "这段代码是 AI 生成的,我也不太确定为什么这样写。" "体验细节?先上线吧,后面再优化。" "反正谁都可以来改这个模块,我先把手头的任务交了。"
如果你对其中任何一句感到熟悉,那你正在经历一件比"技术债"严重得多的事情:你的工程判断力正在萎缩,而你可能还没有意识到。
二、AI 消灭了那道让你变强的屏障
在没有 AI 的时代,一个工程师要修改一个不熟悉的模块,需要先花时间去读懂它——理解设计意图、梳理上下文、搞清楚模块间的依赖。这个过程很痛苦,但它本身就是学习和成长。更重要的是,这个"理解成本"是一道天然的屏障:它阻止了随意的、低质量的修改,因为你不理解的东西,你改不动。
现在,AI 可以在几秒钟内生成一段"看起来能跑"的代码。你不再需要"读懂"才能"改动"了。
表面上,你的效率提高了。实际上,你跳过了那个让你变强的过程。
经济学中有一个经典概念叫"公地悲剧"(Tragedy of the Commons)——当一片牧场属于所有人时,每个人都倾向于过度放牧,因为收益归个人,而牧场退化的代价由所有人分担。最终,牧场被毁。
今天的代码仓库正在经历同样的事情。当团队推行"全栈"理念、鼓励任何人都可以修改任何模块时,模块就变成了"公地"。每个人都可以往里面提交代码——尤其是 AI 生成的代码——但没有人对这个模块的整体健康度、架构合理性、体验一致性承担最终责任。
于是我们得到了一个悖论:
代码的生产成本趋近于零,但代码的维护成本、质量成本、体验成本并没有降低——反而因为缺乏 ownership 而急剧上升。
三、四种正在侵蚀你的结构性力量
这不是你个人的意志力问题。你身处的组织结构,正在从四个方向同时瓦解你的工程判断力:
3.1 Ownership 消失了
当"人人全栈"变成"人人可改一切",模块就失去了明确的守护者。没有人会在季度回顾时被问到:"你负责的模块,这个季度质量趋势如何?"因为根本没有"你负责的模块"这个概念。
你不是不想负责,而是组织没有给你负责的空间。 当任何人都可以随时往你的模块里提交 AI 生成的代码,你的"守护"行为变得毫无意义——你刚理顺了架构,明天就有人加了一坨不相干的逻辑进来。
3.2 质量标准模糊了
在追求速度的氛围下,"能跑就行"成为隐性共识。没有明确的、可执行的质量门禁,Code Review 流于形式("AI 写的应该没问题吧"),测试覆盖被视为"以后再补"的低优先级事项。
当周围所有人都在"先上了再说"时,你一个人坚持"这个 edge case 还没覆盖",反而成了拖后腿的人。标准不是你一个人能守住的,它需要组织的共识。
3.3 激励指向了错误的方向
上线一个新功能是可见的功绩,而守护一个模块的长期健康是不可见的贡献。KPI 度量的是产出速度和功能数量,不度量代码健康度、体验完成度和稳定性。
当"做新的"永远比"做好的"更受奖励时,没有人会选择留下来打磨。 这不是因为工程师不在乎质量——而是在乎质量的人得不到任何正反馈,甚至会被认为"效率低"。
3.4 "全栈"被滥用了
全栈的本意是"一个人具备端到端的理解能力",是一种能力模型。但在实践中,它被异化为一种职责模型——"既然你是全栈,那前端后端数据层你都可以改"。
这混淆了"能力广度"和"职责边界"。最终导致的结果是:人人可写一切 ≈ 无人精通任何事。
你有没有发现,你花在"快速切上下文、到处救火"的时间越来越多,而花在"深入思考某个领域最佳实践"的时间越来越少?这不是你不够努力,是组织结构在逼迫你成为一个浅层的、广泛的、可替换的"代码搬运工"。
四、最讽刺的后果:你正在丧失速度
追求速度的模式,最终会让你丧失速度。
当团队开始响应客户反馈、修复问题时,会发现:
- 改 A 功能,B 功能莫名其妙坏了——因为没有测试覆盖,也没人清楚模块间的依赖关系
- 想优化某个流程,发现底层数据结构设计得很别扭,牵一发动全身——因为当初是 AI 生成的"能跑就行"的方案,没有人做过架构审视
- 两个人同时在改相关模块,合并后互相覆盖——因为没有 Owner 协调
结果是:一个迭代修 5 个问题,同时引入 3 个新问题。
而你作为工程师,最直接的感受是:你的技术判断力在退化。 你不再自信地说"这个方案在 XX 场景下会出问题",因为你已经很久没有深入思考过某个模块的全貌了。你的工作变成了:接任务 → 让 AI 生成 → 跑通 → 提交 → 下一个。 你变成了一个人形流水线。
五、你以为自己是"全栈工程师",实则是"AI 操作员"
让我们直面一个残酷的问题:
全栈工程师和 AI 操作员的区别是什么?
| 全栈工程师 | AI 操作员 |
|---|---|
| 能解释自己写的每一行代码的设计意图 | 能运行 AI 生成的代码,但说不清为什么 |
| 对自己负责的模块有全景认知——历史、现状、未来演进方向 | 对每个模块都是局部认知——只看当前任务需要改的那几行 |
| 修改代码前会思考:这个改动对系统整体的影响是什么? | 修改代码前的思考:AI 生成的方案能不能跑通? |
| 能设计可演进的架构,预见未来的扩展需求 | 只能做当下能跑的方案,未来扩展时再说 |
| 对质量有直觉——一眼能看出"这段代码味道不对" | 对质量的判断依赖工具——CI 过了就行 |
你现在在哪一列?半年前呢?趋势在往哪个方向走?
六、这不是 AI 的错,是你允许它替你思考
我要非常明确地说:AI 辅助编码是好事。 它把你从重复性劳动中解放出来,让你能更快地验证想法、更高效地完成实现。这不应该被抵制。
但工具是中性的,你怎么用它,决定了它是放大你还是替代你。
- 如果你用 AI 来加速你已经想清楚的方案的实现——它在放大你
- 如果你用 AI 来跳过思考,直接生成一个你并不理解的方案——它在替代你
被放大的工程师会越来越强,因为 AI 帮他们把时间省出来去思考更深层的问题。被替代的工程师会越来越弱,因为他们把省出来的时间用来接更多的任务,而不是做更深的思考。
一年之后,这两类人之间的差距会大到不可逾越。
七、你今天可以做的三件事
组织的结构性问题不是你一个人能解决的,但你可以做一些事情来守住自己的工程判断力:
1. 给自己一个"理解红线"
规则:任何 AI 生成的代码,在提交之前,你必须能向同事解释它的每一个设计决定。 如果你解释不了,就不要提交。这不是效率的浪费,这是你维持判断力的基本训练。
2. 主动认领一个模块的 Ownership
即使组织没有正式分配,你也可以非正式地认领一个模块:关注它的质量趋势、维护它的架构文档、在别人修改它时参与 Review。对一个模块有深度认知,比对十个模块有浅度接触,对你的职业发展更有价值。
3. 用"省出来的时间"做深度思考,而不是接更多任务
AI 帮你节省了 30% 的编码时间。你可以用这 30% 去接更多任务、提高"产出数字"。你也可以用这 30% 去:
- 重构一个你觉得设计不合理的模块
- 给关键路径补充测试覆盖
- 深入研究某个技术领域的最佳实践
- 思考当前架构在半年后会遇到什么瓶颈
第一种选择让你的数字更好看。第二种选择让你自己更值钱。
八、写在最后
AI 正在深刻地改变软件开发的方式,这是不可逆的趋势,也不应该被抵制。
但我们需要清醒地认识到:AI 改变的是代码的生产方式,没有改变软件工程的基本规律。 代码需要有人负责,模块需要有人守护,产品需要有人打磨——这些事情不会因为代码是 AI 写的就不再重要。恰恰相反,当代码生产变得廉价时,判断、审美、责任心和工程纪律的价值反而被放大了。
"全栈"不应该意味着"消除专业分工",而应该意味着"在保持专业深度的同时,具备全局视野"。AI 不应该成为"跳过思考"的借口,而应该成为"把思考做得更深"的工具。
最终,决定一个工程师命运的,不是他用不用 AI——而是 AI 在替他写代码的时候,他的脑子在干什么。
这是《AI 编码时代的代价》系列第 1 篇。第 2 篇[《AI 让实现变得廉价,但它正在让你的决策变得更烂》]写给决策者和管理者;第 3 篇[《你的产品"差一口气",而这口气正在杀死你的推广转化》]写给产品人和增长团队。