关于研发岗位怎样做新人培训

引子

面对茫茫多的代码,开始进行逆向分析;
问老员工,老员工也是一堆一知半解的;
需要耗费大量的时间,才能稍微捋顺当前的开发内容;
各种“术语”,听不懂他们在说什么,隔了一个公司好像隔了一个世界;
devops造就了茫茫多的系统,而且很多都是低频的东西,用了过段时间就会忘记;

你是否也有碰到这些问题呢?希望本文能抛砖引玉,欢迎探讨。

背景


在万事都讲究“理论指导实践”的今天,笔者发现自己经历的以及通过别人了解到的公司,居然没有听说一家公司有专门针对研发人员展开科学的新人培训的,深感奇怪。
现在的各行各业都有标准化的流程,比如杀猪盘也有专门的 《话术本》,而对于大多数软件公司的岗位,做的工作其实也是标准流水化作业,与以前的劳工也没有什么本质区别。那么,既然存在“流水线”,那么,是不是应该都有一个标准的生产说明书呢?
image

一、新员工生命周期


当新员工进入公司的时候,面临的是新鲜,恐惧,迷茫。

  1. hr带你办理入职手续;
  2. 然后让部门人员领走;
  3. 将你放到一个角落里,好的情况下,帮你装各种环境,差的则让你自己装(装环境也很多坑);
  4. 然后领着你去认识一下别人;
  5. 给你一堆文档,让你自己看;
  6. 或者直接打开项目让你自己”逆向分析“;
  7. 尝试完成一次功能开发的生命周期,各种系统,各种权限,让人目不暇接;
  8. 公司组织新员工培训,讲一些规章制度,讲一些公司文化;
  9. 回到工位,可能有一个”师傅“带你,但是他也忙得不可开交;他教的很好,但是不成体系,只有个人意志,你想知道更多,他就无能为力了;
    。。。
  10. 三个月了,怎么报销发票?一问都不知道
  11. 支付模块出问题了,以前没做过呀,都被魔改一年了,怎么入手呢?
    。。。
  12. 离职,怎么提离职申请呢?

二、问题所在


新人: 指刚进入公司的人,业界大牛进入新公司,也是新人,应届生也是新人;
额外工作: 指除了开发意外的工作,比如考勤、请假,外部部门沟通等等;

一般的企业培训,都是公司层面的,统一安排新人进行企业文化、制度等相关培训。但是放入项目组后,基本上就“自生自灭”了。
新人需要什么呢?我们通过“5w2h”方法来分析一下开发人员需要什么:

  • WHAT——我这个岗位需要做什么?我需要跟谁去对接什么事情?我怎么开始我的工作?
  • WHY——这个地方为什么要这么做?我怎么看不懂?有没有更好的思路来缕清我的工作?
  • WHO——who can help me?找谁呀?
  • WHEN——项目周期怎么安排的?什么时候做完?
  • WHERE——我怎么下手呢?一团乱麻!
  • HOW ——怎么做?如何提高效率?如何实施?方法是什么?
  • HOW MUCH——我是不是要加班才能做完呢?要怎么估算时间?怎么安排加班呢?
    上面可能看起来有些多,说白了:
    新人对当前的状况一筹莫展;
    新人需要一个“师傅”,手把手的指导他怎么进入开发状态;可是,“师傅”也是带着业务的,经常很忙;
    新人无法描述自己的状况,甚至于不知道怎么去问;很多时候,“师傅”也不清楚问题的原因;
    image
    研发人员的劳动属于脑力劳动,表现形式区别于以前的一切体力劳动:
    比如理发师,在a店与b店剪头发的技术没有任何区别,并且形式(手工操作)也是一致的;
    比如搬砖,民工用的工具钳,怎么背,只要行为一致,产出也是一致的;
    比如种地,“庄稼活儿,不用学,人家咋做咱咋做”;
    但程序员的工作,a厂与b厂的“技术”差别就很大,这种差别来源于软件架构者针对于某种业务场景的抽象描述的不一致;
    并且,代码在研发者手里,主要是个人思路的表达,面对同一个功能,两个程序员做出来的东西也是不一样的;
    研发人员面对业务场景,表达出来的代码“千奇百怪”:
    比如各种《传奇游戏》公司,他们虽然底层软件大多数都是从别的项目进行拷贝,但是上层业务逻辑会面向c端,进行各种各样的开发;
    我们看到网络上的各种web网站,前端代码能够复用的数量也微乎其微(当然,比如框架层的东西除外,比如vue,react这些);

那怎样才能让研发人员快速找到状态呢?

三、怎么解决


翻遍中文互联网,各个专业的论文网站,针对新员工培训的方式都是企业层面的;
而在业务组内部的培训,几乎很少提及,并没有站在“新人”(其实也是我们个人)的角度来阐述怎么进行新人培训。

首先明确,新人需要什么:

  1. 我想快速的进入开发过程;
  2. 我想知道底层的实现原理,方便我面对不同的场景时候,可以快速适用;
  3. 专注于工作本身,尽量隔离额外的工作;
  4. 我想证明自己,可以胜任我的工作;
  5. 我很棒!!!

一般公司采用的都是“学徒制”,老人带新人,效果感觉一般。因为老人的水平参差不齐,老人的身上都带着工作量,无法分出太多时间进行指导。

个人认为,解决这些问题的症结,在于文档与mvp(最小可执行项目Minimum Viable Product,区别于产品的mvp,切记!!!)——虽然这非常难,不过也不是不能做。
对大多数人来说,他们看到的只有自己周边的一些事物。老员工也有很多看不到的地方,不懂的地方。
image
这里,受限于个人水平,只想到了对于研发一线岗位应该怎么做:

  1. 整理软件说明书,包括wiki,工作流(git 或者其他),工具,开发原则,各种规范,整个软件生命周期的各个主要节点;
  2. 对于常用 “额外工作”,出产文档,方便快速解决;
  3. 创建当前软件的mvp项目,并且拥有一个简洁的上层业务功能模块模板;
  4. 让新人在当前mvp上进行简单模块开发,熟悉怎么开发模块;
  5. 每个主要模块,都要有一个设计文档,按照一个模板进行编写,多使用UML以及其他图例;
  6. 尝试做一些与外部部门结合的功能,大致了解沟通流程;
  7. 整个新人周期都要补充以前的文档;
  8. 摸鱼期间多多专研项目mvp,理解底层逻辑;

文档原则:

  • 能用图解释的,尽量用图;
  • 能用抽象语言解释的,尽量用抽象语言,如设计模式;
  • 语言尽量通用,公司用语与行业用语统一;

MVP原则:

  • 最少依赖别的模块;
  • 最少有上层业务模块;
  • 最少依赖外界;

企业文化对于一线员工来说无关痛痒,一线员工感受的企业文化其实只是小组leader的个人情感,其次是同事之间的氛围。

参考资料:

  1. 《高质量学徒制:G20愿景与中国行动研究》
  2. 《软件外包公司新入职员工培训研究》工程硕士生: 韩 琳
  3. 《中小企业新员工入职培训问题研究 — 从深圳市X企业为例》宋艳
  4. 《一份有价值的学徒制度调研报告》 臧志军
  5. 5w2h
    6.《MVP是什么》 https://www.zhihu.com/question/47489768

图片从百度搜索的,侵权删。

原文地址:https://www.cnblogs.com/wyy5552/p/14665062.html