上周面试一个候选人,四年经验,简历写得漂亮:精通 React、熟练 TypeScript、参与过多个大型项目。我出了一道很基础的题:手写一个快速排序。他愣了十秒。白板上写了两行,停了。然后抬头看着我说:"不好意思,我平时都让 AI 写这种东西。"
面试结束后我没有笑他。因为那一刻我脑子里跳出的第一个念头是:如果现在关掉 Claude Code,我自己还能独立写出来吗?
我用 AI 编程已经半年了。每天至少 8 小时跟 Claude 对话,代码产出翻了 3 倍,项目进度快了一倍。但在那 10 秒钟里,我突然不确定——AI 给我的速度,是不是正在吃掉我的基本功?
这个问题,我决定用一个实验来回答。
AI 创业 100 天 · 第十一篇
- 01 关掉 AI 写了一天代码,结果……
- 02 能力退化的 5 个征兆
- 03 AI 替代的和你需要的,不是一个东西
- 04 我的解法:AI 当教练,不当代笔
01 关掉 AI 写了一天代码,结果……
面试那天回到家,我做了一个决定:明天一整天,不开 Claude Code,不开 Copilot,不开任何 AI 辅助工具。纯手写。看看自己到底退化到什么程度。
我给自己列了一份任务清单,都是日常工作中会做的事情:
"无 AI 日"任务清单 · 2026.04.10
- 任务 1: 用 Python 写一个 JWT 鉴权中间件(FastAPI)
- 任务 2: 用 SwiftUI 写一个带下拉刷新的列表页
- 任务 3: 修一个线上 Bug——用户反馈的分页加载重复数据问题
- 任务 4: 写一段二叉树层序遍历(纯手写,不查文档)
- 任务 5: 给现有 Vue 项目加一个权限路由守卫
早上 9 点开始。打开 VS Code,关掉所有 AI 扩展,把 Claude Code 的终端窗口彻底退出。
第一个小时就崩了。
写 JWT 中间件。我知道流程:生成 token、验证 token、从 Header 拿 Bearer、decode 之后取 payload。但具体代码呢?PyJWT 的 encode 方法参数顺序是什么? 我记不清了。半年前这种东西闭着眼睛写,现在打开了官方文档翻了五分钟。
SwiftUI 的列表页更惨。refreshable 修饰符的位置我放错了三次。 ScrollView 套 LazyVStack?还是直接 List?NavigationStack 里面怎么嵌套?每个问题我都得停下来想,有时候想不起来就去 Apple Developer 文档里翻。以前这些问题的答案都是 Claude 直接给我的——我只要说"写一个带下拉刷新的列表",5 秒出代码。
到了下午,修那个分页重复数据的 Bug。这是最让我害怕的部分。以前我会把错误日志和代码扔给 Claude,它 30 秒定位到 offset 计算逻辑的问题。现在我得自己看——一行一行断点,一步一步追。花了两个小时。
一天结束,五个任务只完成了三个半。按正常有 AI 的状态,这五个任务我上午就能搞定。
效率掉了大概 70%。但最让我害怕的不是效率——而是我发现自己在很多"本应该会"的地方卡住了。那种感觉就像一个每天开自动挡的老司机,突然被扔了一辆手动挡,不是不会开,是肌肉记忆没了。
那天晚上我坐在电脑前,把这一天的感受写成了一份清单。我想搞清楚:到底退化了什么?还保留了什么?
你也试试:关掉 AI 你还能正常写代码吗?
- A. 完全没问题,AI 只是提速工具
- B. 效率掉一半,但核心能做
- C. 基本写不动,离了 AI 不会写
- D. 没试过,不知道
我先说:我大概在 B 和 C 之间。能写,但在很多细节上卡得很痛苦。
02 能力退化的 5 个征兆
那天晚上复盘,我把所有"卡住"的地方做了分类。归纳出来五个最明显的退化征兆。如果你重度使用 AI 编程超过三个月,我建议你对照看看——中三个以上,说明你已经在退化了。
征兆一:记不住 API
半年前我闭眼能写 jwt.encode(payload, secret, algorithm="HS256")。现在?参数顺序混了,algorithm 的拼写都犹豫了三秒。不止这一个——SwiftUI 的 .task 和 .onAppear 区别、Vue 的 watchEffect 和 watch 的差异、SQLAlchemy 的 session.execute 参数,这些以前刻在肌肉记忆里的东西,全模糊了。因为半年来,它们都是 Claude 替我写的。
征兆二:写不出算法
二叉树层序遍历,数据结构课的基础题。我知道要用队列,知道每层一个循环。但写出来的代码——边界条件漏了、队列初始化写错了、层级计数的逻辑反了。Debug 了 20 分钟才跑通。放在半年前,这种题 5 分钟。不是智力下降了,是那根"手动推演"的弦松了。
征兆三:不会调试了
这是最危险的一条。以前排查 Bug 的路径很清晰:看报错 → 加断点 → 看调用栈 → 缩小范围 → 定位原因。现在呢?我的第一反应是"把报错贴给 Claude"。没有 AI 的那天下午,我盯着一个 IndexError 看了十分钟,才想起来可以用 pdb 设断点。调试能力不是没有了,是反应链路变慢了。
征兆四:依赖 Tab 补全到无法自拔
这一条很隐蔽。关掉 AI 之后,我发现自己每写三四个字符就会下意识按 Tab——等着补全出现。没有补全,手指就停了。不是不会往下写,而是大脑习惯了"等候选项出来再选"这种模式。写代码变成了"做选择题",而不是"写作文"。
征兆五:失去代码审美
这一条最致命,但最不容易察觉。AI 生成的代码"能用",但往往不够优雅——变量命名随意、函数职责不单一、抽象层次混乱。以前我会重构,会追求"漂亮的代码"。现在?"能跑就行,反正下次改的时候 AI 也能改。" 这种心态,正在杀死代码品味。
⚠️ 你是不是也有类似的感觉?明明半年前信手拈来的东西,现在脑子里只剩个模糊的轮廓。不是忘了,是"不需要记了"。而当"不需要记"积累到一定程度,就变成了"不会了"。
五个征兆,我中了四个。唯一没退化的是第五条——因为我的 CLAUDE.md 里有强制代码审美的铁律,每次 AI 产出代码我都会 review。但前四条,全中。
说到这儿,你可能已经开始焦虑了。但先别急着戒 AI。因为接下来我要说的事情,会改变你对"退化"这个词的理解。
你觉得 AI 编程最大的隐患是?
- A. 能力退化,基本功没了
- B. 代码质量下降,能跑就行
- C. 安全风险,AI 写的代码谁兜底
- D. 没什么隐患,工具就该用工具
我觉得 A 和 B 是连锁反应。能力退化导致你没法判断 AI 写得好不好,然后代码质量就跟着滑坡。
03 AI 替代的和你需要的,不是一个东西
做完实验之后,我没有立刻得出"必须戒 AI"的结论。相反,我开始想另一个问题:退化的那些能力,真的是我的核心竞争力吗?
想清楚这件事,花了我三天。
我把程序员的能力分成了两层:
表层能力(AI 可替代)
记 API 签名、写 CRUD、实现常见算法、写样板代码、格式化代码、做语法转换、查文档找用法。这些能力的本质是**"信息检索 + 模式匹配"**——恰好是 LLM 最擅长的事。
深层能力(AI 难替代)
系统架构设计、需求理解与拆解、技术选型判断、性能瓶颈分析、代码 review 的直觉、跨团队沟通的翻译能力、"这个方案三个月后会不会埋坑"的预判力。这些能力的本质是**"经验 + 判断 + 上下文理解"**——目前的 AI 做不到。
回头看那五个退化征兆:记不住 API——表层。写不出算法——表层。不会调试——介于表层和深层之间。依赖 Tab 补全——表层。失去代码审美——深层。
也就是说,我退化的主要是表层能力,而深层能力其实一直在用——只不过换了一种形式。
举个例子。以前我花 2 小时手写一个权限系统的路由守卫。现在我花 10 分钟跟 Claude 描述清楚需求:"支持角色 + 权限粒度双层校验、未登录跳转 /login、无权限显示 403 页面、白名单路由不校验。" Claude 5 分钟出代码,我花 15 分钟 review、改命名、加注释、调边界。
总耗时 30 分钟 vs 2 小时。但这 30 分钟里,我的需求拆解能力、架构设计能力、代码审查能力一个没少用。少用的是什么?手写 for 循环的能力。
AI 时代的程序员竞争力,不是"能不能手写快排",而是"能不能在 AI 写错的时候看出来,并且知道怎么改"。
这就像计算器普及之后,你不需要手算三位数乘法了。但你得知道什么时候该用乘法、什么时候该用指数、什么时候结果明显不对。运算能力可以外包,数学直觉不能。
但话说回来——我不觉得表层能力就可以完全放弃。原因有三个:
第一,AI 会出错。 如果你完全不懂底层实现,你连 AI 的错误都发现不了。我见过 Claude 写的 JWT 中间件把 exp 时间戳从秒写成毫秒——线上 token 永远不过期。如果你不记得 exp 应该是 Unix 时间戳(秒),你就会直接部署。
第二,面试还在考。 现实就是这样。不管你觉得合不合理,大厂面试还在手撕算法,还在问你 HashMap 的底层实现。你可以吐槽这个制度过时了,但你改变不了它。在制度改变之前,基本功就是求职的入场券。
第三,调试需要底层认知。 "不会调试"这条退化,其实是最需要警惕的。调试不是表层能力——它是表层知识(API行为、内存模型、并发机制)和深层能力(逻辑推理、假设验证)的交叉点。调试能力退化,意味着你正在失去从表层通往深层的桥梁。
AI 编程能力退化的三层模型(值得截图保存)
- ✅ 可以放心退化: API 记忆、样板代码、语法细节
- ⚠️ 需要刻意保持: 算法思维、调试方法论、代码审美
- 🚫 绝不能退化: 架构设计、需求拆解、技术判断力
04 我的解法:AI 当教练,不当代笔
想通了之后,我给自己定了三条规矩。执行了一个月,效果比预期好很多。
规矩一:每周一天"无 AI 日"
每周三是我的无 AI 日。不开 Claude Code,不开 Copilot,只有 VS Code + 官方文档。这一天我会刻意安排需要"手感"的任务:写算法、修复疑难 Bug、做一些需要从零搭建的小功能。
第一周很痛苦,效率大概只有平时的 30%。第二周好了一些,40%。到第四周,稳定在 55% 左右。不是完全恢复——但"手感"回来了。 该记住的 API 不查文档也能写对了,断点调试的条件反射也回来了。
有人会说:这不是浪费生产力吗?一周少产出一天。但我的看法是:这一天买的不是产出,是保险。 如果有一天 AI 服务宕机了、API Key 过期了、公司禁用 AI 工具了——你还能正常干活。这就是那一天的价值。
规矩二:深度阅读源码,每周至少 2 小时
不是泛泛地看——是带着问题看。比如上周我在用 Pydantic V2,遇到一个奇怪的序列化行为。以前我会直接问 Claude "为什么 model_dump 的结果跟预期不一样",拿到答案就继续干。
现在我改了。我会去 Pydantic 的 GitHub 仓库,从 model_dump 的实现一路追到 _core_schema 的序列化逻辑。看的过程本身就是训练——训练你理解一个成熟项目是怎么设计的、异常是怎么处理的、边界条件是怎么覆盖的。这些东西 AI 教不了你,因为 AI 只能给你"结果",不能给你"过程中的直觉"。
另外一个额外收获:读源码会让你 review AI 代码的能力暴增。你见过好代码长什么样,就能一眼看出 AI 生成的代码差在哪。
规矩三:用 AI 当教练,不当代笔
这条是核心。改变跟 AI 对话的方式,就能把"让 AI 代劳"变成"让 AI 教我"。
代笔模式(让 AI 写)
"帮我写一个 WebSocket 心跳检测。" → AI 直接给你完整代码,你 copy 进去,能跑就完事。 → 你学到了什么?Nothing。
教练模式(让 AI 教)
"我想实现 WebSocket 心跳检测。我的思路是:客户端每 30 秒发 ping,服务端回 pong,超过 3 次没收到 pong 就断开重连。这个方案有什么问题?" → AI 会指出你没考虑的边界:网络切换时的重连抖动、ping 和业务消息的竞争、浏览器 Tab 后台时 setInterval 的节流。 → 你不仅拿到了方案,还理解了为什么这么做。
教练模式的关键是:先想,再问。 你得先有自己的方案——哪怕是错的、不完整的——然后让 AI 来 review 你的方案。这个过程中,你的思考力在运转,AI 只是补盲区。
当然,我不是说所有场景都要用教练模式。重复性高的工作(CRUD、样板代码、格式转换),直接让 AI 代笔就行,没必要浪费脑力。 但涉及架构设计、复杂业务逻辑、你从没接触过的技术栈时,教练模式比代笔模式有价值一百倍。
用 AI 当代笔,你会越来越快。用 AI 当教练,你会越来越强。最好的做法是两者切换使用——赶工时当代笔,学习时当教练。
一个月下来,这三条规矩带来的变化超出了我的预期。无 AI 日的效率从 30% 回升到 55%。更重要的是,有 AI 的日子里,我 review 代码的速度和准确度都提升了——因为基本功回来了,我能更快地判断 AI 的产出质量。
这就像健身。你可以坐电梯,但每天至少走一次楼梯。不是为了证明什么,是为了保证腿还能走。
⚠️ 说到底,AI 编程不是让你变弱的——是让你有机会把精力集中到更值钱的事上。但前提是你得有意识地保持底层能力。无意识地依赖,才是真正的退化。
AI 编程者的"反退化"行动清单(值得截图保存)
- 每周安排一天"无 AI 日",刻意练习手写代码
- 每周至少 2 小时深度阅读开源项目源码
- 遇到新问题先自己想方案,再让 AI review
- 保持调试习惯——不要把所有报错都丢给 AI
- 定期做能力退化自测(用本文的 5 个征兆对照)
- CRUD 和样板代码交给 AI,架构和设计自己做
- 写 CLAUDE.md / .cursorrules 强制代码审美标准
写在最后
回到文章开头那个面试场景。
那个候选人后来我没有录用。不是因为他写不出快排——说实话,快排这种东西在实际工作中你调一次 sorted() 就完了。而是因为他在被要求独立思考的时候,表现出了一种无助。他不是不会写,是不敢写。离开 AI 之后,他失去的不只是代码能力,还有独立解决问题的信心。
这才是 AI 编程最隐蔽的代价:不是让你变笨,是让你变怂。
我不想变成那样。所以每周三,我会关掉 Claude Code,打开一个空白的编辑器。不是为了证明自己还行,是为了提醒自己:工具是我的延伸,不是我的替代。
用了半年 AI 编程,我的手写代码能力确实退化了。但我的架构能力、需求拆解能力、代码审查能力——比半年前更强了。退化的部分,我正在有意识地修复。增强的部分,才是我真正的竞争力。
最好的程序员,不是不用 AI 的那个,也不是完全依赖 AI 的那个——是知道什么时候该开 AI、什么时候该关 AI 的那个。
你会尝试"无 AI 日"吗?
- A. 已经在做了,深有体会
- B. 值得试试,这周就开始
- C. 没必要,AI 就是该用的工具
- D. 不敢关,怕发现自己真不行
选 D 的人——其实你最需要试一次。
AI 创业 100 天 · 系列索引
- 第一篇 提示词工程与上下文工程
- 第二篇 别再装 Skill 了
- 第三篇 我给 AI 接了 17 个 MCP
- 第四篇 Opus 4.7 + Routines 接了 231 个工具
- 第五篇 我卸了 Cursor,代码产出反而翻了 3 倍
- 第十一篇 用了半年 AI 编程,我的手写代码能力退化了多少?(本篇)
- 下一篇 预告:AI 创业的 6 个月复盘——钱赚到了吗?