现在用 AI 写代码太容易了。
你把报错贴进去,模型给你一段修复方案。
你把需求贴进去,模型给你一个组件。
你把接口文档贴进去,模型给你一套调用代码。
问题解决了,任务关闭了,进度推进了。
但有一个更隐蔽的问题也出现了:
代码变多了,
你的理解却没有同步增长。
这才是 AI 编程真正容易被忽略的风险。
不是 AI 会不会替你写代码,而是你会不会在它替你写代码的过程中,把学习也一起外包出去了。
一、AI 解决了问题,但不一定提升了你
很多工程师现在已经进入一个默认工作流:
遇到问题
复制报错
丢给 AI
拿到答案
修改代码
测试通过
继续下一个任务
这个流程非常高效。
但它有一个问题:中间最重要的那段思考被跳过了。
过去你需要自己读报错、查文档、翻源码、做实验、排除假设。这个过程很慢,也很痛苦,但正是在这个过程中,你建立了系统理解。
现在 AI 直接把答案递给你。
你当然更快。
但如果每一次都是这样,你得到的是交付速度,不一定是能力增长。
更准确地说:
Bug 被修了,
但你的心智模型没有升级。
这就是很多人正在积累的“认知债务”。
短期看,它让你更轻松。
长期看,它会让你越来越依赖 AI,直到有一天你发现:没有 AI 在旁边,你已经很难独立判断一个系统到底哪里出了问题。
二、工具默认服务于交付,不服务于成长
今天的大多数 AI 编程工具,默认目标都很明确:
更快完成任务
更快生成代码
更快合并变更
更快关闭 issue
这没有错。
工具公司要优化的是效率,团队管理者要看的也是交付。
但学习不是默认结果。
没有哪个工具会强制问你:
你认为问题根因是什么?
你能不能先自己写一个版本?
你理解这个方案的 tradeoff 吗?
如果这个方案在线上挂了,你会怎么排查?
它们更倾向于直接给你答案。
因为更少的摩擦,意味着更好的产品体验。
但对工程师来说,问题恰恰在这里:
很多能力,正是在摩擦里长出来的。
调试时的反复假设、读源码时的上下文拼接、方案设计时的权衡比较、线上问题里的压迫感,这些东西都很难受,但它们塑造了真正的工程能力。
如果 AI 把所有摩擦都磨平,你也要有意识地把一部分学习摩擦留给自己。
三、AI 越强,你越要学习
很多人会问:
既然 AI 都会了,我为什么还要学?
这个问题表面合理,实际危险。
因为 AI 能做,不代表你可以不懂。
尤其在真实工程里,真正决定质量的不是“能不能生成一段代码”,而是:
你是否理解系统架构 你是否知道边界条件 你是否能判断方案优劣 你是否能识别模型胡说 你是否能定位线上问题 你是否知道什么时候不能照着 AI 做
AI 大模型能力越强,你越要学习。
原因很简单:
不懂原理、架构、实现和逻辑,
你只会被 AI 牵着鼻子走。
你懂原理、架构、实现和逻辑,
你才可以牵着 AI 走。
还是那句话:
人的能力可以决定 AI 上限。
同一个模型,在不同人手里,产出完全不一样。
新手拿它当答案机器。
高手拿它当研究员、审稿人、代码生成器、测试助手、反方辩手和重构搭档。
差距不在模型,而在使用者的知识密度。
四、真正危险的是“看起来会了”
AI 最大的迷惑性在于,它能让你很快得到一个“看起来对”的结果。
页面能跑。
接口通了。
测试过了。
代码也不像乱写。
于是你会产生一种错觉:
我掌握了。
但真正的掌握,不是你能让 AI 生成代码,而是你能回答这些问题:
为什么这样设计? 有没有更简单的方案? 这里的状态为什么这样流转? 这个依赖是否必要? 出错时日志在哪里? 这个实现能不能承受更大流量? 安全边界在哪里? 换一个框架还能不能做出来?
如果这些问题答不上来,那你只是“使用过”,不是“理解了”。
AI 会让使用门槛下降,但不会自动让理解门槛下降。
相反,越是强大的工具,越需要更强的判断力来驾驭。
五、哪些东西可以放心交给 AI
这并不是说所有东西都必须自己手写。
有些任务完全可以交给 AI:
样板代码 临时脚本 重复性格式转换 简单文案 一次性工具函数 低风险 glue code 已经非常熟悉的 CRUD
这些任务的学习价值有限,过度手写反而浪费时间。
AI 的价值之一,就是帮你从低价值重复劳动里解放出来。
但前提是你要分得清:
哪些是可以委托的体力活,
哪些是必须亲自理解的核心能力。
如果是一次性脚本,交给 AI 没问题。
如果是核心链路、架构边界、状态模型、安全逻辑、性能瓶颈、数据一致性,就不能只看 AI 给出的结果。
这些地方必须理解。
因为最后负责的人不是模型,而是你。
六、纯粹把学习外包,会在几个场景里反噬
第一,系统出问题时。
AI 写的代码也会崩。线上报警、数据异常、性能抖动、权限绕过,不会因为“代码是 AI 写的”就自动变简单。
真正排查问题时,你需要理解系统,而不是只会重新提问。
第二,模型一本正经地错时。
大模型最危险的地方不是不知道,而是它会把错误答案说得很像真的。
如果你没有基础知识,就很难识别:
这里是不是绕远了
这里是不是误用了 API
这里是不是破坏了边界
这里是不是引入了安全风险
第三,进入非标准问题时。
AI 很擅长处理大量公开资料里反复出现的问题。
但越往复杂业务、历史包袱、私有系统、未文档化场景走,模型越依赖你的上下文和判断。
第四,技术基础变化时。
框架升级、安全审计、架构迁移、数据库拆分、性能重构,这些不是一句提示词就能解决的事情。
你必须知道系统为什么长成这样,才能判断下一步怎么改。
第五,职业市场重新定价时。
如果一个工程师只会在 AI 旁边交付,一旦大家都能用 AI,优势就会被迅速抹平。
真正值钱的会变成:
能定义问题的人
能判断方案的人
能拆解系统的人
能发现 AI 错误的人
能把 AI 组织进工程流程的人
这些能力都来自长期学习,而不是复制粘贴。
七、正确用 AI 学习,不是少用 AI
解决办法不是回到不用 AI 的时代。
那不现实,也没必要。
真正有效的方式,是改变使用姿势。
1. 先写自己的判断,再问 AI
遇到问题时,不要第一秒就把报错丢给模型。
先写两三句话:
我认为问题可能出在这里
原因是这些现象
我准备先验证这个假设
然后再让 AI 分析。
这样 AI 的回答是在校准你的判断,而不是直接替代你的判断。
2. 先要解释,再要代码
在陌生领域,不要一上来就说“帮我实现”。
更好的问题是:
先解释这个机制怎么工作
有哪些常见方案
各自有什么取舍
这里最容易踩什么坑
理解框架之后,再让它生成代码。
否则你拿到的是结果,不是能力。
3. 把 AI 输出当成 PR,而不是答案
AI 写出来的代码,不应该默认合并。
你要像 review 初级工程师代码一样看它:
命名是否合理 边界是否清晰 依赖是否必要 异常是否处理 测试是否覆盖 有没有更简单方案 会不会破坏现有架构
这一步不能省。
因为 review AI,其实也是在训练你自己的判断力。
4. 偶尔手写一遍
对关键代码,可以让 AI 先写。
但你最好隔一段时间自己重写一遍。
这不是为了证明你比 AI 强,而是为了校准:
我到底理解了多少?
如果没有 AI,我还能不能做出来?
这个检查很重要。
它能暴露你正在流失的能力。
5. 让 AI 反过来教你
AI 写完一段代码后,不要只问“能不能优化”。
可以继续问:
这段代码用了哪些概念?
为什么这样拆分?
有没有其他实现方式?
如果我要完全理解它,需要补哪些知识?
如果让我面试解释这段代码,该怎么讲?
多问这几个问题,你得到的就不只是代码,而是一套学习路径。
八、交付和学习,是两个指标
很多团队只看一个指标:
今天关了几个 issue
这个需求什么时候上线
这个版本有没有按时发
这些当然重要。
但对个人职业成长来说,还有另一个指标:
今天我有没有学到什么?
我有没有理解一个新机制?
我有没有修正一个错误认知?
我有没有掌握一个以后能复用的判断模型?
短期看,只交付不学习也能跑。
长期看,这会把你变成一个越来越依赖工具的人。
更健康的状态是:
用 AI 提高交付效率,
用 AI 反向加速学习。
你不需要每一天都深度学习。
但如果连续几个月都只是“关闭任务”,没有任何理解增长,那就要警惕。
这说明认知债务已经在后台累积。
九、AI 时代,工程师的护城河变了
过去工程师的护城河,可能是:
会写某个框架 熟悉某门语言 记得很多 API 能快速手写模板代码
这些能力仍然有价值,但会被 AI 压缩。
新的护城河会更偏向:
系统理解 架构判断 抽象能力 调试能力 安全意识 业务建模 质量控制 工具编排 反馈回路设计
也就是说,工程师的价值不是下降了,而是上移了。
你越懂底层,越能让 AI 做高价值工作。
你越不懂底层,越只能接受 AI 给你的默认答案。
这就是为什么:
AI 越强,学习越重要。
因为强模型会让浅层技能更快贬值,也会让深层能力获得更大杠杆。
十、最后总结
AI 编程不是问题。
问题是把 AI 当成逃避学习的借口。
真正值得警惕的不是:
AI 写了多少代码
而是:
你在这次协作里有没有变强
如果 AI 帮你解决问题,同时也帮你建立理解,它就是放大器。
如果 AI 只是帮你关闭任务,却让你越来越不愿意思考,它就是认知债务制造机。
所以不要把学习外包给 AI。
你可以把重复劳动交给 AI,可以把初稿交给 AI,可以把搜索和整理交给 AI,但不能把判断力、理解力和系统感交出去。
一句话总结:
AI 大模型能力越强,你越要学习。因为不懂,你只能被 AI 牵着鼻子走;你懂,你才可以牵着 AI 走。人的能力,决定 AI 的上限。
原文信息
原文作者:Addy Osmani 原文主题:不要将学习外包给 AI 原文链接:https://x.com/addyosmani/status/2056078124346228860
夜雨聆风