AI写代码靠谱吗?程序员的真实体验
上周一个朋友找我吐槽,说他们团队新来了个实习生,第一天就用 Cursor 生成了三百行代码,信心满满地提了 PR。
上周一个朋友找我吐槽,说他们团队新来了个实习生,第一天就用 Cursor 生成了三百行代码,信心满满地提了 PR。代码跑起来没报错,逻辑看着也顺,结果 code review 的时候 senior 工程师盯着看了十分钟,发现里面有个边界条件处理是错的,那个 bug 在高并发场景下才会触发,平时根本测不出来。实习生自己都没意识到问题在哪里,因为他压根没想清楚那块业务逻辑。
这个故事让我觉得,关于「AI写代码靠不靠谱」这件事,业界一直有两种声音,一边说 AI 让生产力翻倍,一边说 AI 生成的代码是定时炸弹。其实这两边说的都对,只是他们在描述同一头大象的不同部位。
AI写代码这件事,拆开来看才能看清楚。
先说 AI 真正擅长的部分。你去问任何一个重度使用过 GitHub Copilot 或者 Cursor 的工程师,他们几乎都会承认,写样板代码(boilerplate)的速度快了不止一倍。一个 REST API 的增删改查,一个标准的数据库连接池初始化,一段正则表达式,一个你记不住参数顺序的标准库函数调用,AI 在这些地方的表现是真的稳。这类代码的特点是,模式固定,上下文需求低,错了也容易发现。程序员原本花在这上面的时间,大量是在查文档、复制粘贴、处理语法细节,AI 把这部分直接压缩掉了,这是实实在在的效率提升。
GitHub 官方做过调研,使用 Copilot 的开发者在完成特定任务时速度提升显著,满意度也更高。这个数据当然有自我背书的成分,但你去各个技术论坛上看真实反馈,大方向是一致的,没有人说 AI 在写 CRUD 上帮了倒忙。
但问题就出在,代码库里不只有 CRUD。
一旦任务复杂度上升,AI 的表现就开始变得飘忽。我说的复杂不是指算法难度,而是业务逻辑的复杂度。一个在运行了五年的金融系统里加一个新功能,你需要理解历史上那些奇怪的设计决策为什么存在,你需要知道某段看起来多余的校验逻辑其实是为了应对某个特定监管要求,你需要清楚这个改动会不会影响下游三个系统的数据流。这些东西,AI 不知道。它只能看到你喂给它的上下文窗口里的内容,而那些隐性的、散落在会议纪要和口口相传里的业务知识,根本不在那个窗口里。
这时候 AI 生成的代码,表面上看语法正确、逻辑流畅,但它是在对着一个残缺的需求描述做最合理的猜测。你想想看,一个猜对了表面逻辑但猜错了业务边界的代码,比一段直接报错的代码危险得多,因为它会悄悄通过测试,然后在生产环境里埋着。
还有一个很少被正面讨论的问题,AI 会让人变懒。
这话听着有点刺耳,但我是认真的。当你习惯了 AI 帮你补全代码,你的肌肉记忆会慢慢退化,更严重的是,你开始对代码的理解从「我知道这段逻辑为什么这么写」退化成「AI 给我的,跑起来没问题就行」。这个认知退化是很隐蔽的,短期内你感觉效率提升了,长期来看你在失去一种叫做「代码直觉」的东西。
经验丰富的工程师之所以厉害,不只是因为他们写得快,而是因为他们看一眼代码就能感觉到哪里不对劲,那种直觉是从无数次写错、调试、重构里磨出来的。如果大量编码时间都被 AI 代劳,这个磨炼过程就被跳过了。对于初级工程师来说,这个代价尤其值得警惕。你可以用 AI 辅助学习,但不能用 AI 替代学习。
说到底,AI 写代码的靠谱程度,和使用者的水平成正比。
这句话不是在说废话。一个高级工程师用 AI,他能精确地描述问题,能快速判断输出是否合理,能识别那些藏在「正确」外表下的错误,能在 AI 生成的代码基础上做有意义的改造。他用 AI 是在放大自己已有的能力。一个初级工程师用 AI,他不确定需求边界在哪里,他没有足够的经验去验证输出,他很容易被一段「看起来对」的代码糊弄过去。他用 AI,风险是在掩盖自己的能力缺口。
这个现象在业界已经有了一个非正式的说法,叫「AI 让强者更强,让弱者更脆」。Anthropic 的 Claude、OpenAI 的 GPT-4o、Google 的 Gemini,这些模型都在不断进化,代码能力越来越强,但它们本质上是一个放大镜,放大的是使用者本身的判断力。你的判断力越强,放大效果越好;你的判断力越弱,放大出来的就是更大的混乱。
回到最开始那个实习生的故事。
那个 bug 最后被发现了,系统没有出事。但这件事让我觉得,AI 写代码这件事,不应该用「靠谱还是不靠谱」这个二元框架去判断,这个问题本身就问错了。更准确的问法是,在什么场景下、由什么水平的人来用、用来做什么类型的任务,靠谱程度才能有一个具体的答案。
•工具没有对错,使用方式有高下之分。那些把 AI 当做提效神器用得很爽的工程师,无一例外都是先把自己变强,再用 AI 加速。他们不是因为有了 AI 才变强的,顺序反了。
下一次当你打开 Cursor 或者 Copilot,不妨在 AI 补全代码之前,先在脑子里想清楚自己想要什么。那个想清楚的过程,才是你真正不可替代的地方。
下一次当你打开 Cursor 或者 Copilot,不妨在 AI 补全代码之前,先在脑子里想清楚自己想要什么。那个想清楚的过程,才是你真正不可替代的地方。
夜雨聆风