上个月团队扩招,我面试了一个特别"潮"的候选人。他说自己不用手写代码,全靠AI生成,自称"Prompt工程师"。我觉得挺新鲜,就招了进来。结果一个月后,他负责的模块上线,三天内爆出十几个bug。我打开他的代码,愣住了:一个函数两百行,重复逻辑遍地,没有错误处理,没有类型定义。效率确实高,一天产出是我两倍。但修他的代码,花了我三倍的时间。
一、"Prompt工程师"的诞生
今年招聘季,我收到一份简历,技能栏写着"AI辅助编程(Cursor / Copilot / Claude Code)"。面试时他演示了一段:用Cursor生成一个完整的React组件,带样式、带状态、带API调用,前后不到一分钟。我问:"如果AI生成的代码有bug,你怎么排查?"他说:"再让AI修啊,多轮对话总能搞定。"
我当时觉得,这代表未来。于是给了他offer,让他负责一个内部中后台模块。
二、效率惊人,但代码质量惊人地差
他确实快。别人一天写一个页面,他能写三个。但两周后,我去review他的代码时,发现问题了。
1. 重复代码堆砌
同一个工具函数,出现在五个文件里,每个实现略有不同。AI每次生成时没有"复用"的意识,只解决当下。
2. 没有错误处理
所有API调用都没有.catch(),没有try...catch。问为什么不处理,他说:"AI没写,我忘了补。"
3. 类型形同虚设
虽然用了TypeScript,但到处都是any。AI不知道业务实体的具体类型,就给了any,他也懒得改。
4. 组件过度设计
一个简单的列表页,AI生成了6个自定义Hook,4个context,拆成了20个文件。改一个功能要跨十几个文件。
三、上线后,炸了
模块上线后,用户反馈:页面白屏、数据不更新、按钮点了没反应。我们紧急回滚,花了三天排查修复。
- 白屏是因为API返回空数据时,AI没判断
data.list是否存在,直接.map()。 - 数据不更新是因为
useEffect依赖数组写错了,AI用了[]但内部引用了外部变量。 - 按钮没反应是因为事件处理函数里抛了异常,没捕获,导致React组件卸载。
我问他:"这些你都没测吗?"他说:"AI生成的代码,我以为没问题。"
四、反思:Prompt工程师不等于合格工程师
这件事让我重新思考:AI编程时代,我们需要什么样的人?
AI能写代码,但不能写好的代码。 好代码的标准:可读、可维护、健壮、高效。这些需要工程师自己来把控。
Prompt工程师的能力是"让AI干活",但合格工程师的能力是"让AI干正确的活,并且能兜底"。如果只会写prompt,不懂边界、不懂异常、不懂架构,AI写的代码就是定时炸弹。
后来我把他的模块全部重写了,并给团队定了一条新规:AI生成的代码,作者必须逐行review并自测,提交PR时附上AI的原始提示词和修改说明。
五、最后
我不会因为这个失败的案例就不再招"Prompt工程师",但我会在面试里加一道题:"给你一个AI生成的烂代码,请你指出问题并修复。" 能答上来的,才是真正的人才。