我们应该如何面试程序员/技术人员?

看到我在GTEC的同事的一封email,说的是他在面试别人的时候一些心得。其中有这么一段话,写得非常好:

在以后的面试中,建议大家认真阅读应聘者的简历,在应聘者擅长的领域里去问问题,去了解应聘者在软件技术支持方面的潜力。避免问一些只有我们自己才可能知道答案的技术问题,并以能不能答得上来为标准进行取舍。

我曾经犯过这样的错误。我在GTEC工作最初的大半年时间里面,我学了很多很多微软的东西,包括编程的、包括产品的,长进极大。也同样是在那段时间前后,我发现我对几乎所有的被我面试的人(大部分是大四或者研二的实习生)的comment都是“技术很一般”或者类似评语。突然有一天我发现了这个情况,当时就想通了一个道理:我当初应聘微软时的水平,未必比现在那些被我评价为“技术一般”的应聘者的水平高。

我还犯过一个错误。去年(可能是前年了,忘了),当时我们招实习生,为开发一些内部的Web平台招。最后剩下两个,A和B。A在面试时对ASP.NET、 CSharp以及SQL的一些中等级别的技术问题答得很不错;B只对ASP有经验,对.NET还刚刚入门。当时我选择了A,选择的理由是技术不错,来之能战。而B去了另外一个team,也是做ASP.NET的开发。结果我发现,开始工作后,与A的交流非常困难,缺乏commitment和 accountability,对take ownership的理解也很差,缺乏主动性,技术上遇到了阻碍也不向别人咨询;而B在另一个team融入得非常好,交给他的工作总是能按时完成,.NET的技术也很快补上了,至少足够用了。

从这个错误里面我学到的东西是:千万别太看重技术。技术是可以学的,没有任何技术是一两个月学不会的——那时候我头一次到CSDN答帖子做支持的时候,刚刚接触C#才两个礼拜;相比之下,人品、commitment & accountability、沟通能力、提问技巧、quick learning等,却是无法在几个月内迅速改变的。类似的,如果招一个Consultant,也应该更看重对行业的了解,而不是看重对产品的了解。产品知识容易学,行业经验积累就难了。

因此,面试程序员/技术人员的时候,最关键(也是最难的)是看应聘者的“人品”(广义的)。尤其是对于像微软这种公司来说,更是如此。因为如果单论技术,恐怕任何应聘者的技术都是不qualified的。比如说,测试方面,本来嘛,微软产品组的测试就已经做的非常好了,在整个业界是领先的,而且大大领先于国内软件业的测试水平,因此,从国内招人招不到合格的测试工程师是很正常的——反之倒是不正常的:如果国内高水平的测试工程师很多,那么国内的软件测试水平也不会是现在这个样子了。同样道理,对于一些微软的技术来说(比如Windows操作系统,比如.NET,一些具体的实现,比如CLR上的),微软产品组和技术支持部门的人一定是最牛的,因为本身这些技术就是他们自己公司的同事搞出来的,他们能够比外部获得多得多的资料(包括文档、问题集、培训材料等)。因此,如果觉得来应聘的人对操作系统或者程序语言的原理懂得不多,那是很正常的。

还是回到我同事那段话:"建议大家认真阅读应聘者的简历,在应聘者擅长的领域里去问问题,去了解应聘者在软件技术支持方面的潜力。避免问一些只有我们自己才可能知道答案的技术问题,并以能不能答得上来为标准进行取舍"。

博客堂很多兄弟想必也曾经、正在或将要去招人、去面试程序员/技术人员。这些谨供大家探讨。

posted @ 2012-08-31 22:08  Lunaa  阅读(200)  评论(0编辑  收藏  举报