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

📅 2026/6/24 8:10:35
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秒 MapLong, ListUserTag 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把同样的任务重新做了一遍计时。结果有AI1小时10分钟完成度95% 无AI2小时完成度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。我没有阻止他。但我告诉他工具用得越顺手越要偶尔关掉它确认自己还是那个会用工具的人而不是没了工具就不会干活的人。他想了一下说那就像开惯了导航也要偶尔认路