夜雨聆风学习资料网

ARTICLE · 1045623

面试官问:AI 都能写这么多代码了,公司为什么还要你?

面试官问:AI 都能写这么多代码了,公司为什么还要你?

面试官问:AI 都能写这么多代码了,公司为什么还要你?

这个问题,可能正在成为程序员面试里的新常见题。

以前面试前端,可能会问你 Promise 怎么实现、React Fiber 是什么、浏览器渲染流程怎么样。

现在不一样了。

面试官很可能直接问:

“现在 Claude、Codex 这些 AI 已经可以写大量代码了,你觉得公司为什么还需要你?”

甚至会问得更直接:

“如果给一个实习生,再配一个 Claude Code,你觉得还需要你吗?”

表面上是在问 AI,实际上是在问另外一件事:

当写代码本身越来越容易,一个程序员还能提供什么价值?

有些答案,现在已经不太够用了

比如:

“AI 写的代码还是不够可靠,所以需要程序员。”

这个答案放在前几年或许还能成立。

但现在,越来越多常见的开发任务,AI 已经能够完成得相当不错。CRUD、表单、接口、工具函数,甚至一些完整的小型功能,都可以直接交给 AI。

如果还停留在“AI 写代码不如我”这个层面,很容易把自己带进一个尴尬的问题:

如果 AI 已经能完成你大部分工作,那你的核心竞争力到底是什么?

还有一种回答:

“AI 不懂业务。”

这句话也不能说完全错,但已经不够有说服力。

因为只要需求描述足够完整,AI 确实可以理解相当多的业务规则,并根据需求生成代码。

再比如:

“总得有人 Review AI 的代码。”

这同样成立,但如果把自己的价值定义成“AI 代码检查员”,显然也不是一个特别有竞争力的答案。

真正重要的地方,可能在代码之外。

第一层:AI 负责实现,人负责判断

我越来越认同一个简单的区别:

AI 更擅长回答“怎么做”,而开发者需要不断判断“应该做什么”。

举一个很普通的例子。

假设产品提出一个需求:

用户下单成功以后,页面显示一个 15 分钟倒计时。

这对 AI 来说并不难。

让 AI 生成一个倒计时组件,可能几分钟就能完成。

但真正开发这个功能的时候,你还会遇到很多问题:

倒计时究竟应该按照客户端时间计算,还是以服务器时间为准?

用户把手机时间手动调整了,会不会影响倒计时?

倒计时结束以后,是自动刷新订单状态,还是弹出提示?

如果用户同时打开两个页面,两个页面的倒计时如何保持一致?

活动开始以后,如果突然有几十万用户同时进入页面,会不会产生大量请求?

这些问题,并不是“把代码写出来”就结束了。

甚至有些问题,如果一开始没有考虑,等上线以后才发现,代价可能已经很高。

所以开发者真正的价值,并不只是把代码写出来。

而是知道:

哪些东西需要做,哪些东西没必要做,哪些边界条件必须提前考虑。

AI 可以帮你完成一个任务,但它未必知道你还遗漏了什么。


第二层:AI 可以生成代码,但系统不是代码堆起来的

再往上一层,就是架构。

让 AI 写一个注册接口,现在已经不是什么特别困难的事情。

但如果让你负责整个用户系统,问题马上就复杂起来了。

比如:

注册和登录是不是应该拆开?

用户数据未来会不会增长到千万级甚至更大?

数据库应该怎么设计?

Session 应该使用 JWT,还是 Redis?

以后要不要接微信、Google 等第三方登录?

权限体系现在应该做到什么程度?

哪些东西需要考虑未来扩展,哪些东西现在保持简单反而更合理?

这些问题没有一个统一答案。

AI 可以把各种方案列给你:

A 方案有什么优点,B 方案有什么缺点,C 方案适合什么场景。

甚至可以把三套方案全部写出来。

但最后选择哪一个,需要结合公司的业务规模、团队技术能力、现有系统、开发周期和维护成本。

技术方案从来不只是技术问题。

