1

聊聊ThoughtWorks面试

 2 years ago
source link: https://blogread.cn/it/article/5794?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

聊聊ThoughtWorks面试

浏览:5539次  出处信息

    http://www.businessinsider.com/hardest-tech-company-job-interviews-2012-8

    http://www.cnbeta.com/articles/203954.htm

    最近有几篇关于科技公司面试的新闻,这篇格外受瞩目,因为竟然有公司力压Google,成了面试最难的公司,而这个公司居然是ThoughtWorks。

    这个结果真的让我有些惊讶,作为一个面试过许多人的ThoughtWorker,我之前还真没想过我们的面试到底有多难。既然有人关心ThoughtWorks面试,我就不妨在此分享一下我的“面经”。

    先来说说,我们的招聘流程。ThoughtWorks的招聘流程大抵分成如下几个部分,以社招开发人员为例:

电话面试,称为Phone Screen,由负责招聘的同事了解候选人基本情况 技术电话面试,称为Techinial Phone Interview,TPI,这个环节通常是针对远在外地的候选人 代码作业,称为Homework,动手写代码对程序员的考核而言是不可或缺的。

    通过上面流程,候选人就可以进入到我们的办公室。一般说来,候选人要来办公室两次,第一次会做一些测试题:

逻辑和英语测试

    通过之后,才是真正的重头戏,也是称为“面试”的部分。一般说来,这些环节会在一个下午的时间完成:

结对编程面试,称为Pair Programming 面谈,称为Office Interview,在我们招聘同事的口中,它有一个更复杂的名字:Overall Technical Interview and Culture Interview

    这是主要的流程,有些情况会因人而异稍做调整。一般情况下,整个流程需要3周左右时间。我个人参与较多的主要是后两个环节,我的“面经”也主要在这里。

    结对编程面试,是候选人和面试官一起写代码。所用的代码就是候选人之前在代码作业环节所写的代码。这是个真刀实枪的环节,想作弊是不可能的。之前曾经发生过这样的事情,候选人找人代写代码,结果,一到这个环节就完全暴露。

    在这个近距离一起工作的面试中,候选者对代码的理解、开发习惯和与人交流的方式等等就全部展现在面试官面前。有些人之前习惯于窝在一个角落里写代码,像这样,写程序时身边还有人交流,对他们来说是一个巨大的挑战。我曾经看到很多面试者在这个环节紧张得不能正常思考,导致实力打了折扣。

    之所以采用这样的方式进行面试,因为这就是我们日常的工作方式。我们希望了解候选人的情况,同样,也希望他们能够最真实地体验我们的工作方式、交流方式和思考方式。我们不仅仅要写程序,还要彼此交流,降低项目中出现“关键人物”的风险。以我之前的一个项目为例,这是一个总规模在十人左右的项目,一年半的时间里,这个项目先后下了四个团队lead,离开项目的开发主力也有五六个,但项目一直顺利进行,未受太大影响,就是因为通过交流,知识得到了充分地分享,避免了“关键人物”带来的风险,也让更多的同事得到了充分地锻炼。

    不可否认的是,不是所有人都喜欢这种工作方式。有了这样的环节,候选人在体验之后也会有个新的评估:ThoughtWorks是不是他在找的工作,这样的工作是不是他喜欢的。

    透露一个秘密,如果在结对过程中,候选人能够展现出他对快捷键和命令行的熟练,会在面试官心目中有加分的。

    接下来是面谈环节,面试官和候选人坐下来,聊聊候选人的一些经历。以我个人的面试风格而言,了解了候选人过往的经历之后,我会让他挑一个自己最想讲的项目,做一个介绍。听起来很容易,但接下来,根据他介绍的内容,我会做进一步挖掘。比如,候选人说自己做过某个设计,我会问他为什么这么做,而不是那么做,对比不同方案之间的差异。这是一个说难不难的环节,如果在做设计决策的过程中,候选人经过了深入思考,回答出这些问题简直易如反掌,但对于那种直奔结果而去的候选人而言,这个问题却并不容易,当初决定的草率会在这个环节暴露无疑。这是整个面试的重头戏,候选人完全可以在这个环节将自己对技术的深入理解体现出来。

    所有的问题都是开放的,没有正确答案可言,通过这样的交流过程,我们可以看到候选人更多方面的能力:思考方式、分析能力、表达方式等等。当然,也有一些人让人遗憾,他们应该是做了很多出色的工作,但完全没有办法清晰地表述出来。我喜欢听到的介绍方式是,层次清晰的讲述,当然,如果有激情就更好了。如果你看到过对技术真的有热情的人讲技术,你会知道,与那样的人交流简直是就是一种享受。

    之后,我们还会了解候选人的本职工作之外的努力,因为我们相信,所谓的工作,并不能阻止一个真正热爱写程序的人求知的心:即便他只是Java程序员,并不妨碍他了解Ruby;即便工作再忙,他也会抽空学点东西。如果候选人曾经利用时间做过一些东西,那是我们乐于见到的,如果再能涉猎更多的东西,那简直太好了,当然,我们会问一些问题,了解他是“听说、了解、用过,还是深入研究过”。

    单就面试过程而言,ThoughtWorks的面试并没有特别的。但为什么还有很多人会觉得这个过程很难。或许,这就是他们习惯的工作方式与我们工作方式的差异所在。

    众所周知,ThoughtWorks在“如何做软件”方面是走得很靠前的。当我们的客户还在考虑ClearCase是否要切换成SVN时,我们已经抛弃了SVN,拥抱了git;当很多公司开始做持续集成时,我们已经开始了持续交付;当许多人开始拥抱敏捷时,我们正逐步地“去敏捷”。

    在ThoughtWorks工作,我们要找的是真正热爱技术的人,喜欢刨根问底的人,那种为了完成而完成的人不是我们想要的。在公司里,我们经常会听到这样的话:我们不只要实现功能,更要以正确的方式来做。追求是无止境的,所以,我们要找的就是具备深入思考的能力/潜力的人,这样,我们才能不断向前。

    在很多的人印象中,ThoughtWorks有一群特别能说的人,没错,在我们的工作里,沟通占了很大的比例,无论是我们在交付项目中,还是咨询项目里;无论是与自己人,还是与客户。所以,在面试中,我们也特别重视一个人的表达能力,肚子有货的人是否能够清晰地表达出来,而表达能力往往是一面反映多方面能力的镜子:分析能力、组织话题的能力、对技术的理解等等。

    以个人观察而言,在程序员这个闷骚遍地的行业里,所谓不擅与人沟通的程序员只是没有找到合适的环境。其实,表达能力完全是可以锻炼出来的。还记得我第一次在东软给别人讲东西的时候,紧张得手心里全是汗。在公司内部主动讲讲东西,在社区活动做一些分享,多讲几次,什么问题就都没有了。

    其实,所谓ThoughtWorks面试难,在我看来,只不过与其他公司只重视技术能力而言,我们更注重全方位的工作能力而已。因为在ThoughtWorks,我们是程序员,但我们不只是程序员。

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK