论坛首页 综合技术论坛

【阿里感悟】如何带好新员工

浏览 62757 次
该帖已经被评为精华帖
作者 正文
   发表时间:2012-02-01   最后修改:2012-02-19

在阿里,每一位新员工进来之后都会有一位导师,导师一般都是比较资深的程序员。

 

我的导师是如何带我的

      在实战中辅导:刚来一个月就直接进入项目,从小需求做起,一开始导师会花大量的时间帮我做CodeReview,逐行审查,审查出不符合代码规范的代码(有些规范是没有写在文档中的)和写得不合理的代码,帮我提高编码能力的同时保障了项目质量。

 

      在公共场合肯定你做得好的地方,在团队的项目总结会中提出表扬和肯定。

 

      在私下说出你有待改进的地方,并解释的非常详细,这样既不会打消新员工的积极性,也能帮助新员工提高,如建议我不做过多的设计,因为设计上的灵活,会带来三个弊端,第一设计时间比较长,第二代码不易读,第三大部分以后都用不到这个扩展。所以只做必要的设计,以后再重构。

 

我是如何带实习生的

    由于实习生和正式员工不一样,我在上述三点的基础上增加了以下几点:

 

    计划驱动:互联网开发要学的东西比较多,对于实习生来说不知道该先学什么后学什么,学到什么程度。所以计划驱动比较重要,在工作和学习之前会给实习生列一份详细的学习和工作计划,并询问下实习生这个计划有没有问题,能否完成。学习之前我会大概和他讲解下,让他有个概念。比如webwork是一个什么样的框架,它是用来解决什么样的问题的,它和你用过的框架有什么优缺点。学习的周期一般比较短,主要是让他在实战中学习。

 

 

    定期沟通。 每两周都会抽时间和实习生进行一次单独沟通,每次沟通都会按照先后顺序谈以下三点。

  • 第一关心:询问下他对工作和生活的想法。询问下在公司的食堂吃的好不好,住的有没有什么问题。
  • 第二肯定:肯定下他最近工作中做的好的地方。比如很擅长提问,做事情非常积极。
  • 第三建议:首先给他一些学习的建议(遇到问题要深究原因,学习要学透不能浮于表面)和工作的建议,比如质量意识(自己写的代码要想CodeReview然后再自测,最后再提交)和团队合作意识(当团队其他成员遇到问题的时候,我们要主动去帮他解决,而不是让他一个人加班解决)。然后再说说最近工作中有待改进的地方。比如指导他如何进行有效的沟通。之前他问问题给出的描述信息太少,我必须通过不停的反问才知道他到底是在问一个什么问题,于是和他讲,沟通的时候要站在听众的角度来提问,提问的时候尽量多描述问题的细节,一旦听众听明白了就会马上回答你,否则听众必须通过不停的思考和反问去知道问题到底是什么,反问越少提问效率越高 

   每日CodeReview。由于实习生没有太多工作经验,写出的代码肯定会存在很多的问题,所以CodeReview变得尤其重要,否则有问题的代码提交到项目中,以后维护成本会非常大。为了避免问题太多难以修复,所以要求实习生尽量做到每日check in代码,我每日进行CodeReview代码。以下是使用我们团队开发的Tala CodeReview工具Review出来的问题。

 

 

 

      用提问的方式帮助学生思考。指导学生采用引导的方式比灌输的方式要更好些,学生遇到问题会提问,如果直接告诉他答案,他吸收的会非常少,所以一般我会采用提问的方式引导学生思考,比如这段代码还能进行优化吗?这两个SQL语句能不能合成一个?培养团队合作意识也会采用提问的方式,首先和他讲一个真实的案例,在XX公司里来了一位新员工,因为对系统不是很熟悉,文档又非常少,也没有导师帮他review代码,所以他修改代码的时候引发了一个严重的BUG,结果导致自己得加班到1点才解决这个问题。从这个案例中你有哪些体会?通过案例和提问让他意识到团队合作的重要性,开发的时候通过团队合作(CodeReview和交叉测试)保证质量,出现问题也应该由整个团队一起帮忙解决。

 

      对学生的要求主要有两点。第一:尽量不要问重复的问题。说过的事情必须用东西记住,这样可以节约双方的时间。比如告诉学生开发服务器root的密码,就必须马上记住。第二:定期提问。有问题首先先自己思考下,如果解决不了就先记下来,然后选择一个固定的时间一起提问。如果想到一个问题就问,自己会养成懒得思考的习惯,而且会不断打断我的工作,影响工作效率。

 

 

