AI 未简化开发,反而加剧难点
深度反思 AI 工具在实战中的真实影响,指出系统设计、集成、维护复杂度因 AI 使用而加重。对开发者理性评估工具带来的隐成本具有重要意义。
深度反思 AI 工具在实战中的真实影响,指出系统设计、集成、维护复杂度因 AI 使用而加重。对开发者理性评估工具带来的隐成本具有重要意义。
当我开始在我的副项目中认真使用 AI 工具时,我期待工作会变得更简单。AI 处理样板代码,我专注于有趣的部分。这是承诺。
但它并没有变简单。有趣的部分变得更难了,频率更高了,也更让人筋疲力尽了。
我不是唯一有这种感受的人。一位谷歌的 Staff Engineer 最近因为离职而引起广泛关注 —— 不是因为薪酬,不是因为福利,而是因为工作变得仓促且意义不大。AI 被推入了它不应该去的地方。他在凌晨 2 点被电话呼叫。他写道:"我不想只是成为别人的执行工具。"
如果这种事情发生在谷歌 —— 全球技术能力最强的公司之一 —— 那就值得追问 AI 究竟在对软件工程做什么。不是在新闻稿里,而是在实际工作中。
我认为真正发生的事情是这样的。
在软件工程的大部分历史中,这份工作大致分解为:
80% —— 执行工作
编写样板代码
修复重复出现的 bug
推进任务进展和更新文档
设置配置和环境
为已知行为编写测试
20% —— 深度思考
理解真正的问题
在约束下设计系统
调试没人预料到的边界情况
在信息不完整的情况下做出权衡
知道什么不应该构建
80% 是苦力工作。必要的,但可以学会的。20% 是经验真正发挥价值的地方 —— senior engineer 之所以获得这个头衔,不是因为他们打字更快,而是因为他们思考更清晰。
AI 吃掉了 80%。现在 20% 就是整个工作。
Claude Code、Cursor 和 GitHub Copilot 等工具在执行层上确实表现得极其出色。样板代码?消失了。标准 CRUD 端点?几秒钟就搞定。重复的测试?在你喝完咖啡之前就生成好了。
叙事是这样的:这太棒了。从无聊工作中解放出来的工程师可以专注于有趣的问题。
从某种意义上说,这是真的。但这里有一点没有人明说出来:
20% 之所以困难,正是因为它需要持续的、深度的专注。现在工程师被期待永久地生活在这里 —— 而人脑并不是为此而生的。
20% 变成了新的 80%。而且这种方式的疲惫完全不同于旧的 80% 曾经带来的疲惫。
写三个小时样板代码是乏味的 —— 但你的大脑会恢复。花三个小时设计分布式系统的失败模式、做架构权衡、调试一个只在特定负载下才出现的竞态条件 —— 这是一种不同的疲倦。而 AI 并没有减少你必须这样做的频率。它在增加频率。
AI 世界里一直在讨论上下文窗口。模型能保留多少 token?我们如何优化检索?我们如何确保模型在正确的时间获得正确的信息?
这是一个完全有效的工程问题。但有另一个上下文窗口没有人在谈论。
⚠️ 人类工程师的上下文窗口没有增长。它仍然是和以前一样的大脑 —— 现在却被期待容纳更多的架构复杂性、在更多不确定性下更快地做出决策、以及比以往更频繁地在系统间切换上下文。与模型不同的是,你不能只是升级到更长的上下文。你不能给你的前额叶皮层加更多内存。
那位谷歌工程师描述被在凌晨 2 点被呼叫,无法在凌晨 5-6 点前重新入睡的经历。这不是生产力问题。这是认知负荷问题。而且它正在成为常态,而不是例外。
我不是在理论上讲话。我每天都在我的五个副项目中使用这些工具。
生产力收益是真实的 —— 我交付产品的速度比以往任何时候都快。但认知负荷也比以往任何时候都高。我节省的每一小时执行时间都直接流向更难的思考。上周我花了整个下午在一个单一的架构决策上 —— 关于如何在我的单体仓库中处理五个产品间的共享状态。那个决策过去需要几天时间,因为围绕它的执行工作给了我天然的思考时间。现在执行是即时的 —— 而思考时间必须被刻意争取,否则根本不会发生。
我没有写更少的代码。我在做更多的决策。而决策才是昂贵的部分。
更胜以往地保护你的深度工作时间。当 AI 处理浅层工作时,浅层中断会成比例地造成更多伤害。一条原本让你浪费十分钟的 Slack 通知,现在会让你失去一个架构决策。我现在每天早上要保留两小时的时间,在打开任何与 AI 相关的东西之前。
学会舒适地说"我需要思考一下"。AI 使能的速度创造了更快决策的压力。抵抗它。把"让我好好想想这个问题"当作一个专业的回应,而不是速度缓慢的表现,这是当下最被低估的技能之一。
把认知恢复当作工作的一部分。旧的 80% 给了你的大脑天然的休息 —— 从深度思考切换到例行执行是伪装的恢复。那种休息消失了。故意以低风险的事情结束深度工作会话能带来真实的差异。
知道什么时候不应该使用 AI。有时候慢慢写代码正是帮你理解系统的方式。我曾经让 AI 为我的一个产品生成整个数据获取层。看起来很干净,通过了我的快速审查,我就发布了。三周后我碰到了一个缓存 bug 我无法调试 —— 因为我从未真正理解那一层是如何工作的。我花了两天修复一个如果我自己写的话只需要两小时的东西。理解债是真实存在的,而且它在最糟糕的时候出现。
那位谷歌工程师说工作变得仓促且意义不大。我不认为 AI 让它变得无意义 —— 但它使能的速度可以让它感觉如此,如果你不小心的话。
而我一直在回顾的问题是:剩下的那 20% —— 系统设计、权衡、在不确定性下调试、知道什么不应该构建 —— 这过去需要多年才能发展出来。Junior engineer 逐步地在建立它,基于 80% 执行工作给他们的基础之上。那个基础现在正在快速消失。
AI 不是在替代工程师。它在压缩工程师必须做的一切的时间线。它是礼物还是负担,完全取决于你如何刻意地管理剩下的部分。
你自从 AI 工具到来后发现工作更高压了,还是真的变简单了?而且你团队里的 junior engineer 发生了什么 —— 他们获得他们需要的基础了吗,还是在还没准备好的时候就被扔进了深水区?