##当前方案
###介绍 当前公司采取的方案是,让新人直接切入现有的项目,从真实环境着手,从小功能或者小bug做起。 比如说客户端会从现有的bug清单中找一个小bug出来,服务器会从现有的功能清单中找一个小功能出来,给新人练手。 让新人一边熟悉公司框架,公司开发流程,一边进行真实项目的实战,积累项目经验。
###存在问题
- 过程不可控。 由于新人需要处理的bug或者功能是负责人主观选择的,在难度或者工作量的评估上可能会有问题。比如该bug是其他模块或者bug导致的。该功能与其他功能有相互依赖关系等。出现了一些负责人没有考虑过的问题。
- 浪费其他员工的指导时间 新人一般会有一个导师,有问题会请求导师的指导。新人需要处理的bug和功能,是当前项目中的真实问题,这个问题可能导师也不是很清楚。虽然导师在项目的熟悉度上会深一些,但是还是不免会浪费大量的时间在帮助新人debug上。
- 给项目留下技术隐患 新人最终完成了bug或者新功能。但是毕竟是新人,对项目把握和考虑问题的深度可能会留下技术隐患,就像定时炸弹,不知道何时会爆发。尤其那些后序跟踪工作不到位的公司,没有充分测试,没有代码审核,这是非常危险的。
##建议方案
###介绍 专门为入职技术引导设计一个题目。该题目可能源自于真实项目,但是跟当前的项目没有关系,纯粹是练习目的的。 貌似很多大公司都是这样的,类似新手任务。 笔者之前呆过的一个公司就是入职后,有专门的新人培训教程,给一周时间,完成一个固定的功能模块。模块本身涉及了今后要用到的框架的大部分内容和大部分流程。
###针对当前方案问题的对比 下面就拿建议方案(下面统称新方案)和当前方案(下面统称旧方案)存在的问题做一个对比说明。
- 过程可控。新方案的课题是特别设计的,需求的各个细节都是可控的。由于所有的人都会使用这个课题,在这个过程中可以对课题的可控性进行不断优化。
- 导师的时间成本节省。由于课题是特别设计的,不断完善的,并且每个人都经历过,所以每个人对它都很熟悉。当新人遇到问题时,导师可以很快确定问题是新人手误造成还是该课题必经阶段,然后给予正确的指导。
- 不会对当前进行项目留下影响。这点很显然,课题是独立的,专为引导而生,和当前项目没有半点关系,不会造成有任何影响。
- 由于课题是特别设计的,我们可以尽可能的让它涵盖新人需要了解的所有方面,这些可能是实际项目中的问题不能覆盖的。