对新人培养的一些想法

1,662 阅读10分钟

这次想谈一下对服务端研发岗新人培养的一些看法。

新人不光指应届生,社招人员进入到新的业务,也算新人,但这次只讨论应届生的培养。

自己不是专业搞培养的,只是带过几个新同学,所以有些看法也未必准确,欢迎大家积极反馈、沟通。

1.重要性

新人对于团队的发展极其重要。

  1. 新人是团队人力的重要补充。只有有充足的人力,才能更多、更快的实现需求,确保业务的快速发展,在互联网战场上争取到一席之地。

  2. 新人能够带来新的思想、新的技术。团队成员长时间在一起,大家的思想、看法慢慢会趋同,新人的到来,能够带来新的想法,让团队通过另一个视角看待问题。

  3. 新人能够让团队变得更强。人多才有慢工出细活的可能,新人培养的好,能够推动团队向更好的方向发展。

新人培养不会在短期内看到明显效果,但这是获取最终胜利不可或缺的一点。新人培养不是重要不紧急的事情,它是重要且紧急的事情。

很多团队对新人培养的关注度不够,导致团队后期青黄不接、战斗力下降。

要将新人培养好,必须付出心血。仅仅等新人自己成长,他们可能会走弯路,或者看不到方向,很多新人无法快速成长。新人培养如同种庄稼,细心照料会迎来丰收。

2.现状

要做好新人培养,需要明白新人的一些现状,正常情况下,新同学

  1. 可能存在重点知识和项目组不匹配情况,如使用的编程语言不一致、进入大数据组却完全没学习过大数据等

  2. 对公司提供的各种平台不了解

  3. 不知道各个组之间的关系,它们是如何协同的

  4. 对现有的业务代码不了解,同时缺乏相关业务经验,很难根据已有的经验快速领悟业务

  5. 没有做过一个真实的项目,不清楚要有哪些标准和流程

  6. 在学校学到很多理论知识,但并不知晓这些知识在实际业务中是如何使用的

从另一个角度看,这些并不是坏事,说明新人是一张白纸,没有“技术债”,能够更快的发展。尤其对很多大厂来说,招收标准较高,这些人能够很快的领悟与成长。

3.培养

既然新人培养如此重要,那需要做好哪些事情呢?我认为有三个阶段:小白阶段、业务骨干阶段、技术领导阶段。这三个阶段以前在文章关于程序员职业发展的思考中谈过,但更多的是从个人成长方面聊的,本次主要从培养方面来聊一下,主要谈小白阶段。

新人培养对导师也有很高的要求。

我觉得做导师有一个前提,就是要把握好度,核心在于做好指导,不要太关注于细节,不要管的过深过广。论语中的“朋友数,斯疏矣”可以很好的解释这个事情。要明白大家只是同事关系,学习、成长永远是自己的事情。做好自己的本职工作即可。

另外导师要心里有杆秤,能够做出合适的规划和正确的指导。

培养目标有两个,一个是短期目标,让新人能够尽快的适应工作并发挥作用;一个长期目标,让新人成长为更加优秀的人,能够走得更长远。

3.1工作

应届生的现状需要在本阶段过渡完成,实现从学生到研发人员的转变。这个阶段主要是打基础、模仿。

补全语言关

学校教授的编程语言知识比较基础,或者与公司使用的语言不符,为了更快的进入状态,首先需要补好语言关。

因为公司主要使用Go,就以Go为例讲述。在这个阶段,不建议阅读源码或中高阶内容,先熟悉语言、用的顺手即可,在使用过程中自然而然会有很多疑问,后期可以慢慢探索。

初级阶段,过语言关,需要做好如下几件事情

  1. 系统性学习语言基础知识,如语法、特性等
  • 推荐《Go语言编程》 许式伟 吕桂华 人民邮电出版社有限公司。这本书比较基础,知识点全面,且浅显易懂。

  • 忌似懂非懂情况下开发,不但容易导致线上问题,也不利于后期成长

  1. 熟悉lib库
  1. 阅读Go框架并总结
  • 可以看Gin框架,该框架为主流框架,很多大厂在此框架上自研。另外该框架代码只有1w多行,阅读量不大

  • 可以对框架进行梳理总结Gin源码剖析,或者仿写框架Gin框架简洁版

  • 通过框架阅读,不但可以检验对语言的掌握程度,还能知晓框架内部逻辑、设计语言,对今后的发展大有裨益

  1. 不断练习
  • 编程语言一定要实际使用才会深刻,否则只是纸上谈兵

  • 可以上力扣练习,除了能熟悉语言还能练习算法

  • 可以自己编写开源项目

  • 业务上的小需求可以积极参与

平台介绍

