AI 帮你交差之后:实习生的真正战场在「交差之外的 30 分钟」

wescode · 2026-12-04 · 实习 / 职业发展 / AI编程 / 学习方法 / 程序员成长

利益声明:本文作者参与了 wescode 的开发。文中涉及 wescode 的技术描述基于内部测试数据;涉及其他工具的描述基于各家公开文档和社区反馈。

一位实习生的原话:

"公司交付模式:任务多以整块 CRUD、完整业务模块作为开发单元;考核只看最终输出,只要符合业务需求即可,不关心我内部实现过程。开发体验浮光掠影,只是拿到结果,缺少深度思考的过程。"

这段话精准描述了 2026 年很多初级工程师的困境。

AI 帮你 2 小时搞定了以前 2 天的活。你交了差。KPI 达标。但你回头看——你什么都没学到。

这不是你的问题。这是整个行业在 AI 冲击下还没想清楚的事。


你慌的不是 AI 太强,而是你发现自己在做 AI 最擅长的事

重新读一遍上面的交付模式:

翻译成大白话:公司需要你把需求翻译成代码。

这恰好是 AI 最擅长的事——它本质上就是一个"需求 → 代码"的翻译器。

以前你用脑子翻译,现在你用 Cursor / Trae 翻译。效率高了 5 倍。但你的角色没变——还是翻译员。

你的慌,不是 AI 太强了,而是你意识到自己的工作被精确地放在了"AI 替代区"里:

程序员工作分布与 AI 替代区

一个有经验的工程师每天的时间分布:

工作占比AI 能替代多少
理解需求、和 PM/设计对齐30%几乎不能
找到该改哪里、看影响面20%需要项目级理解
审查代码质量(自己的+别人的)20%部分能帮
写代码15%AI 几乎能完全替代
联调、排查、处理线上问题15%部分能帮

实习岗位分配给你的全是"写代码"那 15%。AI 帮你做完了,你觉得自己什么都没学到——因为 AI 替代的恰好是你被分配到的那一块。

问题不是 AI,是实习岗位只让你接触了冰山尖尖。


30 分钟规则:每个任务交差之后多花 30 分钟

这是本文的核心方法。

AI 帮你 2 小时搞定一个 CRUD 模块。不要把省下来的时间全部还给公司。拿 30 分钟做 AI 不会帮你做的事——这 30 分钟是你整段实习里真正在学东西的时间。

第一个 5 分钟:读 AI 生成的代码

不是扫一眼"能跑就行"——是逐函数读,问自己三个问题:

Q1:这段代码为什么这么写?

// AI 生成的用户列表查询
async getUsers(page: number, size: number) {
  const [users, total] = await this.userRepo.findAndCount({
    skip: (page - 1) * size,
    take: size,
    order: { createdAt: 'DESC' },
    where: { deletedAt: IsNull() },
  })
  return { users, total, page, size }
}

问自己:

Q2:和项目其他模块的写法一致吗?

打开项目里另一个类似的模块(比如 OrderService),对比一下。你可能发现:

这些不一致才是你学东西的地方。 每一个不一致的背后,都有一个项目约定需要你去发现。AI 写的代码能跑,但和你们项目的写法完全不像——这才是值得花时间去理解的差距。

Q3:这段代码少了什么?

AI 生成的代码通常只包含"正常路径"。问自己:

你在做的事:训练工程判断力。从"能跑"到"可靠"之间的差距,就藏在这些问题里。

第二个 10 分钟:找影响面

你写了一个 UserService。问自己:

这个 Service 被谁调用了?

UserController.getUsers()        → 调用你的 UserService.getUsers()
OrderService.createOrder()       → 调用你的 UserService.findById()
AuthMiddleware.validateToken()   → 调用你的 UserService.findById()
CronJob.dailyReport()            → 调用你的 UserService.countActive()

如果你改了 findById 的返回格式,上面有 3 个调用方需要跟着改。你知道吗?

大部分实习生不知道。因为任务只交代了"写 UserService",没人让你看谁在调用你。

但三年经验的老工程师改任何一个函数之前,脑子里都有这张调用关系图。这张图不是靠写代码攒出来的——是靠主动去看攒出来的。

wescode 的 CKG(代码知识图谱)能自动生成这张图——改一个函数,CKG 告诉你三层调用链上还有哪 8 个地方要跟着改。但即使你不用 wescode,手动搜一遍 Find References 也能做到类似的事。关键是你得知道要做这件事。不看调用方就动手改,"改一处漏三处"几乎是必然的。

