当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?

一、开头:Review 现场

代码能跑、测试全绿、注释齐全------这还不够。

前两天我 Review 了一个新人的 MR。代码写得规整,测试覆盖率 100%,看着很漂亮。我扫了三行就皱眉头------不是挑刺,是闻到了线上事故的味道。

事务边界不对。 在数据库事务里同步调用支付和库存接口,任意一个超时,都会让事务长时间占着连接和行锁。

缓存 Key 设计有坑。 把整个活动首页塞进一个固定 Key,既是大 Key,又会被所有请求集中访问;大促流量一上来,很容易压垮单个 Redis 节点。

异常处理吞掉了关键信息。 catch 里只写了 log.error("处理失败"),却没把异常对象传进去;真出问题,连堆栈都查不到。

我把小伙子叫过来:「这代码 AI 帮你写的吧?」

「嗯...目前有什么问题吗?」空气中弥漫着尴尬的沉默。

「AI 通常不会犯低级语法错误,但上下文给不全,它很容易埋下工程问题。这几类坑我在线上都踩过。」于是我把上述三个问题和他同步了一下。

这事儿让我想了很久。不是想「AI 多危险」,而是想------如果 AI 能写 80% 的代码了,那我这个干了十多年的后端,剩下的价值到底是什么?

二、AI 能搞定的 80%

我先承认,AI 在我日常工作中确实帮了大忙。它最擅长的,是把「已经定义清楚的问题」快速变成「能跑的实现」。

  1. CRUD 接口:从 Entity 到 Mapper 到 Service 到 Controller,一把梭,我只需要加个权限注解
  2. SQL 优化:把慢查询丢给它,能分析出索引缺失、回表次数、Using filesort
  3. 单元测试:快速补齐常规分支和 Mock,省掉大量重复工作
  4. 接口文档:Swagger 注解、Javadoc 自动补全,有时比手写的还详细
  5. Bug 定位:NullPointer 这类常见异常,把堆栈丢进去,很快就能缩小排查范围

这些活,已经没必要全靠人手工完成了。对于边界明确、模式固定的任务,AI 往往更快,也更少犯低级错误。

但这也容易带来一种错觉:产出变高了,却更容易忽略一个问题------写出来的代码,到底是在解决正确的问题,还是在把错误的问题写得更漂亮?

三、剩下那 20%:AI 写不出来,因为答案不在代码里

但有些东西,单靠 AI 很难给出可靠答案。不是因为它不够聪明,而是因为关键上下文没有进入提示词

它不知道公司的运营群、不知道团队的 DBA 只会 MySQL、不知道上次上线为什么回滚。它只能基于「通用最佳实践」给出一份看起来合理的答案,但是线上环境,往往都不是按照教科书出牌。

李开复在 2017 年台湾大学的演讲中,把 AI 比作一根「魔法棒」。其中有句话我很认同:

有了 AI 这支魔法棒,你有责任去解决困难的问题。不要浪费时间做那些机器很快就能胜过人类的事。

------李开复

落到后端日常里,真正困难的问题------满减规则到底怎么算、故障先查哪条线、架构方案能不能兜住------往往就是剩下那 20% 的核心。下面三个踩坑经历,说的都是同一件事。

3.1 业务毒点------只有踩过坑的人才知道

有回搞满减活动,PRD 上只有一句话:满 100 减 15,满 200 减 30,满 500 减 100。AI 按这句话生成的优惠逻辑,单看代码完全没问题。

上线当天下午 4 点,客服电话被打爆:「我购物车原价 210,为什么只减了 15,不是应该减 30 吗?」

把订单摊开一算,关键问题是 PRD 没写清楚用哪个金额判断门槛,以及优惠按什么顺序计算

  1. 用户是会员,商品先打了 9 折

    • 原价 210 元 → 折后 189 元
  2. 满减门槛,系统按「折后价」判断

    • 189 < 200,够不上「满 200 减 30」
    • 但够上了低档「满 100 减 15」→ 所以用户只看到减了 15

而运营的真实规则是(写在需求文档之外,只在运营群 @所有人 说过):会员日当天,先按折前原价判断并计算满减,再叠加会员折扣。

按这条规则,正确算法应该是:

  • 先用原价 210 判断:210 ≥ 200 → 应减 30
  • 再叠会员 9 折:应付 (210 − 30) × 0.9 = 162 元

用户期望减 30,系统只减 15------不是 AI 算错了加减法,是没人把「折前还是折后」「先打折还是先满减」写进 PRD

AI 可以写出满减算法,但这类问题往往还得靠人追问一句:「会员折扣和满减同时存在时,门槛按哪个金额?顺序怎么定?」

如果没人把运营群里的消息补进上下文,AI 不会主动知道,但后端系统会为这条遗漏买单。

3.2 流量毒点------在日志和监控里,不在代码逻辑里

