软件工程基本功在 AI 时代比以前更值钱
AI是复杂度放大器,非清洁工。Vibe Coding如无严苛工程约束,将导致系统瘫痪。需通过通用语言、TDD、深模块等原则控制熵增,将工程纪律转化为AI硬约束。
AI 是复杂度放大器,不是复杂度清洁工”,这绝对不是老工程师的精神胜利法,而是血淋淋的现实。
Vibe Coding(氛围编码)的致命缺陷:Vibe Coding 如果不伴随严苛的软件工程约束,就是一场饮鸩止渴的灾难。它在开发初期透支了短期的速度,换来的是后期系统架构的彻底瘫痪。
AI 极大地降低了“敲键盘(Typing)”的门槛,但它不仅没有降低“软件工程(Software Engineering)”的门槛,反而将系统设计的难度推向了极致。
AI Coding 容易踩的坑、底层的技术本质,以及为什么传统工程原则在今天变成“硬通货”的原因,进行更深入、更深刻的解构:
一、 为什么 AI 会天然导致“软件熵”的指数级暴增?
一个非常重要的概念:软件熵。AI 生成代码的速度快了十倍,熵增的速度就快了十倍。为什么 AI 无法自发地维持代码库的秩序?这必须从 AI 的底层底层逻辑来剖析。
1. 局部最优解与全局最差解
大语言模型(LLM)的本质是基于上下文的概率预测。当你给 AI 一段上下文并让它实现一个新功能时,AI 的目标是“在当前给定的上下文窗口内,用最直接的代码满足你的 Prompt 要求”。
它的视界是局部的: AI 很难自发地跳出当前文件或当前函数,去审视整个系统的架构美感、模块边界和未来的可扩展性。
妥协的产物: 为了让你这一轮的 Prompt 跑通,AI 会倾向于写出最直白、最少依赖改动、但也最缺乏抽象的代码(比如直接硬编码、复制粘贴相似逻辑、或者增加一个丑陋的
if-else分支)。恶性循环: 第二轮、第三轮迭代时,AI 会基于上一轮已经妥协、已经变烂的上下文继续预测。垃圾引来垃圾,破窗效应在代码库里以微秒级发生。
2. AI 没有“痛觉”
人类工程师在写烂代码时是有“痛觉”的。当你发现要实现一个功能需要改动 7 个文件、复制 3 段类似的代码时,你的大脑会产生抗拒,这种抗拒会驱动你去重构,去抽象。
但 AI 没有痛觉。对 AI 来说,生成 10 行优雅的代码和生成 1000 行冗余的、散落的烂代码,消耗的算力和时间几乎没有区别。AI 极其擅长且乐意在烂代码库里堆砌更多的烂代码来解决眼前的 Bug。这就是为什么几轮 Vibe Coding 之后,系统就会变成没人敢动的“屎山”。
二、 深度解构防坑指南:将老原则转化为 AI 的“硬约束”
既然 AI 是复杂度放大器,我们就必须主动施加秩序。你提到的几个方法(Grill Me, 通用语言, 垂直切片, TDD, 深模块)非常赞,它们在 AI 时代的本质,其实是给失控的 AI 套上缰绳。我们逐一往深了剖析:
1. Grill Me 的本质:榨取 AI 的“边缘情况”推导能力
很多人把 AI 当成听话的打字员,这太浪费了。AI 真正的强项在于它拥有海量的模式识别经验(读过无数的开源 Bug 和设计模式)。
为什么要让 AI 审问你? 因为人类在表达需求时,大脑会自动忽略细节、模糊边界。比如“做一个用户登录”,人类脑子里想的是输入账号密码进主页。但 AI(在被要求 Grill 后)会立刻掏出它的核对清单:第三方登录吗?密码加盐哈希用什么算法?Token 过期策略是什么?单点登录(SSO)要支持吗?
核心思维转变: 不要直接下指令(Imperative),要转变为声明式设计(Declarative)。在动手前,让 AI 帮你把需求的边界条件(Edge Cases)全部逼出来。在架构设计阶段多花一小时折腾,能避免在编码阶段被 AI 带着跑偏两期迭代。
2. Ubiquitous Language(通用语言):统一 AI 的向量空间
在 DDD(领域驱动设计)中,通用语言是为了解决业务、产品、技术之间的沟通鸿沟。而在 AI 时代,它是为了防止 AI 的上下文污染。
技术内幕: LLM 依靠语义向量来理解词汇。在一个电商系统里,
Order、Trade、Bill、Deal在语义空间里非常接近。如果你不显式定义,AI 在这一轮可能会根据你的 Prompt 倾向选择Order,下一轮因为你随口说了一句“交易”,它就会自动关联并生成TradeRecord。正确姿势: 维护一个
CONTEXT.md或GLOSSARY.md。这个文件不仅是给团队看的,更是作为 AI 的 System Prompt 的一部分,或者是工程上下文的“宪法”。每次开启新任务,必须强迫 AI 声明:“我已阅读并理解通用语言规范”。
3. 垂直切片 + TDD:构建 AI 的自动纠偏闭环
你提到“垂直切片是精细手术,而 TDD 是限速器”,这个比喻太精妙了。
为什么要垂直切片? 因为 LLM 的上下文窗口和注意力是有限的。横向铺架构(先写所有 Model,再写所有 Service)会导致单次生成的代码量过大,人类根本没有精力去 Review 细节,瞬间就会失控。垂直切片将问题域限制在一个极小的、端到端的闭环内,迫使 AI 在一个小空间里保持高水准。
TDD 是 AI 时代最强的约束器:
传统 TDD 的痛点: 人类讨厌写测试,因为觉得繁琐,想直接看效果。
AI 时代 TDD 的红利:让人写测试用例(表达意图和断言),让 AI 写实现代码(填充细节),这是人机协作的黄金模式。 测试代码是绝对精准的自然语言/逻辑描述,它消除了任何歧义。AI 面对一个失败的测试,它的目标极其明确:让这个测试变绿。
反馈回路: 这构成了
Prompt -> AI 生成 -> 运行测试 -> 报错反馈 -> AI 修复的自动化闭环。你不需要去肉眼看它写的代码对不对,测试跑通了,底线就保住了。
4. 深模块(Deep Modules):人脑带宽的保卫战
Matt Pocock 提到台下程序员觉得更累了,因为“AI 在跑,人在喘”。人脑的认知负荷(Cognitive Load)是有极限的(著名的 $7 \pm 2$ 原则)。
浅模块的危害: AI 特别喜欢写浅模块(创建无数个只有两三行代码的 class 或 function,接口暴露得密密麻麻)。这表面上看起来符合“单一职责原则”,但实际上把复杂的调用逻辑和状态管理甩给了外部。人类工程师在审查代码时,不得不把这几十个小模块的调用关系全部装进脑子里,导致认知过载。
深模块的治本之策: 软件设计的核心是控制复杂性。深模块主张“把复杂的实现藏在简单的接口背后”。