第三个 15 分钟:写技术笔记

这是 30 分钟里价值最高的部分。

不是代码。是一段回答"为什么"的文字。

## 用户管理模块实现笔记 2026-12-04

### 设计决策
1. 分页用 offset 模式,不用 cursor 模式。
   原因:后台管理页面,数据量不大,offset 够用。
   如果用户量上万,应该改 cursor 分页。

2. 软删除用 deletedAt 字段标记。
   项目约定,没有写在文档里。
   我是看 OrderEntity 才发现的。

### AI 生成后我改了什么
1. 把 throw new Error 改成 throw new BizException。
   原因:项目统一错误处理中间件只认 BizException。

2. 返回格式从原始对象改成 { code, data, msg }。
   原因:前端统一从 data 里取值。

3. 分页参数从 page/size 改成 pageNum/pageSize。
   原因:和其他接口保持一致。

### 我不确定的地方
1. findById 查不到用户时应该返回 null 还是抛异常?
   项目里两种写法都有。需要问 mentor。

2. 批量删除应该用事务吗?
   AI 没有加事务。但如果删到一半失败了,数据会不一致。

这段笔记为什么值钱?


你积累的到底是什么

半年实习,每个任务 30 分钟额外投入。你会积累出什么?

从操作员到工程师:半年成长路径

时间积累
第 1 个月20+ 条"项目约定"笔记。你开始知道哪些规矩没写在文档里
第 2 个月开始能看出 AI 生成的代码哪里不对。你改的不再是"按 mentor 说的改",而是"我知道应该这么改"
第 3 个月你的影响面意识建立了。改一个函数之前,你会先想"谁在调用它"——mentor 注意到了,开始把更复杂的任务交给你
第 4-6 个月你的技术笔记本积累了 50+ 条设计决策。面试时别人背八股文,你讲真实项目的取舍——面试官一听就知道你做过真项目

你不是不用 AI 了——你是从"AI 替代你写代码"进化到了"你指导 AI 写正确的代码"。


什么能力是 AI 替代不了的

你的慌其实在问一个更深的问题:AI 降低了门槛,那普通程序员的"护城河"到底是什么?

AI 能做AI 做不了
写一个 CRUD 模块判断这个模块应该放在用户服务还是订单服务里
实现一个排序函数判断这个排序在大数据量下是否合理
生成单元测试判断该测哪些边界条件(空值?并发?超大输入?)
修一个 bug预判修复这个 bug 会不会引出另一个 bug
按 API 文档生成调用代码在三个 API 方案之间做技术选型
写 SQL 查询判断这个查询在 100 万条数据下还能不能用

右边那一列有一个共同特征:需要判断力。

判断力 = 理解 + 经验 + 对项目的全局认识。

它不是从写 CRUD 中积累的——是从"理解为什么这么写、改了会怎样"中积累的。


关于工具选择

你说公司用 Trae、Cursor。这两个工具帮你写代码,但不帮你理解项目结构。

作为参与 wescode 开发的人,客观说几个差异:

场景Trae / Cursorwescode
写代码✅ 足够✅ 足够
"这个函数被谁调用了"❌ 需要手动搜✅ CKG 调用图自动显示
"这段代码违反了项目哪条规矩"❌ 你自己发现✅ CSE 自动检测 + 提醒
"改完影响了哪些文件"❌ 你自己排查✅ CKG 影响面分析
月费Cursor Pro ¥145/月 / Trae 免费BYOK 约 ¥8-15/月

但说实话——实习期间工具差异不是核心。核心是上面说的学习方式。

如果你只有 Trae(免费),完全可以实践 30 分钟规则——手动读代码、手动搜调用方、手动写笔记。工具只是让这个过程更快,但过程本身才是你学东西的地方。AI 编程工具已经到了第三代,但选工具之前,先把学习习惯建立起来。


你的慌,恰好是你最大的优势

大部分实习生用 AI 做完任务、交了差、心安理得走了——他们才是真正应该慌的人。

你意识到了"快速交付"和"真正学到"之间的鸿沟。这种自觉在初级工程师里非常稀缺。

不要少用 AI——那会拖团队进度。

在 AI 帮你省下的时间里,做 AI 不会帮你做的事。

30 分钟。每个任务 30 分钟。半年后你会发现:别人在问"AI 会不会取代我",而你已经变成了那个"指导 AI 写正确代码"的人。


参考