大促前夜,凌晨 2:47,钉钉连响三条:订单服务 P99 延迟超 3 秒,CPU 85%,Redis 连接数逼近上限。

我把超时调用栈和 getOrderList 的代码丢给 AI。它看到列表查询没有强制时间范围,很快给出建议:给 create_time 加联合索引,再把深分页改成游标分页。

建议本身没错,但它解释不了这次告警。

我先没动代码,打开了 Grafana。2:45 起,订单接口的请求量仍在平时的 300 QPS 左右,但 Redis 命令量从每秒 4000 多次冲到 6.8 万次;与此同时,MySQL QPS 只涨了不到 20%。CPU 烧在 Java 进程里,数据库反而不忙。

这就很反常:如果问题主要在慢 SQL,数据库连接数、活跃线程和磁盘 IO 应该先抬头;现在却是应用和 Redis 先扛不住。

接着查发布记录------今晚零发版。再查 Nginx access log,发现 2:44 到 2:47 之间,/admin/order/export 被连续调用了 17 次 :同一个 admin_token,同一个 User-Agent。

2:50 我给值班运营打了个电话。对方还在赶第二天的报表:「页面一直转圈,我以为没点上,就又点了几次......」

又点了几次 ------实际上她一共点了 17 次。每次导出都会:

  1. 不加时间范围,默认拉近半年的订单------接近 48 万行
  2. 在内存里用 POI 拼 Excel,单个任务峰值占用约 500MB 堆内存
  3. 每行订单顺带查一次用户昵称------最多触发 48 万次 Redis GET,既没批量,也没做本地去重

17 个导出任务叠在一起,堆内存开始频繁 Full GC,CPU 被打满;Redis 连接池也被占满,连带把正常用户的 getOrderList 拖慢了。

AI 看到的现象是「getOrderList 慢」------因为 Redis 连接池耗尽后,订单列表查用户缓存也开始排队超时。症状落在列表接口,病根却在导出接口。 它更不知道的是:这 17 次调用背后,是运营看到页面没反应后反复点击的本能操作。

最后怎么处理?不是加索引,而是三件事:

  • 立刻:在网关临时关闭导出入口,滚动重启被拖住的实例,再把接口限制为单用户单任务
  • 随后:导出改成异步任务------写任务表、后台 worker 生成文件,页面只返回「任务已提交」
  • 补上边界:导出强制带时间范围,单次最多 31 天;超过 10 万行拆分文件并走离线任务

这类问题,很难单从代码里读出来。 堆栈告诉你「哪里在等待」,监控告诉你「哪类资源先异常」;访问日志里的 URI 和 admin_token,才把问题指向那 17 次导出。

只有挨过罚、赔过钱、凌晨被叫起来查曲线的人,才会养成习惯:告警响了,先看变更、先看流量、先看上下游------而不是一头扎进 IDE 改 SQL。

3.3 架构毒点------靠权衡,不靠标准答案

有回我们接了个新项目:社区团购的后台,PM 的口径是「日活 10 万、峰值 QPS 2000、8 周 MVP 上线」。

我只把业务目标和峰值指标丢给 AI,它给出一份很标准的架构方案:

  • 拆 5 个微服务(用户、商品、订单、库存、支付)
  • MySQL 读写分离 + Redis Cluster 做缓存和分布式锁
  • Kafka 做订单异步解耦
  • Seata 管跨服务分布式事务

每一种都是成熟方案,但一次性全上,我们团队根本兜不住。

当时真实的约束是这样的:

维度 AI 方案隐含的条件 团队现状
后端人力 多个服务需要独立开发和维护 2 人,其中一个 6 周后离职
中间件运维 Kafka 3 Broker 起、Redis Cluster 6 节点 0 专职运维,DBA 只熟 MySQL 主从
业务确定性 系统会长期运行并持续扩容 PM 私下说「3 个月验证不了就砍」
上线窗口 --- 8 周,含联调提测

如果照 AI 方案硬上,光 Kafka 消费积压排查、Seata 超时回滚、跨服务链路追踪,就够 2 个人全职填坑------业务代码反而没时间写。

我们最后定的方案,看起来「不够高级」:

  • Spring Boot 单体,按领域分包(user / product / order),模块边界写清楚,但部署只有一个 jar
  • MySQL 一主一从,从库先用于故障切换和只读校验,备份单独做;不急着把读写分离引进业务代码------压测显示订单写入峰值单主库能扛住
  • 托管版 Redis 主从 2G,缓存 + 分布式锁;先不自建 Cluster
  • 本地消息表 代替 Kafka------订单创建后写一条 outbox 记录,定时任务扫表发通知,最终一致性够用
  • 不做 Seata------扣库存和创建订单在同一数据库事务里完成,跨库场景一律设计成可补偿

会上有同事质疑:「这方案能撑到 100 万 DAU 吗?」

