首页 > 面试资料 博客日记
AI编程一年后,我还记得怎么手写代码吗?答案让我沉默了
2026-04-09 17:00:03面试资料围观1次
上周,团队来了一个实习生。
第一天熟悉环境,他坐在我旁边看我写代码。
看了一会儿,他问我:
"老师,你平时不用AI的话,能写多快?"
我当时很自然地回了他一句:"当然能写,我写了12年代码。"
然后他问了第二句:
"那你上次不用AI手写代码,是什么时候?"
我愣了一下。
认真想了想,想不起来了。
那天晚上,我做了一个决定:把Cursor关掉,Copilot也关掉,ChatGPT也关掉,用最原始的IDEA,手写两个小时代码,看看到底会发生什么。
一、测试规则
随便找个需求练练手,意义不大。我想要一个真实的对照。
于是我翻出了一年前写过的一个功能——用户标签系统。
逻辑不复杂:用户可以打多个标签,支持按标签查用户,标签可以批量导入,有优先级排序。当时纯手写,大概花了4小时。
这次的规则:
- 关掉所有AI工具,包括IDEA自带的AI插件
- 不查Stack Overflow,不查文档(API记不住就记不住)
- 可以用IDEA的基础补全,但不依赖它
- 全程计时,记录每次卡住的时间和原因
两小时,看能做到几成。
二、第一个小时:手感退化,但没到让我慌的程度
前20分钟,感觉还好。
核心的数据库表结构、实体类、Mapper接口,这些是肌肉记忆,脑子里还有。
@Data
@TableName("user_tag")
public class UserTag {
@TableId(type = IdType.AUTO)
private Long id;
private Long userId;
private String tagCode;
private Integer priority;
private LocalDateTime createTime;
}
这种东西,一年前会写,现在还会写。
但写到Service层,第一次卡住了。
我想用Stream做一个分组聚合,脑子里知道是Collectors.groupingBy,但后面那个参数怎么接,想了大概30秒才想起来。
// 卡在这里30秒
Map<Long, List<UserTag>> tagMap = userTags.stream()
.collect(Collectors.groupingBy(UserTag::getUserId));
30秒不算什么,但以前这行代码是不用停顿的,手直接就打出来了。
类似的停顿,第一个小时里出现了5次。
每次都不是因为不会,而是因为那个"手感"消失了。
就好像一个打字很快的人,突然要用一个月没摸过的键盘,知道字母在哪,但手速和肌肉反应跟不上。
这一层退化,我接受。
用进废退,很正常。一年没手写,手感生疏了,符合预期。
三、第二个小时:真正让我不安的事开始出现
第一个小时结束,我完成了大概40%,算正常节奏。
进入第二个小时,写到批量导入的逻辑,出现了一个我没预料到的情况。
我在方法体里写了几行逻辑,写完之后,突然停下来了。
不是因为卡住了。
是因为我不确定自己写的对不对,想——
让AI帮我看一眼。
这个念头出现的那一刻,我意识到了一些东西。
我按住了这个冲动,自己把逻辑重新过了一遍,确认没问题,继续往下写。
但接下来,这个念头又出现了两次。
两小时结束,我统计了一下数据:
完成度:约55%
卡住次数:11次
卡住原因:
API/方法名想不起来:5次
逻辑起点不确定,不知从哪里动手:3次
写完之后想"让AI验证一下":3次
前两类我能接受,最后那3次让我停下来想了很久。
不是写不出来,是写完之后不信任自己的判断。
这和手感退化是两回事。
手感退化是技能问题,练一练能回来。
不信任自己的判断,是心理依赖。
四、退化的到底是什么
两小时测试结束,我坐在那里复盘,发现退化的不是一件事,而是三件事,严重程度依次递增。
第一层:肌肉记忆退化(轻微)
API名字、方法签名、语法细节,这些记不住了。
这是正常现象,不用担心,一周刻意练习就能回来。
就像长期用计算器之后心算变慢,但不代表你不会算数。
第二层:起手式消失(值得注意)
这一层比手感更隐蔽。
以前写代码,习惯是:想清楚逻辑 → 动手写。
用了一年AI之后,习惯变成了:写个注释描述意图 → 等AI补全 → 我来改。
这是两种完全不同的思维模式。
关掉AI之后,我坐在空白的方法体前面,发现自己不知道从哪里开始了。不是不会写,是那个"主动构建逻辑"的起手式,被"描述意图,等待生成"替代了。
一旦没有了AI,这个起手式就得重新找回来。
第三层:自我验证能力的转移(需要警惕)
这是最严重的一层,也是最难察觉的。
写完一段逻辑,以前的第一反应是:跑一下单元测试,或者自己重新过一遍逻辑。
现在的第一反应是:让AI看一下。
这不只是习惯问题,是信任的转移。
我开始把"这段代码是不是对的"这个判断,从自己转移给了AI。
这一点长期累积下去,会在两个场景里暴露出来:白板面试、以及真正紧急的生产故障。
这两个场景有一个共同特点:没有AI,你只能靠自己。
五、一个让我更清醒的对比
测试结束后,我做了一件事:打开Cursor,把同样的任务重新做了一遍,计时。
结果:
有AI:1小时10分钟,完成度95%
无AI:2小时,完成度55%
差距比我预期的大。
但更让我在意的不是这个数字,而是两种状态下我脑子里的感受。
有AI的时候,我在想:这个需求怎么描述清楚,生成的代码哪里需要调整,有没有遗漏的边界。
没有AI的时候,我在想:这个方法名怎么拼,这个Stream能不能这么用,这段逻辑我写的到底对不对。
一个是设计者的状态,一个是执行者的状态。
AI让我长期保持在设计者的状态里——这是好事,效率高,产出质量也更好。
但代价是,执行者状态的肌肉,一年没练了。
六、我不打算"戒掉AI",但我改了3个习惯
看到这里,你可能以为我接下来要说"AI有害,要多手写代码"。
不是的。
AI工具我还在用,而且会一直用。效率摆在那里,没有理由放弃。
但那3次"想让AI验证一下"给了我一个信号:如果不刻意做一些事,这个依赖会越来越深,直到某天真正需要独立解决问题的时候,才发现自己已经不行了。
所以我改了3个习惯。
习惯1:每周一次"无AI时段"
每周选一个固定的2小时,完全关掉所有AI工具,手写代码。
不求快,不求完成多少,只求保持那个"从空白开始构建逻辑"的能力不生锈。
就像跑步不是每天都要跑马拉松,但如果一年不跑,你跑不动了。
习惯2:关键逻辑,先自己写,AI后验证
把顺序调回来。
以前是:AI生成 → 我来改。
现在是:我先写 → AI来review,找我遗漏的地方。
这个顺序调整,不影响最终效率,但能保持"我是主导"的状态,而不是"AI是主导"。
习惯3:写完代码,先自己过一遍再开口问AI
这针对的就是那3次"想让AI验证"。
不是不能让AI看,而是先自己逼自己把逻辑重新梳理一遍,再让AI找补充。
这是在重建自我验证的肌肉,而不是把这个判断永久外包出去。
写在最后
回到那个实习生的问题:你上次不用AI手写代码,是什么时候?
我现在有了答案——就在上周。
结果是,两小时完成了55%,卡了11次,写完代码的第一反应是想让AI看一眼。
这不是灾难。
但这是一个信号,信号说:有一些能力,在你没有察觉的时候,正在悄悄变弱。
AI让写代码变快了,但"会写代码"和"离开AI也能写代码",正在悄悄分开。
我不想等到真正需要的那一天,才发现自己已经不行了。
那个实习生现在每天都在用Cursor。
我没有阻止他。
但我告诉他:
工具用得越顺手,越要偶尔关掉它,确认自己还是那个会用工具的人,而不是没了工具就不会干活的人。
他想了一下,说:"那就像开惯了导航,也要偶尔认路?"
我说对。
你有没有试过关掉AI,看看自己还能写多快?
欢迎评论区聊聊。
后端AI实验室 不讲概念,只谈实战 代码开源,每周更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:

