导读:十年前,“选择无聊的技术”是资深工程师的共识。如今,Copilot、Claude 等 AI 工具似乎能让我们一天内“精通”任何新框架。这到底是技术的进步,还是一个精心包装的陷阱?本文将深入剖析,为什么在 AI 编程时代,这个“过时”的原则非但没有失效,反而比以往任何时候都更加重要。
一、故事的开始:凌晨三点,谁能救你?
让我们想象一个所有工程师都经历过的噩梦:凌晨三点,手机警报响起,生产环境的核心服务雪崩。
此刻,你最不希望看到的,是监控日志里一个你不熟悉的、上个月刚引入的“明星”框架抛出的诡异错误。你真正渴望的,是一个像 Java Spring、Python Django 或 Postgres 这样“无聊”的技术——因为你知道,你遇到的任何问题,大概率已经有成千上万的人在 Stack Overflow 上讨论过,并且给出了解决方案。
这便是 Dan McKinley 在其经典文章《选择无聊的技术》中传达的核心智慧:技术的价值在于稳定和可预测,而不是新潮。 团队的精力(他称之为“创新代币”)是宝贵的,应该花在解决业务问题上,而非把技术栈当成“玩具展览馆”。
然而,AI 编程工具的崛起,正在用一种前所未有的方式,挑战这个久经考验的原则。
二、AI 的“双刃剑”:看似无所不能,实则陷阱重重
AI 代码助手带来了巨大的诱惑,同时也埋下了前所未有的地雷。
诱惑是:它让你感觉自己无所不能。
你可以对 AI 说:“用最新的 Rust Web 框架 Actix-Web,结合 aiohttp 写一个高性能的网关,并用 gRPC 与后端通信。”几分钟后,一套结构完整、看似专业的代码就呈现在你眼前。它可能包含了完整的错误处理、清晰的模块划分,甚至能直接运行。这种“瞬间掌握新技术”的快感,是任何一个开发者都难以抗拒的。
陷阱是:在你不熟悉的领域,你无法分辨 AI 是“大神”还是在“一本正经地胡说八道”。
当 AI 为你生成了你不熟悉的技术代码时,你实际上失去了一项至关重要的能力:代码鉴别与审查(Code Review)。
我见过太多“血淋淋”的例子,团队兴高采烈地合并了 AI 生成的代码,结果:
-
引入了已被废弃的库函数:短期能用,但下次升级就是一颗定时炸弹。
-
埋下了严重的安全漏洞:比如在鉴权逻辑上抄了某个存在漏洞的开源代码片段。
-
制造了隐蔽的性能瓶颈:比如一个看似无害的数据库查询,在高并发下能瞬间拖垮整个系统。
这些问题的共同点是——它们“看起来都对”,其错误隐藏在技术的深层细节里,只有对该领域有深刻理解的专家才能识破。
三、风险不再是相加,而是相乘
过去,我们评估技术风险时,通常是做“加法”:项目风险 = 固有复杂度 + 新技术的学习成本。这部分新增的风险,我们可以通过投入时间学习来逐步化解,它是一种线性的“技术债”。
但在 AI 时代,风险模型变成了“乘法”:
AI时代的项目风险 = 固有复杂度 × (新技术的未知) × (AI生成代码的不可靠性)
这已经不是简单的“货物崇拜”(cargo-culting),而是 “指数级的货物崇拜”。当系统在未来某个节点失效时,你要面对的不再是一个单纯的技术问题,而是一个“黑箱”:你不知道是自己对业务的理解错了,还是 AI 对技术的理解错了,还是那个新技术本身就有坑。你的调试难度呈指数级上升。
四、AI 时代的生存法则:做“驾驶员”,不做“人形拐杖”
那么,我们该如何自处?答案简单而深刻:
AI 应该是你能力的“放大器”,而不是你知识的“替代品”。
-
当你是驾驶员(精通者)时:一个熟悉 Go 语言的开发者,可以让 AI 辅助生成 gRPC 的模板代码。当 AI 给出的并发模型有锁竞争风险时,他能立刻察觉并修正。AI 在这里扮演了“副驾驶”的角色,处理了繁琐的重复工作,而方向盘和刹车牢牢掌握在开发者手中。
-
当你把 AI 当拐杖(新手)时:一个不熟悉 Kubernetes 的开发者,让 AI 生成一个复杂的 Deployment YAML 文件。AI 可能不会添加资源限制(
resources.limits),或者使用了不安全的权限配置(securityContext)。开发者复制粘贴并部署,应用在低负载下运行正常,直到某天流量洪峰到来,这个应用耗尽了整个集群的资源,导致了灾难性的后果。
五、给工程师的三个“避坑”指南
在 AI 无处不在的今天,如何践行“选择无聊的技术”?请记住以下三条军规:
-
用“代码审查的信心”来做技术选型。 在引入任何新技术前,问自己一个问题:“如果 AI 为它生成了 500 行核心代码,我敢不敢、能不能像审查自己写的代码一样,找出其中所有潜在的问题?”如果答案是“不确定”,那么这项技术就不应该出现在你的核心生产链路中。
-
把“祈祷式编程”变为“审问式学习”。 当你决定要学习一门新技术时,把 AI 当成你的私人教练,而不是答案生成器。不要只是复制粘贴然后祈祷它能运行。你应该“审问”它:“为什么用这种方式实现?”“还有其他几种方案吗?优缺点是什么?”“这段代码在什么情况下会出错?”直到你能独立验证它的产出,才算真正掌握。
-
一次只挑战一个“未知数”。 AI 最大的诱惑之一,就是让你觉得可以同时掌握“新语言 + 新框架 + 新数据库”。这是通往项目失败最快的路径。请坚守工程学的基本原则:一次只改变一个变量。当你必须引入一个新技术时,确保与之配套的其他技术都是你最熟悉的“无聊”技术。
结语:你的“理解”,才是最硬核的竞争力
“选择无聊的技术”的核心,是降低认知负担和规避未知风险。在 AI 时代,这个原则的内涵又增加了一层:对抗 AI 带来的“虚假能力”和“虚假自信”。
如今的坏代码,往往伪装得很好。它不再是语法混乱、逻辑不通,而是看起来结构优美、注释齐全,却在你看不到的地方暗藏杀机。
所以,最终的建议依然朴素:用你精通的技术去解决问题,用专注的学习去掌握新技术。
在一个 AI 能为任何领域滔滔不绝生成代码的世界里,你通过实践和思考建立起来的、深刻的个人理解,才是你最无法被替代的价值,也是你最坚固的职业护城河。
951

被折叠的 条评论
为什么被折叠?



