AI写代码时,程序员在干嘛
AI写代码时程序员在干嘛摘要用 AI 写代码之后程序员的工作节奏被打散了——从专注敲代码的心流变成了发指令、等结果、检查、纠正、再等的碎片循环。这篇文章不讲 AI 多厉害就聊聊 AI 吭哧吭哧生成代码的那几分钟里我们在干嘛以及这种新节奏对程序员心态的实在影响。如果你问我用 AI 写代码最大的改变是什么——不是写得更快了是等得更久了。以前写代码是一种心流。手指在键盘上飞脑子里全是逻辑变量名、方法签名、边界条件过一遍手跟上去。中间最多去倒杯水回来继续。那种状态很爽——你在掌控一切。现在呢一个对话框横在屏幕中间。你打完一句 Prompt回车——然后等。从连续剧变成了碎片这种节奏的变化比效率提升更值得聊。传统的编码是连续的。打开 IDE盯着代码脑子里有一个清晰的执行路径一行一行推进中间穿插几次运行和调试。整个过程像在看一部电影——有起伏但注意力是连贯的。两三个小时过去你甚至没注意到时间。AI 编码是碎片的。工作变成了描述需求 → 等 AI 生成 → 检查 → 确认或修正 → 再描述 → 再等。每一轮之间都有一小段空白你被不停地从专注状态里拉出来、塞回去、再拉出来。这个空白有多大我算过。假设你一天跟 AI 交互 80 次重度 AI 编码的话这不算夸张每次等 30 秒到 1 分钟。一天下来在等 AI 跑完这件事上花了 40 到 80 分钟。这还算的是跑得顺的情况——没算 AI 卡壳、你需要重新描述、或者它生了一大坨你得仔细读的时间。80 分钟什么概念差不多是你一天有效工作时间的五分之一就这么消失了。等待的时候你真正在干嘛不要美化这段等待时间。有一些文章说可以利用 AI 生成的间隙思考架构。说实话30 秒够想什么架构你刚把上一轮的上下文从脑子里卸下来AI 的结果就出来了。这点时间根本进不了深度思考。真实情况是——切到微信看一眼。工作群有没有新消息朋友群里在聊什么嗯刷过去没大事。切回来AI 还在跑。再切出去看一眼 Twitter。又切回微信。刷一下即刻。喝口水。站起来走两步又坐回去。有时候你甚至忘了刚才让 AI 改的什么。结果出来了你得盯着屏幕上的一大坨代码先回忆一下上下文再开始看它到底改没改对。这不是高效利用碎片时间。这就是走神。而且有一个很微妙的地方这段时间很难被你自己记入工作时间。你不会跟同事说我今天写了六小时代码其中三小时在等 AI。但你确实在工位上确实在处理工作确实没有休息。这种既没在认真写代码、也没在休息的中间状态是最消耗精力的。AI 改不好的几种翻车场景等一等也就算了更让人崩溃的是——等了半天出来的东西不对。用了 AI 编码一年多我遇到了几种翻车模式。模式一方向歪了你让 AI 改 A。它把 A 改了顺便把 B 也改了。B 改得还行——但你没说让它改 B 啊。行算了反正 B 确实可以优化一下。然后你发现它把 C 也动了。C 改出了一个 bug。你跟它说C 不对改回去。它改了又顺便把 A 给动了。这种事情发生一次还好两次你就开始烦躁。第三次你会想把键盘摔了。模式二来回拉锯第一版不是你要的。你说不是这样我要 XXX。第二版另一个方向还是不对。你耐着性子重新描述需求把边界条件列清楚。第三版跟第一版差不多。这时候你会开始怀疑——是我的 Prompt 写得不够好还是 AI 在这个场景下就是理解不了你甚至会怀疑自己的表达能力——明明很简单的东西怎么说都说不明白呢模式三修一个引入一个这是最常见的。你让 AI 修 bug AA 修了但引入了 bug B。让它修 BB 修了C 出来了。像打地鼠永远打不完。// 让 AI 修一个空指针异常第四轮的产物publicStringformatCreateTime(Orderorder){if(ordernull||order.getCreateTime()null){return--;// NPE 确实修了}returnorder.getCreateTime().atZone(ZoneId.of(UTC))// AIUTC 比较安全.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);// 对着呢对。但这是面向中国用户的后台系统// 时区错了凌晨的数据会偏差 8 小时}这种代码你扫一眼可能就过了——NPE 确实修了啊。但时区问题会在某个你睡觉的时间找到你。模式四还是我自己写吧明明很简单的东西AI 就是改不对。你盯着屏幕开始思考一个深刻的问题我要不自己写两分钟就搞定了但它已经耗了我十分钟了现在放弃是不是亏了沉没成本让你没法停下来。于是你又发了一轮 Prompt。它还是不对。你终于认输了关掉对话框自己写。写完一看时间——半小时过去了其中二十分钟是跟 AI 拉扯。成就感也在变说实话AI 编码效率是有的。那些重复的、模板化的东西——CRUD、单元测试、配置文件、文档注释——丢给 AI省的时间是真的。但有些东西在悄悄改变。以前写完一个复杂的功能调试通过跑起来那种我写出来了的满足感很直接。现在呢你对 AI 描述了需求它生成代码你检查一遍通过。感觉更像是AI 写出来了但我审核过了。你从一个创作者变成了一个审核者。审核者听起来更高端但体验并不更好。那种从零建造一个东西的乐趣在发指令 → 检查 → 通过这个流程里被稀释掉了。还有一件事让我有点不安技能的微妙退化。有些以前自己写得很熟的代码现在习惯性丢给 AI。“反正 AI 能写”——但你真的还能手写出来吗不是说忘记语法语法忘不了。是那种从零构建逻辑链路的能力会不会因为长期审阅而非创作而变钝我上次自己手写一个复杂的 Stream 操作链写到一半愣了一下——以前这种代码随手就来的。还有一个更隐蔽的问题对复杂逻辑的耐心变差了。以前写复杂逻辑会沉下来认真想清楚每一步。现在习惯性先把需求丢给 AI 看看它怎么处理。它处理不好你才开始自己思考。但来回几轮之后精力已经消耗了不少在生产 Prompt 和纠正 AI 上真正需要深度思考的时候反而没力气了。其实问题在这儿说到底不是 AI 的问题是工作模式变了。以前你和代码之间的关系是直接的。脑子里想清楚手上写出来编译通过跑起来——整个过程是闭合的有始有终节奏你自己控制。现在代码变成了一种间接产出物。你不是直接建造它的人你是那个描述需求、检查结果、确认交付的人。AI 在中间充当了一层代理——这层代理确实快但也把原本连续的工作过程切成了碎块。✅ 一次过⚠️ 方向偏了❌ 第三轮还不对 想清楚要做什么✍️ 写 Prompt⏳ 等 AI 生成30秒 ~ 2分钟 扫一眼结果结果靠谱吗 继续下一步 重新描述 心态崩了自己写这张图可能比我上面说的所有话都精确——AI 编码的核心体验不是AI 帮你写而是你被塞进了一个循环里。这个循环的主旋律不是敲键盘是等。每次循环的时间不长但次数多了累积起来的等待和来回纠正比你想象的多得多。别慌有几个笨办法我不想把这篇写成AI 不好别用。AI 有用而且会越来越有用。问题是怎么在这种碎片化的节奏里保持你自己作为程序员的效率和心态。我试了一堆方法之后现在大概是这么做的第一复杂逻辑自己先理清楚。不要让 AI 替你做架构决策。一个功能如果你自己都没想清楚边界条件和数据流AI 更不可能在第一次就猜对。花五分钟在脑子里过一遍画个草图——哪怕就是纸上画几个框——然后把明确的需求交给 AI让它帮你填实现。这样做改动的轮次明显会少。第二小任务直接丢过了就过。格式化、简单的转换、标准 CRUD——这些东西 AI 大概率一次就写对。扫一眼没问题就过。别纠结是不是可以写得更优雅省下来的精力留给真正需要动脑子的部分。第三AI 卡三次自己写。这是一个硬规则我自己定了以后就再也没破过。同一个问题AI 改了三轮还不对——停不要再试第四轮。你已经在这个问题上跟 AI 耗了至少五分钟而三轮下来你对这个问题的理解已经够了。自己写通常比再发一轮 Prompt 更快。第四等待时间别刷手机。最难的其实是这条。那几十秒你本能地就想切到别的窗口。但每次切回来你都要重新加载上下文——刚才在改什么、为什么改这个、AI 上一轮是怎么写的——这个加载成本比你以为的高得多。我现在尽量趁那几十秒看上一轮 AI 的输出或者想想下一步要做的事。坦白说不是每次都能做到但尽量。最后用了 AI 编码快两年最深的感受不是效率提升了多少而是AI 没有让我变成一个更强的工程师但它彻底改变了我和代码之间的关系。以前是两个人——我和代码。我写它跑我们之间是直接对话。现在是三个人——我、AI 和代码。我是那个传达需求的人AI 是那个实现的人代码是那个最终产物。我从建造者变成了中间人。中间人这个角色操的心一点都不比建造者少。你要不停地切换注意力、管理对话上下文、判断结果质量——这些消耗的脑力不比你亲自写代码少。等 AI 跑完的那几十秒你看起来什么都没干。但你依然在工位上依然是那个出了问题要被叫起来的人。你依然是那个对代码负责的人。这点没变以后大概也不会变。tangyuewei从后端出发用 AI 拓展到全栈的工程师。