我的回答是:眼下的问题不是 100 万,是 8 周后能不能上线、上线后 2 个人能不能睡整觉。 架构不是选「理论上最优」,是选「当前约束下最不容易死、出了问题 10 分钟能回滚」的方案。

后来项目没砍,日活慢慢涨到了 35 万。大促高峰时,Redis 延迟开始抬头,部分缓存请求超时后降级查询数据库。但这时候团队已经扩到 5 人,缓存 Key 规范和序列化协议也早已统一,迁移到 Cluster 的改造范围比较可控;订单模块随后也从单体里独立出来,早期划清的代码边界,让这次拆分少走了很多弯路。

反过来看,隔壁组当时走了 AI 同款方案:3 个微服务 + Kafka,3 个人维护。上线没多久,Kafka 就积压了 40 万条消息没人发现------不是没人写消费逻辑,是没人 7×24 会看 Kafka 的 lag 面板。等用户投诉「下了单没短信」,排查才发现消费者早就被一次错误发布搞挂了,只是没人盯着。

AI 给的是标准答案,但工程决策从来不是标准题。 真正要回答的往往是:

  • 这个方案,今晚出了问题,谁能在 30 分钟内 rollback?
  • 这个中间件,团队里有没有第二个人会修?
  • 这个拆分,是为了解决眼前的瓶颈,还是为了简历好看?

更现实的选择,往往是「团队现在能稳住、出了问题能回滚、半年内不会成为债」------而不是「架构图上看起来最漂亮」的那一个。

四、重新定义后端工程师的价值

所以我后来想通了。后端工程师真正的核心能力,不是「写出能跑的代码」,而是四样东西:

  1. 业务毒感:PM 说要做个导出功能,第一反应往往不是「好我加个接口」,而是「这个查询条件加上去会扫全表」「运营一天会用几次?要不要走异步?」
  2. 系统嗅觉:代码看起来没问题,但扫一眼就能嗅到「这个索引在生产环境的数据量下会失效」「这个 Key 在双十一会被打穿」
  3. 故障直觉:报警响了,往往不是先翻代码,而是先看「哪个改动最近上线的」「哪个第三方服务刚从 HTTP 换了 HTTPS」
  4. 权衡能力:没有最优方案,只有最合适的方案。技术选型拼的不是谁懂得多,是谁更清楚「我们团队兜得住什么技术栈」

这四样东西,AI 可以辅助,却很难替你承担。

不是因为 AI 不够聪明,而是因为它们不只在代码里。它们还在:

  • 凌晨 3 点的告警铃声里
  • 被 PM 改了 4 版需求之后的那句「这逻辑改过好几次了,得把老逻辑也兼容上」
  • 上线前最后的 Code Review 里那句「等会儿,这里再加个幂等校验」

五、更值得投入的三件事

如果 AI 已经能写 80%,或许该把更多力气从「写」挪到「定、审、兜」:

  1. 接到需求先写清边界:输入输出、异常路径、幂等规则、数据量级------再交给 AI 写实现,而不是把原始 PRD 整段丢进去。
  2. Review 时盯四类雷区:事务边界、缓存 Key、重试与超时、日志是否可追踪------这些是 AI 高频埋雷的地方。
  3. 主动接「要对结果负责」的活:上线评审、事故复盘、容量评估------这些才是人与 AI 之间更深的护城河。

六、结尾

AI 确实能写 80% 的代码了。剩下那 20%,不在语法里,不在框架里,而在赔过一次钱、熬过一次夜、改过一次线上事故之后,慢慢长出来的直觉里。

值钱的地方,从「写得出」挪到了「兜得住」。

更容易被 AI 替代的,不是「后端工程师」这个职业,而是其中那些只把需求翻译成 CRUD、却不对线上结果负责的工作。

把 AI 当成那根「魔法棒」之后,我越来越深的体会是:工程师的价值,从来不在写了多少行代码,而在敢不敢为那几行代码签字。


创作不易,求个点赞关注在看三连~

我是老猫,我们下期见!🐱

相关推荐
想会飞的蒲公英3 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
CIO_Alliance3 小时前
AI+iPaaS解决方案深度整合:让跨系统业务流程自动化一步到位
人工智能·ipaas·系统集成·ai+ipaas·企业cio联盟·企业级ai化转型
苏州IT威翰德3 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
天上路人3 小时前
A59P双波束语音模块:神经网络降噪在远场拾音中的工程实现分析
人工智能·深度学习·神经网络·ai降噪·ai语音·麦克风·回音消除
冬奇Lab3 小时前
AI 评测系列(03):LLM-as-Judge——让 LLM 评价 LLM 的正确姿势
人工智能·llm
Miao121313 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
冬奇Lab4 小时前
每日一个开源项目(第164篇):毕昇(BISHENG)- 面向企业的开源 LLM DevOps 平台
人工智能·开源·agent
声讯电子4 小时前
录音笔AI降噪方案:从录得到到听得清的听觉革命
人工智能·语音识别
小小测试开发4 小时前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具