我写了0行代码,却是最累的一天
我写了0行代码,却是最累的一天
上个月我用Codex写了一个完整的CRUD模块。
从数据模型设计,到接口实现,到单元测试,到部署脚本——全套。我自己敲进编辑器的代码?0行。但我花了整整4个小时review它写的每一行。
说实话,这4个小时比我自己写代码累多了。
写代码是体力活,你知道该往哪走,手跟上就行。但review AI写的代码是纯脑力活——你得不停地问自己:这个设计合理吗?这个边界条件它考虑到了吗?这个抽象层次对吗?整整4小时,脑子的CPU占用率100%,风扇都快转起来了。
你可能觉得AI编程就是”让你写代码更快”。我用了3个月后发现,这个理解完全错了。AI编程不是让你写得更快,而是彻底改变了”写代码”这件事的定义。
我不再是writer,我变成了reviewer。
一组让我重新审视自己工作的数据
用了Codex三个月后,我做了一件有点无聊的事——统计自己的工作数据。程序员嘛,什么事情都想量化一下,不量化浑身难受。
结果让我沉默了:最近一个月,我项目里AI生成的代码占比78%。听起来效率爆表对吧?先别急着羡慕。我review的时候,修改率高达35%。
但最让我意外的不是这个数字本身,而是那35%修改的内容。几乎全都不是bug。代码能跑,测试能过,逻辑是对的。
问题出在设计上。
举个例子。一个用户权限模块,Codex给我生成了一堆if-else做权限判断——admin走这个分支,editor走那个分支,viewer再来一个分支。能跑吗?能。但如果明天产品经理笑眯眯地走过来说”加个新角色吧”,你就得在十几个地方加if-else。产品经理加一个角色花5秒钟,你改代码花5小时。我得把它改成策略模式。
再比如一个数据处理服务,它把数据库查询、业务逻辑、结果格式化全塞在一个函数里——300行,从头到尾一条龙,像一碗拌面一样搅在一起。功能没问题,但三个月后谁来维护这碗面?大概率是你自己,而且你已经忘了当初为什么这么写了。
AI能写出能跑的代码,但写不出好维护的代码。
这就是那35%修改率的真相。不是AI写错了,是AI不懂什么叫”好”。