图片描述
三、 核心总结与生活中的大白话示例
为了让你彻底记住并能在日常工作中随时调用这些原则,我们用“盖房子”这个生活中的大白话例子来做个总结。
传统的开发,像是你请了一个经验丰富的资深泥瓦匠(高级工程师),他自己一边规划,一边打地基,一边砌砖,虽然慢,但心里有谱,建出来的房子结构稳固。
而 AI Coding 时代的开发,就像是你突然获得了一个“全自动神速砌砖机”(AI)。这个机器一秒钟能砌一万块砖,速度快到飞起。

四、 变革时刻:从“代码工人”到“架构裁判”
核心结论:在 AI 时代,代码的生产成本已经无限趋近于零,但代码的阅读、维护和重构成本反而呈指数级上升。
稀缺性发生了彻底的反转:过去,行业崇拜“手速快、能加班写大量代码”的熟练工; 现在,AI 把“写代码”变成了烂大街的基础设施。最稀缺、最值钱的能力变成了**“品味、大局观、架构设计能力和严苛的工程纪律”**。
你不再是那个拿着铁锹铲土的工人,你成为了坐在挖掘机驾驶室里的操作员,甚至是工地的总监理。
如果你的基本功不过关,画不出清晰的模块边界,理不清业务的概念模型,AI 就会顺着你的混乱思路,用十倍的速度帮你建造一座宏伟的、随时会坍塌的“屎山城堡”。
只有当你掌握了软件工程的底层常识,把通用语言、测试约束、深度封装当成不可逾越的底线去命令 AI 时,AI 才会成为你手中真正的效率神兵。
会写 Prompt 顶多让你能用自然语言做个玩具;能管理复杂度,才是你在 AI 时代不被淘汰、反而身价倍增的真正护城河。
暂无评论
确认评论邮箱
邀请制评论