对于公司提供的各种平台

  • 导师需要按照8/2原则,找出最常用的平台,平台最常用的功能,给新人进行讲解

  • 新人需要学会基本使用,慢慢摸索其它平台、平台其它功能的使用

组织关系介绍

对于公司各个部门

  • 导师需要对各个团队进行介绍,使新人了解各个部门主要职责,包括不限于研发、业务、产品、数据团队

  • 导师需要告知各个团队接口人

行业知识

研发人员不应只是实现产品需求的木得感情的机器,研发人员一样需要感知业务。这样才能在研发的时候发现问题、提出更优的意见,后期随着影响力提升,可以和产品、业务一起探讨行进的方向。

行业知识分大环境知识和项目组知识。项目组知识比较容易理解,就是本组负责的内容。大环境知识范围比较广泛,如电商,包含内容即多且杂。

不过小白阶段不需要把大环境完全搞明白,心里记住这个事情,随着经验增加,慢慢拼凑完整。项目组知识则需要尽量搞明白,这是今后工作的基础。

大环境知识

这方面需要能回答一些问题

  1. 这个行业的发展历程是怎样的

  2. 这个行业梯队是怎样的,头部公司有哪些优势和劣势

  3. 这个行业核心指标有哪些

  4. 这个行业一般涉及哪些研发部门、组织架构是怎样的

  5. 这个行业未来发展方向是怎样的

  6. 这个行业常用技术、前沿技术有哪些

项目组知识

项目组里的知识需要深刻的掌握。掌握必然是由浅入深,不能一蹴而就。随着时间迁移,不断思考与实践,对业务慢慢会有更深的理解。

可以从大尺度到小尺度理解业务

  1. 了解项目组负责哪些功能模块
  • 查看架构图

  • 阅读业务文档

  • 导师进行讲解

  1. 判断项目组核心流程是哪些
  • 同上
  1. 掌握核心流程
  • 查看技术文档

  • 使用流程

  • 阅读接口代码,画流程图

  • 理解底层数据结构

  1. 解决、优化业务问题
  • 追查、处理报警

  • 解答用户、运营问题

实战

导师需要在新人入职2个星期后,带新人做一个项目。实战目标为新同学获得一定项目能力。需要注意以下几点

  1. 指导新人掌握项目基本情况,如该项目为优化项目,则需要让新人熟悉现状、现有架构等

  2. 带领新人经历整个流程,从需求对接到项目复盘,需要新人全程参与

  3. 对项目进行合理拆分,确保新人开发模块难度适宜

  4. 关注新人代码编程质量,并适时指导重构

  5. 项目过程中,锻炼新人与协同部门的沟通能力,尽快的融入大集体

  6. 项目完成后,新人对项目进行总结

3.2成长

最终能够飞得多高、走得多远,和性格强相关。现在看真的是性格决定命运。

性格需要慢慢调整,但是一些习惯却可以快速的培养。

培养习惯

习惯虽然不会立即作用于成长,但好的习惯会在今后慢慢体现,自己也会受到很多益处。对于服务端研发,有几个习惯需要重点关注一下:

  1. 归类能力

    IT人做的就是信息流,但信息往往多且杂,就需要自己有很强的归类能力,保证自己能够及时准确找到所要信息,如学习资料、工作资料、目录结构等

  2. 学会深度思考

    深度思考的锻炼能够让人透过现象看本质,练习方法也很简单,多问为什么,然后获取答案。

    在这个过程中,不但会锻炼自己解决问题的能力,还能将自己以前所学的知识映射到实际场景中。

  3. 持续学习

    计算机行业是快速发展的行业,不断有新的技术出现,而且随着自己接触面变广,也会不断发现自己不了解的知识,所以需要不断的学习

  • 逛技术论坛、逛社区、加入高质量的技术群、看书、知识付费等

  • 和同事多讨论技术问题

  • github上做开源项目

  • 写技术博客

领导力

以前写过评价自己的标准,虽然用来判断将领是否合格,不过用来自查自己是否具有领导的素质也是可以的。智信仁勇严,各科60分表示初步能够胜任领导岗位,在后续的过程中不断提升各科分数,领导力不断提升。

4.总结

新人培养无论对于导师还是新人,都是一项挑战。

导师需要懂技术、懂业务、善于沟通、善于规划,还需要有平常心。

新人需要克服困难,尽快熟悉陌生的环境,实现自己的价值,慢慢的成长。

广告时间字节跳动|校园招聘!!!

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:shidawuhen.github.io/

往期文章回顾:

  1. 设计模式

  2. 招聘

  3. 思考

  4. 存储

  5. 算法系列

  6. 读书笔记

  7. 小工具

  8. 架构

  9. 网络

  10. Go语言