第十七章 带新人
一
新人叫张小龙。
不是那个做微信的张小龙,是一个刚毕业的、瘦瘦高高的、戴着一副圆框眼镜的张小龙。
他是计算机专业毕业的,但简历上的项目经验全是课程设计——一个图书管理系统、一个学生选课系统、一个聊天室。面试的时候表现一般,但赵北辰(虽然去了新项目,但还参与面试)说了一句:"这孩子眼神里有光,跟当初的小胖一样。"
于是张小龙入职了。
周旋经理把他分到了王志远的模块下,让王志远带。
"志远,你带一下新人。"周旋说。"你当初是赵北辰带出来的,现在轮到你了。"
王志远看着张小龙,想起了一年前的自己——一样的紧张,一样的手足无措,一样的不敢说话。
"你好,我叫王志远。"他伸出手。"大家都叫我小胖。"
张小龙怯怯地握了握他的手:"王……王哥好。"
"叫我小胖就行。"
"小……小胖哥。"
王志远笑了。这个称呼有点奇怪,但他不介意。
二
带新人的第一天,王志远做了一件赵北辰当初没有做的事——他给张小龙写了一份新人入职指南。
# 新人入职指南
## 第一周:环境搭建 + 熟悉代码
1. 开发环境搭建(见附件:环境搭建手册)
2. 克隆代码仓库,本地跑通项目
3. 阅读系统架构文档(重点看模块划分和数据流)
4. 阅读编码规范文档
5. 完成一个"Hello World"级别的小任务(熟悉提交流程)
## 第二周:熟悉业务 + 小任务
1. 阅读产品需求文档,了解核心业务流程
2. 跟产品经理聊一次,了解用户是谁、痛点是什么
3. 完成 2-3 个简单的 bug 修复(熟悉代码结构)
4. 参加所有 Scrum 会议,先听不用说
## 第三周:独立任务
1. 接一个小需求,独立完成(从需求确认到代码提交)
2. 写第一个 PR,接受 Code Review
3. 遇到问题先自己查 15 分钟,查不到再问
## 日常规则
- 每天下班前跟我同步一下进度(5 分钟就够)
- 遇到阻塞及时说,不要闷头死磕超过 1 小时
- 犯错不要紧,但同一个错不要犯两次
- 提交代码前先自己 Review 一遍
他把这份指南发给张小龙的时候,张小龙的眼睛亮了一下:"小胖哥,这个太有用了。我之前实习的时候,第一天就被扔到代码里自己看,看了一周都不知道从哪里开始。"
王志远笑了笑。他想起自己入职第一天,赵北辰虽然很耐心,但也没有给他一份这样的指南。他是在摸爬滚打中慢慢摸索出来的。
现在他把这些摸索出来的经验整理成了文档,让下一个人不用再走弯路。
这就是知识传递的意义。
三
张小龙的第一周,跟王志远当初一样——充满了各种"低级"问题。
"小胖哥,Maven 下载依赖一直报错怎么办?"
"小胖哥,这个接口返回 404 是什么意思?"
"小胖哥,我的代码在本地跑得好好的,为什么到测试环境就报错了?"
王志远耐心地一个一个解答。他发现自己在解答的过程中,经常会想起赵北辰当初是怎么教他的。
赵北辰从来不直接给答案。他会问:"你觉得是什么原因?""你试过什么方法?""错误信息里有什么线索?"
王志远也学着这样做。
张小龙问"Maven 报错怎么办"的时候,他没有直接帮他改配置,而是问:"错误信息是什么?你搜过这个错误信息吗?"
张小龙说:"搜了,但搜出来的答案太多了,不知道哪个对。"
"那你怎么判断哪个答案是对的?"
"……看点赞数?"
王志远笑了:"点赞数高不代表适合你的情况。你要看答案里描述的场景跟你的场景是不是一样的——操作系统一样吗?Maven 版本一样吗?错误信息完全一致吗?"
张小龙恍然大悟:"哦!我的 Maven 版本是 3.9,那个答案是针对 3.6 的,难怪不管用。"
"对。搜索问题的时候,要带上版本号和关键错误信息。这样搜出来的结果更精准。"
王志远发现,教别人的过程,其实也是在巩固自己的知识。很多东西他以为自己懂了,但在教的时候才发现,自己只是"会用",并没有真正理解"为什么"。
比如张小龙问他"为什么本地跑得好好的,测试环境就报错",他一开始想说"可能是环境配置不一样",但张小龙追问"哪里不一样"的时候,他才认真去对比了两个环境的差异,发现是 JDK 版本不同导致的一个 API 行为差异。
这个问题他自己之前也遇到过,但当时只是换了个写法绕过去了,没有深究原因。现在为了给张小龙讲清楚,他不得不把原因搞明白。
费曼学习法,又一次验证了。
四
张小龙的第二周,王志远让他修一个简单的 bug——用户列表页面的分页参数没有校验,传入负数会报错。
张小龙花了半天修好了,提交了 PR。
王志远 Review 的时候,看到了一段熟悉的代码:
if (pageNum != null) {
if (pageNum > 0) {
// 正常逻辑
} else {
pageNum = 1;
}
} else {
pageNum = 1;
}
他笑了。这段代码跟他一年前写的一模一样——嵌套的 if-else,重复的 pageNum = 1。
他在 Review 评论里写了一条:
这段逻辑可以简化。试试用卫语句(Guard Clause)重写?
提示:先处理异常情况,提前返回默认值,最后处理正常情况。
张小龙改了一版:
if (pageNum == null || pageNum <= 0) {
pageNum = 1;
}
// 正常逻辑
两行代码,替代了原来的七行。逻辑一模一样,但清晰了十倍。
王志远在 Review 里回复:"完美。这就是卫语句的力量——先排除异常,再处理正常。代码读起来像说人话:'如果页码无效,就用默认值。'"
他想起一年前苏薇给他的 Review——十七条评论,其中就有一条是关于嵌套 if-else 的。现在他把同样的知识传递给了下一个人。
知识就是这样流动的——从赵北辰到他,从他到张小龙。
五
带新人最难的部分,不是技术问题,而是心态问题。
张小龙在第三周接了一个小需求——给后台管理页面加一个数据导出功能。需求不复杂,但张小龙做了三天还没做完。
王志远去看了一下他的进度,发现他卡在了一个地方——Excel 导出的格式要求跟他之前做过的不一样,他不知道怎么处理。
"你卡了多久了?"王志远问。
"……两天。"
"两天?!你为什么不来问我?"
张小龙低着头:"我怕你觉得我笨。"
王志远愣了一下。
他想起自己入职第一个月的时候,也是这样——遇到问题不敢问,怕别人觉得自己笨,怕给别人添麻烦。结果问题越积越多,进度越拖越慢。
"小龙,"他说,"我跟你说一个我入职第一天的故事。"
他把"差点删全表"的故事讲了一遍。张小龙听得目瞪口呆。
"所以你看,我入职第一天就差点闯了大祸。但我的 mentor 没有骂我,他说了一句话:'别怕犯错,怕的是犯了错不知道为什么。'"
他看着张小龙:"遇到问题不问,不是因为你笨,是因为你还没学会'求助'这个技能。求助不丢人,闷头死磕两天才丢人——因为你浪费了两天时间,而这个问题可能十分钟就能解决。"
张小龙低下头,假装在看键盘。
"以后记住一个规则:十五分钟法则。遇到问题,先自己查十五分钟。十五分钟内解决了,说明你有能力自己搞定。十五分钟没解决,立刻来问我。不要觉得不好意思。"
张小龙点了点头。
那天下午,他来问了王志远三次。每次王志远都耐心地解答了。
第三次的时候,张小龙说:"小胖哥,谢谢你。"
王志远拍了拍他的肩膀:"不用谢。我当初也是这么过来的。"
六
一个月后,张小龙的进步肉眼可见。
他能独立完成简单的需求了,PR 的 Review 评论从十几条降到了三四条,站会上也敢发言了——虽然声音还是有点小。
有一天,王志远在 Review 张小龙的代码时,发现了一段写得特别好的逻辑——一个用 Stream API 实现的数据转换,简洁、高效、可读性强。
他在 Review 里写了一条:"这段代码写得很好,比我当初写的强。"
张小龙回复了一个害羞的表情。
王志远看着这个表情,嘴角不自觉地翘了一下。
他突然理解赵北辰了——看着自己带的人一点一点成长,这感觉比自己写出一段漂亮的代码还上头。
七
有一天,苏薇路过王志远的工位,看到他在给张小龙讲解设计模式。
她停下来听了一会儿,然后说了一句:"小胖,你带人的方式跟赵哥很像。"
"是吗?"
"嗯。不直接给答案,引导他自己想。这是最好的带人方式。"
她顿了一下:"但你比赵哥多了一样东西——你给新人写了入职指南。赵哥当初没给你写。"
"所以我才写。"王志远说。"我当初走过的弯路,不想让下一个人再走。"
苏薇看了他一眼,嘴角微微上扬:"你长大了。"
这是苏薇说过的最温柔的一句话。
八
那天晚上,王志远在笔记本上写下:
Day 210
带新人一个月了。教是最好的学——在教张小龙的过程中,我发现了很多自己以为懂了但其实没懂的东西。原来"会做"和"能讲清楚"之间,还隔着一道坎。
苏薇今天说了三个字:"你长大了。"没有前缀,没有后缀,就三个字。但我觉得这是她对我说过的最好的话。
知识的流动:赵哥 → 我 → 张小龙。看着小龙成长的感觉,比自己成长还开心。也许这就是"传承"的意义吧。
:::{admonition} 小胖的笔记 :class: tip
本章知识卡片:Mentor 与知识传递
1. Mentor 的职责
| 职责 | 做什么 | 不做什么 |
|---|---|---|
| 引导 | 提问引导对方思考 | 直接给答案 |
| 保护 | 帮新人避开已知的坑 | 替新人做决定 |
| 反馈 | 及时给出建设性反馈 | 只说"不错"不说具体 |
| 示范 | 用自己的行为做榜样 | 说一套做一套 |
| 放手 | 逐步增加任务难度 | 一直只给简单任务 |
2. 十五分钟法则
遇到问题
│
▼
自己查 15 分钟
│
├── 解决了 → 记录解决方案,下次不用再查
│
└── 没解决 → 整理问题(我试了什么、卡在哪里),然后去问人
问人的正确姿势: - ❌ "这个怎么做?" - ✅ "我在做 XX,遇到了 YY 问题。我试了 A 和 B 方法,都不行。错误信息是 ZZ。你有什么建议吗?"
3. 新人入职指南模板
第 1 周:环境搭建 + 熟悉代码
第 2 周:熟悉业务 + 小任务(bug 修复)
第 3 周:独立小需求
第 4 周:参与正式 Sprint
4. 知识传递的方式
| 方式 | 效率 | 可扩展性 | 适用场景 |
|---|---|---|---|
| 一对一指导 | 高 | 低 | 复杂问题、新人初期 |
| 文档 | 中 | 高 | 通用知识、流程规范 |
| 技术分享 | 中 | 中 | 团队知识同步 |
| Code Review | 高 | 中 | 编码规范、最佳实践 |
| Pair Programming | 最高 | 最低 | 复杂任务、快速上手 |
核心原则:教是最好的学。知识在传递中增值。
:::