面试官问我:AI 都能写代码了,前端凭什么还值 25K

AI 现在确实能把一个页面、一个表单甚至一套组件库的第一版很快铺出来。Claude Code、Codex 这类 Agent 接到明确任务后,能连续改文件、补样式、接接口,速度比手写快得多。

所以「前端凭什么还值 25K」不是一个可以靠情怀回答的问题。

我的答案是:25K 从来不是给"把 JSX 敲出来"的报酬,而是给"在一堆不确定条件下,把一个功能交付成可用结果"的能力。 AI 降低的是第一版代码的生产成本,没替你接走交付的判断、风险和责任。

标题里的"面试官问我"不是复述某一场真实面试。它更像最近反复出现的一道追问:既然 AI 都能生成代码了,前端开发者还剩下什么?

先把结论摆在前面:前端不会因为 AI 消失,但只会把需求复述成页面的人,议价能力一定会下降。

AI 已经很会做第一版,但第一版离交付还很远

给 Agent 一句"做一个任务列表页",通常很快就能得到:请求数据、循环渲染、加载态、按钮、几个响应式样式。演示时看起来已经像个完整功能。

问题是,真实项目里最昂贵的部分,常常不在"有没有把列表渲染出来"。而在这些没有写进第一句需求的话:

  • 接口返回空数组、半截数据或权限不足时,页面该怎么表现?
  • 用户反复点击、切换页面、网络慢、请求失败时,状态会不会乱?
  • 一个临时字段会不会被写进三个组件,下一次改需求要全局搜索?
  • 这个新功能会不会让首屏变慢、键盘无法操作,或者破坏已有埋点?
  • 上线后客服说"某些用户点不了",谁能最快判断是前端状态、接口数据、权限还是发布问题?

AI 可以给这些问题生成候选答案,但它不会天然知道哪一个答案符合你的产品规则、团队约束和线上风险。它也不会替你承担"看起来能跑,实际不能用"的后果。

这就是我理解的分水岭:生成代码是产出,交付结果才是工作。

一个能跑的页面,为什么不等于一个可交付的页面

下面这种 React 代码并不罕见。它能跑,也能把接口里的任务渲染出来。

tsx 复制代码
import { useEffect, useState } from "react";

type Task = { id: string; title: string; done: boolean };

export function TaskList() {
  const [tasks, setTasks] = useState<Task[]>([]);

  useEffect(() => {
    fetch("/api/tasks")
      .then((response) => response.json())
      .then(setTasks);
  }, []);

  return (
    <ul>
      {tasks.map((task) => (
        <li key={task.id}>{task.done ? "已完成" : task.title}</li>
      ))}
    </ul>
  );
}

如果接口永远成功、字段永远稳定、页面只被打开一次,这段代码没问题。

但生产环境不提供这种理想条件。接口可能返回异常结构,字段可能缺失,加载中的空白页面也会让用户误以为"没有任务"。

真正的前端工作不是把这些情况全靠 if 堆起来,而是先问:这个页面对用户的承诺是什么?数据边界在哪里?异常出现后,用户下一步还能做什么?

交付视角会先区分加载、空、错误和无权限,再把不可信的接口输入收口。重点不在于某个校验函数怎么写,而在于先界定失败的含义,再决定展示什么、是否允许重试、如何定位问题。

一个只会提示词的人,往往得到的是"能展示"的代码;一个能负责交付的人,会追问:空态是不是业务空态?错误态会不会把权限问题伪装成网络问题?这个组件该留在页面里,还是沉淀成团队规范?

代码量没变多少,价值差距却很大。

前端真正被付费的,是这四类判断

1. 把模糊需求翻译成可验证的交互

产品说"这里加一个快捷入口",不是一张设计稿就结束了。入口在哪个时机出现、未登录怎么办、点击后去哪里、返回后状态是否保留、移动端和桌面端是否一致,都会影响最终体验。

AI 擅长把清晰指令翻成实现。前端的价值,是发现指令不够清晰的地方,并把它变成可以讨论、可以验收的规则。

很多返工不是代码写错了,而是开发时默认了一个业务规则,产品上线后才发现默认错了。能提前把默认值、边界和验收路径问出来,往往比半小时生成一百行代码更值钱。

2. 给系统划边界,而不是给页面打补丁

一个新需求最容易的做法,是在现有组件上再加两个状态、三个 props、一个条件分支。短期看很快,半年后就会变成谁都不敢动的组件。

前端需要判断:哪些状态属于业务领域,哪些只是展示细节;哪些能力应该放进共享组件,哪些只服务当前页面;哪些数据适合在路由层加载,哪些该由局部组件管理。

这不是为了"架构漂亮"。边界清楚,需求变化时才不会一次改动牵连整条链路;多人并行开发时,才不会每个人都在同一段代码上打补丁。

