我用AI写了半年代码——回头看,这5个能力正在退化
从年初开始,我几乎每天都在用 Claude Code 或 Cursor 写代码。效率确实高了不少 —— 以前要写半天的 CRUD 页面,现在二十分钟搞定。
但最近发生了一件事让我警觉:同事问我一个Promise.allSettled和Promise.all的区别,我张了张嘴,发现自己需要 "想一下" 才能回答。这个问题两年前我能脱口而出。
不是我变笨了。是我把这块肌肉交给 AI 练了半年,它萎缩了。
Anthropic 最近的一项研究给了一个具体数字:重度依赖 AI 编程工具的开发者,独立调试和代码阅读能力比手动编码组低 17 个百分点。美国心理学会今年的报告也指出,过度依赖生成式 AI 会降低批判性思维和岗位专项技能。 The Register 上甚至出现了一个新词叫 "AI Atrophy"——AI 导致的技能萎缩。 我花了一个周末盘点了自己的变化。以下 5 个退化最明显。
1. Debug 能力:遇到 bug 第一反应变了
以前遇到 bug,我的流程是:看报错信息→定位文件→打断点→看调用栈→找到原因。 现在呢?遇到红色波浪线,第一反应是把报错复制给 AI。
▼text复制代码// 代码解读 // 以前:我会看这个报错,思考为什么 // Type 'string | undefined' is not assignable to type 'string' // → 哦,可能是可选链返回了undefined,需要给默认值 // 现在:直接丢给AI // "帮我修这个TypeScript报错" // AI秒回:加个 ?? '' 就行 // 我:哦好,下一个
问题不在于 AI 给的答案对不对 —— 大部分时候是对的。问题在于我跳过了 "理解为什么出错" 这一步。 连续半年跳过这一步,你对类型系统的心智模型就变得模糊了。以前能凭直觉判断 "这里可能有空值",现在要等 TypeScript 报错了才知道。
自测方法: 下次遇到 TypeScript 报错,先不问 AI,自己读完报错信息。如果你发现自己读不懂了 —— 那就是退化的信号。
2. 代码阅读能力:看别人的代码变吃力了
以前 review 同事的 PR,我会逐行看逻辑、想边界情况、考虑性能。
现在呢?打开一个 200 行的组件,第一反应是让 AI 帮我总结。
▼//复制代码// 以前review这段代码,我会注意到问题 function useDebounce(value, delay) { const [debouncedValue, setDebouncedValue] = useState(value); useEffect(() => { const timer = setTimeout(() => { setDebouncedValue(value); }, delay); return () => clearTimeout(timer); }, [value, delay]); return debouncedValue; } // 问题:delay变化时会重置timer,可能导致永远不触发 // 以前我一眼能看出这个问题 // 现在我需要"想一下"才能想到
Anthropic 研究里那个 "代码阅读能力低 17%" 就是这个意思。不是看不懂语法,是看代码时主动思考的密度降低了。
你习惯了让 AI 总结代码、解释逻辑,自己的 "阅读肌肉" 就在萎缩。就像天天打车的人,突然发现自己不记得路了。
自测方法: 找一个你没参与的开源项目,随便打开一个核心模块,看 15 分钟。如果你发现自己频繁想 "好复杂,让 AI 解释一下"—— 那就是退化的信号。
3. 从零搭建能力:离了模板不会开始
现在让你不用create-next-app、不用 AI、从一个空文件夹开始搭一个 React 项目 —— 你能搞定吗?
▼text复制代码# 代码解读 # 你还记得从零开始需要什么吗? mkdir my-app && cd my-app npm init -y npm create vite@latest my-vite-app # 然后选择react项目 # 紧接着选择是使用react + ts + vite 还是react + js + vite # 然后操作一下命令 # 然后 安装依赖 # 然后执行运行 # 然后呢? # 你还记得吗?
我发现自己不记得了。以前这些我闭着眼都能写,现在需要查文档。
不是说你每次都要手搭 —— 脚手架工具存在就是为了省时间。但知道底层是怎么运作的 和不知道 是两码事。
当你的create-next-app出了奇怪的构建错误时,知道底层原理的人能定位问题,不知道的人只能问 AI 碰运气。
自测方法: 试着不用任何脚手架,手搭一个最小的 React 开发环境。如果你发现自己连vite.js的基本结构都要查 —— 那就是退化的信号。
4. API 记忆:常用方法都要问 AI 了
▼//复制代码// 这些你还能不查就写出来吗? // 数组去重 [...new Set(arr)] // 还是 Array.from(new Set(arr))?都行 // 深拷贝 structuredClone(obj) // 你还记得这个API吗?还是会写JSON.parse(JSON.stringify())? // 日期格式化 new Intl.DateTimeFormat('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' }).format(date) // 还是直接问AI? // URL参数解析 const params = new URLSearchParams(window.location.search) params.get('id') // 你还记得URLSearchParams吗? // 数组分组(ES2024) Object.groupBy(items, item => item.category) // 这个你知道吗?
这不是记忆力的问题。是你不再需要记这些了 —— 问 AI 比翻 MDN 快十倍。但代价是:你对 JavaScript 标准库的掌握从 "信手拈来" 变成了 "知道有这么个东西但要查"。
写代码时的流畅感没了。以前写代码像说话一样自然,现在像在翻译 —— 你知道要做什么,但需要 AI 帮你 "翻译" 成具体的 API 调用。
自测方法: 打开一个空文件,不查任何东西,写一个函数:接受一个 URL 字符串,返回所有查询参数的对象。如果你卡在 URLSearchParams 的用法上 —— 那就是退化的信号。
5. 方案设计能力:不再自己想架构了
这个最隐蔽,也最危险。
以前遇到一个新需求,我会先在脑子里过一遍:这个功能的数据流是什么样?状态放哪?组件怎么拆?要不要用 Context 还是状态管理库?
现在呢?直接告诉 AI 需求,让它出方案。
AI 出的方案不一定差。但你跳过了 "思考为什么这样做" 的过程。下次遇到类似需求时,你还是不知道应该用 cursor 分页还是 offset 分页,还是需要问 AI。
技术方案设计能力不像写代码 —— 它需要不断在真实场景中做判断、犯错、修正,才能建立起直觉。把这个过程交给 AI,你的 "技术直觉" 就停止生长了。
自测方法: 试着在纸上(不看任何东西)画出你现在项目的前端架构图 —— 数据流、状态管理、API 调用层、组件层级。如果你画不出来 —— 不是因为架构复杂,而是你没有真正思考过它。
能力退化自测清单
| 能力 | 退化信号 | 自测方法 |
|---|---|---|
| Debug | 遇到报错先问AI不看信息 | 下次报错先自己读完再说 |
| 代码阅读 | 看PR想"让AI总结一下" | 看一个开源项目核心模块15分钟 |
| 从零搭建 | 离了脚手架不知道怎么开始 | 手搭一个最小React开发环境 |
| API记忆 | 常用方法要先问AI | 不查东西写一个URL参数解析函数 |
| 方案设计 | 需求来了直接丢给AI | 纸上画出当前项目的架构图 |
不是要你戒掉 AI
说清楚:我不是说 AI 不该用。这半年 AI 帮我省了无数时间,这是事实。
我想说的是:AI 是外骨骼,不是替代器官。
你穿上外骨骼能举起 200 公斤,但你自己的肌肉至少要能举起 40 公斤。否则有一天外骨骼出故障 —— 断网、API 挂了、或者你需要在一个不能用 AI 的环境里写代码 —— 你就废了。
上个月海外 AI 编程工具大规模封禁国内账号的事还历历在目。那些完全依赖 AI 的开发者,突然发现自己 "不会写代码了"。
每周花 2 小时不开 AI 写代码。 不需要多。就像健身不需要每天去,但需要保持频率。保持你的 "编程肌肉" 不萎缩。
你用 AI 写代码多久了?有没有发现类似的退化?