这种感觉很微妙——AI干了大部分活,但你反而更累了。为什么?
你不是在开车,你是在监考
因为你的角色变了。我后来想到一个特别贴切的类比——L3自动驾驶。
很多人以为L3自动驾驶就是”车自己开,你可以睡觉”。错了。L3的意思是:车自己开,但你必须随时准备接管。你不用踩油门了,但你得盯着路。你不是在开车,你是在监督一个AI开车。
这活儿比你自己开还累。自己开车的时候,你是主动控制,注意力跟着动作走,开两小时也不觉得累。但坐在副驾盯着AI开?你不知道它什么时候会犯错,但你必须保证它犯错的那一秒你正好在看。这种”随时可能出事但大部分时间没事”的状态,跟带娃差不多——你不能玩手机,但你也不用做什么,就干耗着。
AI编程跟这一模一样。
以前我写代码,脑子里有一条清晰的路——从需求到设计到实现,每一步都是我主动决策。写到哪、为什么这么写、下一步干什么,全在我掌控之中。
现在呢?Codex哗哗哗给我生成了200行代码,我得逐行扫描:这个变量命名合理吗?这个错误处理够不够?这个接口设计三个月后会不会被骂?注意力要求反而更高了,因为AI生成的代码有一个特别阴险的特点——它看起来很对。
不是那种一眼能看出来的烂代码。是那种review三遍才发现问题的”看起来挺好实际上埋了坑”的代码。
自己写代码像开卷考试,review AI代码像监考——你得比”考生”更懂这道题,才能判断它有没有作弊。
三个月后,我找到了正确姿势
挣扎了三个月,我摸索出三个适应新工作流的方法。不是什么宏大的方法论,就是实战中踩坑踩出来的。
第一招:先写spec,再让AI写代码。
这是我交了学费之后学到的。一开始我跟大多数人一样,直接甩一句”帮我写一个用户注册接口”给Codex,然后端起咖啡等它交卷。它写出来了,能跑。但参数校验的边界跟我想的不一样,错误码的规范跟项目不一样,返回格式也跟前端约定的不一样。前端同事看到返回格式的那一刻,表情像吃到了芥末。
我花了一个小时改它的输出。那杯咖啡白喝了。
后来我换了一种方式:先花15分钟写一份简单的spec——接口路径、入参出参、错误码定义、边界条件。然后把spec给Codex。生成出来的代码,修改率从35%直接降到了10%以下。
给AI清晰的输入,比修它的输出高效10倍。 你前期偷的懒,后期全在review里还。
第二招:review时只盯两件事——边界条件和抽象层次。
我有段时间review效率很低,因为逐行看,每一行都想挑毛病。后来发现完全没必要——变量命名、代码格式、基本逻辑,AI做得比我团队里大多数人都好。你跟它较这些劲,属于杀鸡用牛刀。
真正要盯的就两样。
第一是边界条件。AI写正常路径一把好手,但”如果用户输入为空呢?”“如果两个请求同时打过来呢?”“数据库连接突然断了呢?”——这些问题它不是不会处理,是它压根不会主动想到。就像一个应届生写代码,happy path写得贼溜,一到异常处理就开始摆烂。
第二是抽象层次。AI特别喜欢把所有逻辑平铺在一个函数里,300行从头撸到尾,简单粗暴。但你知道三个月后维护这段代码的人看到这300行会说什么——”谁写的?拉出去。”软件工程的核心是分层和抽象,这种架构感AI目前还真没有。
第三招:把省下来的编码时间投入到系统设计和业务理解上。
这才是真正的认知升级。
以前一天8小时,6小时在写代码,2小时在开会和对需求。现在用了AI,写代码的时间压缩到2小时(大部分是review),突然多出来4个小时。
这4个小时干什么?刷手机?逛掘金?去茶水间第五次泡咖啡?
说实话,前两周我确实有点懵——就像一个习惯了996的人突然被通知双休,反而不知道周末该干嘛了。
后来我想明白了:花更多时间理解业务,画系统架构图,跟产品经理深聊需求背后的”为什么”。以前没时间干的事——技术选型调研、性能瓶颈分析、接口设计文档——现在终于有时间了。以前这些东西叫”等有空再说”,现在真的有空了,没借口了。
意外的收获是:我对业务的理解越深,写给AI的spec就越精准,AI生成的代码质量就越高,review的时间就越短。这是一个正循环。
编码能力正在被AI拉平,但系统设计能力和业务理解能力不会。 这才是AI替代不了的东西。

代码不值钱了,判断力值钱了
回到开头那个场景。
我写了0行代码,花了4小时review。这4小时里,我做了几十个判断:策略模式还是工厂模式?这个接口要不要做幂等?这个模块的边界该划在哪?每一个判断都需要经验、业务理解和对”好代码”的直觉。
这些东西,Codex一个都不具备。它能写代码,但它不知道什么是”对的代码”。
AlphaGo出来之后,围棋界发生了一件有意思的事:职业棋手不再拼计算力了——拼不过。他们开始拼”判断力”,在AI给出的候选手中,选出最适合当前局面的那一步。AI算得更快,但人类选得更准。
开发者的变化跟这一模一样。你写代码有多快不重要了,AI比你快100倍。重要的是你能不能在AI给的三个方案里,一眼挑出那个最合理的。
我写了0行代码但花了4小时。这不是效率低。这是未来开发者工作的真实样子。
代码不值钱了。判断力值钱了。
如果你还在卷”打字速度”,该换赛道了。