对新人的培养(对新人培养的一些想法)
这次想谈一下对服务端研发岗新人培养的一些看法。
新人不光指应届生,社招人员进入到新的业务,也算新人,但这次只讨论应届生的培养。
自己不是专业搞培养的,只是带过几个新同学,所以有些看法也未必准确,欢迎大家积极反馈、沟通。
1.重要性
新人对于团队的发展极其重要。
新人是团队人力的重要补充。只有有充足的人力,才能更多、更快的实现需求,确保业务的快速发展,在互联网战场上争取到一席之地。
新人能够带来新的思想、新的技术。团队成员长时间在一起,大家的思想、看法慢慢会趋同,新人的到来,能够带来新的想法,让团队通过另一个视角看待问题。
新人能够让团队变得更强。人多才有慢工出细活的可能,新人培养的好,能够推动团队向更好的方向发展。
新人培养不会在短期内看到明显效果,但这是获取最终胜利不可或缺的一点。新人培养不是重要不紧急的事情,它是重要且紧急的事情。
很多团队对新人培养的关注度不够,导致团队后期青黄不接、战斗力下降。
要将新人培养好,必须付出心血。仅仅等新人自己成长,他们可能会走弯路,或者看不到方向,很多新人无法快速成长。新人培养如同种庄稼,细心照料会迎来丰收。
2.现状
要做好新人培养,需要明白新人的一些现状,正常情况下,新同学
可能存在重点知识和项目组不匹配情况,如使用的编程语言不一致、进入大数据组却完全没学习过大数据等
对公司提供的各种平台不了解
不知道各个组之间的关系,它们是如何协同的
对现有的业务代码不了解,同时缺乏相关业务经验,很难根据已有的经验快速领悟业务
没有做过一个真实的项目,不清楚要有哪些标准和流程
在学校学到很多理论知识,但并不知晓这些知识在实际业务中是如何使用的
从另一个角度看,这些并不是坏事,说明新人是一张白纸,没有“技术债”,能够更快的发展。尤其对很多大厂来说,招收标准较高,这些人能够很快的领悟与成长。
3.培养
既然新人培养如此重要,那需要做好哪些事情呢?我认为有三个阶段:小白阶段、业务骨干阶段、技术领导阶段。这三个阶段以前在文章关于程序员职业发展的思考中谈过,但更多的是从个人成长方面聊的,本次主要从培养方面来聊一下,主要谈小白阶段。
新人培养对导师也有很高的要求。
我觉得做导师有一个前提,就是要把握好度,核心在于做好指导,不要太关注于细节,不要管的过深过广。论语中的“朋友数,斯疏矣”可以很好的解释这个事情。要明白大家只是同事关系,学习、成长永远是自己的事情。做好自己的本职工作即可。
另外导师要心里有杆秤,能够做出合适的规划和正确的指导。
培养目标有两个,一个是短期目标,让新人能够尽快的适应工作并发挥作用;一个长期目标,让新人成长为更加优秀的人,能够走得更长远。
3.1工作
应届生的现状需要在本阶段过渡完成,实现从学生到研发人员的转变。这个阶段主要是打基础、模仿。
补全语言关
学校教授的编程语言知识比较基础,或者与公司使用的语言不符,为了更快的进入状态,首先需要补好语言关。
因为公司主要使用Go,就以Go为例讲述。在这个阶段,不建议阅读源码或中高阶内容,先熟悉语言、用的顺手即可,在使用过程中自然而然会有很多疑问,后期可以慢慢探索。
初级阶段,过语言关,需要做好如下几件事情
1.系统性学习语言基础知识,如语法、特性等
推荐《Go语言编程》 许式伟 吕桂华 人民邮电出版社有限公司。这本书比较基础,知识点全面,且浅显易懂。
忌似懂非懂情况下开发,不但容易导致线上问题,也不利于后期成长
2.熟悉lib库
英文版:
中文版:
lib库是开发人员的武器库,熟练掌握lib库,在开发时能起到事半功倍的效果
3.阅读Go框架并总结
可以看Gin框架,该框架为主流框架,很多大厂在此框架上自研。另外该框架代码只有1w多行,阅读量不大
可以对框架进行梳理总结Gin源码剖析,或者仿写框架Gin框架简洁版
通过框架阅读,不但可以检验对语言的掌握程度,还能知晓框架内部逻辑、设计语言,对今后的发展大有裨益
4.不断练习
编程语言一定要实际使用才会深刻,否则只是纸上谈兵
可以上力扣练习,除了能熟悉语言还能练习算法
可以自己编写开源项目
业务上的小需求可以积极参与
平台介绍
对于公司提供的各种平台
导师需要按照8/2原则,找出最常用的平台,平台最常用的功能,给新人进行讲解
新人需要学会基本使用,慢慢摸索其它平台、平台其它功能的使用
组织关系介绍
对于公司各个部门
导师需要对各个团队进行介绍,使新人了解各个部门主要职责,包括不限于研发、业务、产品、数据团队
导师需要告知各个团队接口人
行业知识
研发人员不应只是实现产品需求的木得感情的机器,研发人员一样需要感知业务。这样才能在研发的时候发现问题、提出更优的意见,后期随着影响力提升,可以和产品、业务一起探讨行进的方向。
行业知识分大环境知识和项目组知识。项目组知识比较容易理解,就是本组负责的内容。大环境知识范围比较广泛,如电商,包含内容即多且杂。
不过小白阶段不需要把大环境完全搞明白,心里记住这个事情,随着经验增加,慢慢拼凑完整。项目组知识则需要尽量搞明白,这是今后工作的基础。
大环境知识
这方面需要能回答一些问题
这个行业的发展历程是怎样的
这个行业梯队是怎样的,头部公司有哪些优势和劣势
这个行业核心指标有哪些
这个行业一般涉及哪些研发部门、组织架构是怎样的
这个行业未来发展方向是怎样的
这个行业常用技术、前沿技术有哪些
项目组知识
项目组里的知识需要深刻的掌握。掌握必然是由浅入深,不能一蹴而就。随着时间迁移,不断思考与实践,对业务慢慢会有更深的理解。
可以从大尺度到小尺度理解业务
1.了解项目组负责哪些功能模块
查看架构图
阅读业务文档
导师进行讲解
2.判断项目组核心流程是哪些
同上
3.掌握核心流程
查看技术文档
使用流程
阅读接口代码,画流程图
理解底层数据结构
4.解决、优化业务问题
追查、处理报警
解答用户、运营问题
实战
导师需要在新人入职2个星期后,带新人做一个项目。实战目标为新同学获得一定项目能力。需要注意以下几点
指导新人掌握项目基本情况,如该项目为优化项目,则需要让新人熟悉现状、现有架构等
带领新人经历整个流程,从需求对接到项目复盘,需要新人全程参与
对项目进行合理拆分,确保新人开发模块难度适宜
关注新人代码编程质量,并适时指导重构
项目过程中,锻炼新人与协同部门的沟通能力,尽快的融入大集体
项目完成后,新人对项目进行总结
3.2成长
最终能够飞得多高、走得多远,和性格强相关。现在看真的是性格决定命运。
性格需要慢慢调整,但是一些习惯却可以快速的培养。
培养习惯
习惯虽然不会立即作用于成长,但好的习惯会在今后慢慢体现,自己也会受到很多益处。对于服务端研发,有几个习惯需要重点关注一下:
归类能力
IT人做的就是信息流,但信息往往多且杂,就需要自己有很强的归类能力,保证自己能够及时准确找到所要信息,如学习资料、工作资料、目录结构等
学会深度思考
深度思考的锻炼能够让人透过现象看本质,练习方法也很简单,多问为什么,然后获取答案。
在这个过程中,不但会锻炼自己解决问题的能力,还能将自己以前所学的知识映射到实际场景中。
持续学习
计算机行业是快速发展的行业,不断有新的技术出现,而且随着自己接触面变广,也会不断发现自己不了解的知识,所以需要不断的学习
逛技术论坛、逛社区、加入高质量的技术群、看书、知识付费等
和同事多讨论技术问题
github上做开源项目
写技术博客
领导力
以前写过评价自己的标准,虽然用来判断将领是否合格,不过用来自查自己是否具有领导的素质也是可以的。智信仁勇严,各科60分表示初步能够胜任领导岗位,在后续的过程中不断提升各科分数,领导力不断提升。
4.总结
新人培养无论对于导师还是新人,都是一项挑战。
导师需要懂技术、懂业务、善于沟通、善于规划,还需要有平常心。
新人需要克服困难,尽快熟悉陌生的环境,实现自己的价值,慢慢的成长。
广告时间:字节跳动\|校园招聘!!!
最后
我的个人博客为:https://shidawuhen.github.io/
往期文章回顾: