华为面试改革后增加了现场编程的环节,那么 BAT 等 IT 大厂面试是否有现场编程这个环节呢?我们分别询问了阿里、腾讯和百度的同学。
根据反馈:阿里有笔试手写代码的环节,但没有现场编程的环节;腾讯各个团队的面试不一样,有的团队需要上机写代码和编译提交;百度没有现场编程环节,甚至有的团队连手写代码的环节都不需要。
这样来看,BAT 都不做的事儿,华为为什么要做呢?
对于华为来说,以前用大规模招聘来快速补充业务发展所需的人力压力,所以他们的面试步骤也是因为这个诉求而逐步建立起来的。在面试改革的文件里,他们提到“HR 看简历面试又不深刻,导致大规模进人、大规模走人”,这样来看,编程环节可以极大简化 HR 检查和审核的过程。
看来应聘华为的程序员同学应该是数量庞大,针对大批量申请者,这样的现场编程面试虽然会漏掉个别优秀的人,但是不会影响华为招聘的节奏。
对于华为这一面试做法,如果 BAT 都持保留意见,那么中小型公司是不是就更没必要了?
我们采访了一位 30 余人技术团队的负责人,他表示:“在我们这样体量的团队中,让程序员在面试时现场编程是完全没必要的,通过笔试题目和现场问答,完全可以了解到应聘程序员的实力。”
3 除了动手编程,还能如何了解程序员的软硬实力? 写代码是程序员的生命力所在,无论是现场编程还是手写代码,面试官总是试图从这些代码中看出应聘者的代码水平和习惯,例如代码的可读性、可维护性如何;界面、功能的设计能力如何;思维、代码结构是否清晰等等。
但是有时候面试官的水平和眼光也决定着这种做法是否真的那么禁得起考验。
Facet 的 CEO 曾抱怨自己在 Netflix 时,不小心拒绝掉了亚马逊 Prime Air 的创始人。另一位从业 30 多年的业内人士看到这个消息,也感慨自己的一位同事,一位公司内排名 Top 5 的程序员,在面试其他公司时,首轮就被刷掉了。这说明不仅程序员本身拥有过硬的实力很重要,招聘者是否具备伯乐的眼光更重要。
招聘新思路——建立工作样本测试 “如何在短时间内了解程序员的软硬实力”是每个招聘者的必修课。诺贝尔奖得主 Daniel Kahneman 因其在判断和决策方面的成绩而闻名,他在早些时候接受采访时表示,面谈对于选择最佳岗位候选人来说是非常糟糕的,但遗憾的是他并没有提出替代方案。不过,著名的工程师兼评论员 Thomas Ptacek 在发表的招聘方法论的文章中提出了这样一个招聘方法——建立工作样本测试。相比于询问应聘者的工作内容,让应聘者实际操作是更好的一个方式。
工作样本测试需要具备以下特征:
尽可能地反映出应聘者在未来将要完成的实际工作;
要是标准化的,每个应聘者都要进行同样的测试;
最终生成数据和评分,而不是简单的及格或不及格。
Thomas Ptacek 曾尝试使用工作样本测试,他们在一个单文件 Sinatra 项目中构建了一个电子交易系统,接口为定制的二进制协议,同时构建了 web 接口来驱动协议。应聘者需要找出这个交易体系中的缺陷。
“这样一个小测试需要应聘者在几小时内编写出几百行代码,比其它任何面试都更有预测力”。Thomas Ptacek 表示:“相比于传统的面试方法,应聘者似乎更喜欢这样的测试。另外,在工作样本中做的评估越多,面谈中需要谈的内容就越少。”
这样的工作样本测试也适用于纯开发任务,例如面试官可以实际构建和部署一个应用程序,并从应用程序中划分出一些功能区域,删去某些功能,让应聘者重新添加。