Agent 能根据仓库写出符合现有模式的代码,但它无法替团队决定现有模式是不是已经走到该拆分的临界点。

3. 判断质量,而不是只看页面像不像

"像设计稿"只是最基础的质量线。一个页面还要经得起不同设备、慢网、键盘操作、长文本、异常数据和重复点击。

前端工程师需要把这些抽象成可验证的质量要求:

维度 只看第一版时的问题 交付时要确认的事
状态 只做成功态 加载、空、错误、无权限是否可理解且可恢复
性能 本地点击很快 首屏、长列表、资源加载会不会拖慢核心路径
可访问性 鼠标能点 焦点、键盘、语义和反馈能否正常工作
一致性 单页好看 组件、文案、交互是否遵守现有系统
可观测性 出问题靠猜 关键失败是否有足够信息定位

这些事有的可以让 AI 帮你列清单、补测试、扫代码;但"这个业务真正不能出错的地方是什么",必须由理解上下文的人来定。

4. 在上线后做取舍并对结果负责

线上出现问题时,最需要的不是继续生成代码,而是快速判断。

是某个灰度配置没生效,还是接口把字段改坏了?是某一类机型的样式问题,还是用户权限导致的分支?先回滚,先降级,还是局部修复?这些选择都带成本,也都需要对业务节奏负责。

前端的角色不是"接到需求就写"。在真实团队里,它还是产品、设计、后端、测试之间的翻译器和风险提示器。能把"这个需求能做"进一步说成"这样做会影响什么、要补什么、何时能稳定上线",才是更高价值的能力。

如果面试里真被这样问,可以怎么答

我不会上来讲"AI 永远替代不了人"。这种回答既空,也经不起追问。

我会把话题落到交付链路上:

AI 可以把明确需求的实现速度拉得很高,但前端的职责不只是产出页面。我会先把需求拆成状态和边界,再用 AI 加速实现;最后由我对可用性、性能、一致性和线上问题负责。公司花钱买的不是一段能运行的代码,而是一件能稳定交付的功能。

接着补一个你自己真正做过的例子:一次需求边界怎么被澄清、一个线上问题怎么被定位、一个重复组件怎么被收口。不要编一个"AI 写错了我力挽狂澜"的故事,真实的工程判断比戏剧化叙事更有说服力。

如果暂时没有复杂项目,也可以从日常工作里开始练:每次 AI 生成一段实现,都别先问"能不能跑",而是连续问五个问题:

  1. 它假设了哪些接口和业务规则?
  2. 成功以外的状态在哪里?
  3. 放进现有代码后,谁会被影响?
  4. 我准备怎样验证它,而不只是手点一遍?
  5. 出问题后,我能不能快速解释原因?

这五个问题,决定你是在使用 AI 写代码,还是在用 AI 提升交付能力。

25K 不是前端的统一标价,而是一条能力分界线

当然,不是每个前端岗位都该是 25K,也不是会做上面这些事就自动对应某个薪资数字。地区、行业、公司阶段、业务复杂度都会影响价格。

但这个争论至少提醒了一件事:别再把自己的价值描述成"我会 React、会写页面、会调接口"。这些能力依然必要,却越来越像入场券。

更值得训练的是:你能不能把不清楚的事情弄清楚,把不稳定的事情弄稳定,把一次性的实现沉淀成下一次更快的交付。

AI 会继续变强。前端也不该和它比赛谁写得更快,而应该把它当成杠杆,去承担那些必须有人判断、有人协调、有人负责的部分。

你觉得 AI 最先压低的是前端的哪一类价值:写页面的速度,还是解决问题的能力?


相关推荐
FPC工厂——皇榜科技1 小时前
机器人灵巧手线路板:从“握得住”到“摸得准”:一只机械手的柔性神经密码
网络·人工智能·科技·机器人·pcb工艺
JMchen1231 小时前
Cursor高阶玩法:.cursorrules编写与Spec-Driven开发实战,把AI调教成专属结对编程搭档
人工智能·vscode·kotlin·cursor·结对编程·spec-driven·.cursorrules
szxinmai主板定制专家1 小时前
基于 RK3588+RK1820/28 算力卡的国产工控机,适用于机器视觉,机器人等边缘算力场景
人工智能·fpga开发·zynq·控制器·mpsoc·半导体设备
右耳朵猫AI1 小时前
PHP周刊2026W36 | Laravel AI SDK 0.11可观测、Symfony 8.1.5、Octane并发、事件溯源
人工智能·php·laravel
风骏时光牛马2 小时前
AI源码分析:拆解模型底层实现逻辑
前端
知几蜗牛2 小时前
ChatGPT Images 2.5更新解析:模板、草图与迭代编辑
人工智能
BillKu2 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss
223糖2 小时前
思考 AI 应用架构
人工智能·架构
IT_陈寒2 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端