一年后,我还能记得手写代码吗?这答案会让我沉默多久?
摘要:上周,团队来了一个实习生。 第一天熟悉环境,他坐在我旁边看我写代码。 看了一会儿,他问我: "老师,你平时不用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,这个起手式就得重新找回来。
第三层:自我验证能力的转移(需要警惕)
这是最严重的一层,也是最难察觉的。