同一个架构,放在大公司可能合理,放在一个十几个人的创业团队里可能就是过度设计。

所以 AI 越擅长写代码,开发者反而越需要具备系统视角。

因为现在最大的问题可能已经不是:

“这段代码怎么写?”

而是:

“我们到底应该选择哪条路?”

而且 AI 生成代码越快,一个错误的架构决定,可能也会越快变成一大堆代码和技术债。


第三层:真正出了问题,还是得有人负责

这一点听起来有点现实,但可能恰恰是最重要的。

假设一个功能上线以后,凌晨三点突然报警。

这时候需要有人判断:

影响了多少用户?

是继续观察,还是立即回滚?

是前端问题、后端问题,还是数据库或者第三方服务出了故障?

临时修复应该怎么做?

修复以后如何确认没有引入新的问题?

第二天还要不要做复盘?

AI 可以帮你分析日志。

可以帮你看堆栈。

可以帮你搜索类似错误。

甚至可以直接生成修复代码。

但最后依然需要有人做决定。

要不要回滚,是人的决定。

哪个问题优先处理,是人的决定。

这个风险能不能接受,也是人的决定。

出了事故以后,也不会有人半夜三点把 AI 叫起来承担责任。

所以公司真正需要的,可能并不是一个单纯“能写代码的人”。

而是一个能够对结果负责的人。


一个真实案例,比说一堆“AI 不行”更有用

如果面试的时候真的遇到这个问题,我反而建议不要一直讲大道理。

直接讲一个具体案例。

比如:

“有一次我让 AI 帮我做一个数据导出功能。功能本身测试完全正常,几千条数据导出来也没问题。后来我检查代码的时候发现,它把所有数据一次性加载到了内存里。”

“测试环境的数据量比较小,所以一直没有暴露问题。但如果到了生产环境,数据量变成十万甚至百万级,这种实现方式就可能直接把服务拖垮。”

“所以问题并不是 AI 不会写代码,而是它不知道真实生产环境的数据规模和运行条件。”

这个例子真正说明的是:

代码能运行,不代表方案就是正确的。

而这可能就是 AI 编程时代,程序员需要继续保留的能力。


所以,AI 时代程序员到底应该提升什么?

我觉得可以把这个问题换一下。

不要一直问:

“AI 会不会把程序员替代?”

不如问:

“当写代码越来越便宜之后,什么能力反而会越来越贵?”

至少有几个方向值得关注。

第一,系统设计。

AI 让代码生产速度越来越快,但系统一旦设计错了,产生技术债的速度也会更快。

第二,业务理解。

知道需求怎么实现是一回事,知道产品为什么要这么做,是另一回事。

第三,沟通和协作。

真实项目从来不是一个人坐在电脑前把代码写完。

产品、设计、前端、后端、测试、运维,很多问题最终都需要人与人之间协调。

第四,线上解决问题的能力。

程序真正上线以后,才是考验的开始。

出了问题以后,谁能够快速定位、判断优先级、推动解决,并且避免下一次再次发生?

这也是为什么我并不认为 AI 编程意味着程序员“不需要写代码了”。

恰恰相反。

未来优秀的程序员可能依然需要很强的编码能力。

只是这个能力的用途正在变化。

以前是:

我自己把代码写出来。

以后越来越可能变成:

我知道代码应该怎么写,也知道 AI 写出来的东西到底对不对。

AI 把“写代码”这件事情变得越来越便宜。

而真正昂贵的,可能会变成:

做正确的判断,并且为结果负责。

所以,如果下一次面试官问你:

“AI 都能写这么多代码了,公司为什么还需要你?”

也许真正值得回答的,并不是:

“因为 AI 还不够强。”

而是:

“因为写代码只是软件开发的一部分。”

这版我特意保留了你要求的几个原文核心案例:倒计时、用户系统架构、凌晨线上事故、10 万条数据导出/OOM;但把案例里的具体表达、论证顺序和结论重新组织了。这样会比单纯把“完美地”改成“很好地”更像独立文章。

相关学习资料