首页 > 面试资料 博客日记

AI编程一年后,我还记得怎么手写代码吗?答案让我沉默了

2026-04-09 17:00:03面试资料围观1

这篇文章介绍了AI编程一年后,我还记得怎么手写代码吗?答案让我沉默了,分享给大家做个参考,收藏极客资料网收获更多编程知识

上周,团队来了一个实习生。

第一天熟悉环境,他坐在我旁边看我写代码。

看了一会儿,他问我:

"老师,你平时不用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实验室 不讲概念,只谈实战 代码开源,每周更新

image

 


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

标签:

相关文章

本站推荐

标签云