总结     

     作为导师的目的是培养学生,需要耐心和责任。

  • 指导需要有耐心,实习生写出的代码肯定存在很多问题,也有可能同一个问题反复出现,出现次数多了肯定会生气,但发现后指导就可以了,相信他不是故意的,下次会改正。不能一味的去指责他怎么会写出这样的代码,谁没有经历过这样的时候呢。指责多了反而会打消实习生学习的积极性,不利于学生的成长。
  • 出现问题是自己的责任,如果由于实习生的代码引起的线上的故障或BUG,不要责怪学生,而应该责怪自己,因为自己没有严格执行CodeReview。
  • 教学相长。在带学生的过程中,学生的很多问题能引起自己的思考,让自己学的东西能更加扎实,在教的过程中,自己要理清思路,整理好后和实习生讲,讲的过程中有一种温故而知新的感受。  
  • 大小: 73 KB
  • 大小: 62.6 KB
   发表时间:2012-02-05  
阿里的试用期开除率是多少?
0 请登录后投票
   发表时间:2012-02-05  
同感、非常赞同楼主。

不能仅仅是为了解决开发进度和bug fix时人手不够的问题,更需要从培养入手。

工作者,不是工具,还是战友。
既承认平等、尊重;
更重要的也要承认其优点和所长——因才善用。

胸怀

tiange 写道
阿里的试用期开除率是多少?

非常感兴趣 ^ ^
0 请登录后投票
   发表时间:2012-02-05  
不错,非常赞
0 请登录后投票
   发表时间:2012-02-05  
   非常赞
0 请登录后投票
   发表时间:2012-02-05  
带好新员工 , 凝聚整个团队 ,需要花很多心力呀 呵呵  情商也很重要
0 请登录后投票
   发表时间:2012-02-05  
tiange 写道
阿里的试用期开除率是多少?

能通过阿里的面试,代表已经被阿里所认可,所以通常在试用期是不会开除人的。
除非由于个人原因经常引发各种严重问题。
0 请登录后投票
   发表时间:2012-02-05  
      原文补充了两点:

      用提问的方式帮助学生思考。指导学生采用引导的方式比灌输的方式要更好些,学生遇到问题会提问,如果直接告诉他答案,他吸收的会非常少,所以一般我会采用提问的方式引导学生思考,比如这段代码还能进行优化吗?这两个SQL语句能不能合成一个?培养团队合作意识也会采用提问的方式,首先和他讲一个真实的案例,在XX公司里来了一位新员工,因为对系统不是很熟悉,文档又非常少,也没有导师帮他review代码,所以他修改代码的时候引发了一个严重的BUG,结果导致自己得加班到1点才解决这个问题。从这个案例中你有哪些体会?通过案例和提问让他意识到团队合作的重要性,开发的时候通过团队合作(CodeReview和较差测试)保证质量,出现问题也应该由整个团队一起帮忙解决。

      对学生的要求主要有两点。第一:尽量不要问重复的问题。说过的事情必须用东西记住,这样可以节约双方的时间。比如告诉学生开发服务器root的密码,就必须马上记住。第二:定期提问。有问题首先先自己思考下,如果解决不了就先记下来,然后选择一个固定的时间一起提问。如果想到一个问题就问,自己会养成懒得思考的习惯,而且会不断打断我的工作,影响工作效率。
0 请登录后投票
   发表时间:2012-02-05  
阿里第一年离职率75%,多数新员工
1 请登录后投票
   发表时间:2012-02-05  
lz,讲得很深刻,比较切实际,谁当初没犯过错误呢,
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics