我是如何进入ThoughtWorks或进行典型面试的

图片

对您来说似乎不奇怪,当您要更改工作地点并且需要进行面试时,首先您会认为“您需要为面试做准备”。 解决HackerRank上的问题,阅读破解编码访谈,记住ArrayList的工作方式以及与LinkedList的区别。 哦,是的,他们仍然可以要求排序,并且说快速排序可能是最佳选择显然是不专业的。
但是,请耐心等待,您每天要安排8个小时的编程时间,解决有趣且不平凡的任务,在新的工作场所中,您将执行相同的加减操作。 但是,尽管如此,为了通过面试,您还需要以其他方式做准备,甚至不磨练您的日常技能,而是要了解您当前工作场所不需要的东西,或者在下一次工作中不需要的东西。 对于您的反对意见,即计算机科学充斥着我们的血液,并在半夜醒来,我们不得不闭着眼睛在枕头套上写字,绕着宽阔的树木走来走去,甚至没有恢复意识,我会回答,如果我定居在马戏团里,我的主要这是诀窍-也许是的,我同意。 您需要检查此技能。

但是,为什么要测试与您当前工作无关的技能? 仅仅因为它变得时尚了吗? 因为Google正在这样做? 或者是因为您未来的团队负责人必须在面试之前学习所有排序方法,现在他相信“每个优秀的程序员都必须内心知道在一行中找到回文的实现”。

鸭子,您不是Google。 Google所能负担的,普通公司则无法。 Google在分析了其员工的数据后得出的结论是,这特别与他有关,与他的任务有关,这对于那些曾经参加奥林匹克竞赛的工程师来说是一件好事。 此外,通过建立选择过程,他们可以承担这样的风险:由于他们不知道如何轻松地点击数学问题,因此他们可能不聘请数名优秀工程师。 但是对于他们来说,这并不重要,有很多人想在Google工作,职位将被关闭。
现在,让我们看看窗外,如果办公室前面还有更多不想为您工作的露营者,并且您的开发人员更有可能在stackoverflow上搜索下一个Spring注释,而不是排名算法的精妙之处,那么,很可能,您应该考虑是否要复制Google。

好吧,如果这次Google失败并没有给出答案,我该怎么办? 确切检查开发人员将在工作中做什么。 您对开发人员有何评价?
为要雇用的人制定标准,并开发测试这些特定技能的测试。

思想作品


ThoughtWorks与它有什么关系? 在这里,我为自己找到了一个模特访谈的例子。 谁是ThoughtWorks? 简而言之,这是一家高端咨询公司,在中国,新加坡和美洲等世界各地设有办事处,在为公司发展提供咨询服务约25年的过程中,拥有自己的科学部门,由马丁·福勒(Martin Fowler)领导。 如果您要查找软件工程师必须阅读的10本书的清单,则其中2-3本书将由ThoughtWorks的人员撰写,例如Martin Fowler的Refactoring和Sam Microman的Building Micro-Grained Systems:Designing Fine-Grained Systems或Building。进化架构
作者:尼尔·福特(Neal Ford)的丽贝卡·帕森(Rebecca Parsons),帕特里克·夸(Patrick Kua)。

公司的业务以提供相当昂贵的服务为基础,但客户要支付惊人的质量,这包括专业知识,内部标准以及人员。 因此,雇用合适的人才至关重要。
什么样的人是对的? 当然,每个人自己。 ThoughtWorks确定,对于他们的开发人员业务模型而言,最重要的标准是:

  • 结对开发能力。 这是能力,而不是经验或技能。 没有人期望从事结对编程的人大约5年了,但是要接受他人的意见,能够听是一项必要技能。
  • 能够编写测试,并且理想地练习TDD
  • 了解SOLID和OOP并能够应用它们。
  • 提出您的意见。 顾问必须与客户的开发人员以及其他顾问一起工作,并且如果该人知道如何做好某事,但是完全无法将其传达给团队的其他成员,则不会有太大的好处。

现在,准确评估候选人的这些技能很重要。 在这里,我想谈谈我在ThoughtWorks面试的经历。 我会马上说我去了新加坡并通过了,但是招聘过程是统一的,各个国家之间的差别不大。

阶段0。人力资源


通常会进行20分钟的HR采访。 我不会再赘述了,我只能说我从未见过HR,他们会在15分钟内谈论公司的开发文化,为什么他们使用TDD,为什么要结对编程。 通常,HR谈论这个问题并说他们有一个正常的过程:开发人员开发,测试人员测试,经理驱动。

阶段1.您在OOP,TDD方面的表现如何?


面试前1.5个小时,他们给了我一个制作火星漫游者模拟器的任务。

Quest火星探测器
美国国家航空航天局将在火星高原上降落一批机器人漫游车。 这个奇异的矩形高原必须由漫游者进行导航,以便其车载摄像机能够获得周围地形的完整视图,然后发送回地球。 流动站的位置和位置由x和y坐标以及代表四个基本罗盘点之一的字母表示。 高原分为网格以简化导航。 示例位置可能是0、0,N,这表示流动站位于左下角并面向北。 为了控制流动站,NASA发送了一个简单的字母字符串。 可能的字母是“ L”,“ R”和“ M”。 “ L”和“ R”使流动站分别向左或向右旋转90度,而不会离开当前位置。 “ M”表示向前移动一个格网点,并保持相同的航向。
假设从(x,y)直接向北的正方形是(x,y + 1)。
输入:
输入的第一行是平台的右上角坐标,假定左下角坐标为0,0。
输入的其余部分是与已部署漫游车有关的信息。 每个流动站都有两行输入。 第一行给出了流动站的位置,第二行给出了一系列指令,告诉流动站如何探索高原。 该位置由两个整数和一个由空格分隔的字母组成,分别对应于x和y坐标以及流动站的方向。
每个流动站都将依次完成,这意味着第二个流动站直到第一个流动站完成移动后才开始移动。
输出:
每个流动站的输出应为其最终坐标和方向。
注意:
只需实施以上要求,并通过编写吸尘器的单元测试来证明它可以工作。
创建任何形式的用户界面均超出范围。
通过遵循TDD(测试驱动开发)方法解决问题将是首选。
在可用的短时间内,我们更关注质量而不是完整性。
*我无法发布发送给我的任务,这是几年前给出的旧任务。 但请相信我,基本上一切都保持不变。

另外,我要注意评估标准。 您有多少次遇到这样的情况,即在检查时与候选人无关的事情完全不相关,反之亦然。 并非每个人都以相同的方式思考您,但是如果明确说明,许多人会接受您的价值观并遵循它们。 因此,从评估标准来看,很明显,在此阶段最重要的技能是

  • TDD
  • 能够使用OOP并编写支持的代码;
  • 结对编程能力

因此,被警告我花这1.5个小时来思考我将如何完成任务,而不是编写代码。 我们将一起编写代码。

当我们打电话时,这些家伙简短地告诉了他们他们是谁以及他们在做什么,并主动提出要开始开发。

在整个采访过程中,我从来没有感觉到自己在接受采访。 感觉到您正在团队中开发代码。 如果您被困在某个地方,他们会互相帮助,提供建议,进行讨论,甚至在彼此之间争论如何做到最好。 在采访中,我忘记了如何在JUnit 5中检查该方法是否引发异常-他们建议继续编写测试,而其中一位用谷歌搜索如何做到这一点。

面试几小时后,我收到了建设性的反馈-我喜欢什么,不喜欢什么。 就我而言,因使用Sealed类替代\ null对象而受到赞扬; 因为我在编写代码之前就先编写了伪代码,就好像我想控制流动站一样,因此获得了类的草图,至少是机器人API中涉及的类。

第二阶段。告诉我们


面试的前一周,我被要求准备关于我感兴趣的任何主题的演讲。 格式简单而熟悉:15分钟的演示文稿,15分钟的问题答案。
我选择了Bob叔叔的Clean Architecture。 然后又有几个人采访了我。 这是我第一次用英语演讲的经历,也许,如果我处于压力之下,我将无法应付。 但是再一次,我再也没有感觉到自己正在接受采访。 一切都像往常一样-我告诉你,他们在认真听。 即使是传统的问答环节也不像是一次采访,很明显,这些问题不是“沉没”的,而是那些让我对我的演讲真正感兴趣的问题。

面试几小时后,我收到了反馈-演示非常有用,他们真的很喜欢听。

第三阶段。生产质量规范


在警告这是技术面试的最后阶段之后,我被要求将代码带到家中的生产就绪状态,然后将代码发送给审阅并安排面试,在那儿任务的需求将发生变化并且代码需要进行修改。 展望未来,我可以说代码审查是盲目进行的,审查者不知道应聘者的职位,看不到他的简历,甚至看不到他的名字。

打了个电话,然后又在监视器的另一边打了几个家伙。 一切都像第一次面试一样:主要的是不要忘记TDD,告诉自己您在做什么以及为什么。 如果您以前没有练习过TDD,那么我建议您立即开始进行TDD,这不是因为这在公司中是必需的,而是因为它极大地简化了您的生活,并在需要时减轻了压力。 还记得您是如何不得不通过调试器疯狂地搜索仅通过浏览器再现的错误,但不能通过测试再现该错误吗? 现在想象一下,您在面试中必须捕捉到这样的错误-为您提供了两头灰白的头发。 TDD为我们提供了什么? 我们更改了代码,意外地意识到测试现在是红色的,但是第一次无法理解的错误是什么? 好的,我们对面试官说“糟糕”,按Ctrl-Z,然后开始向前走一些小步。 是的,使用TDD进行开发的能力需要您自己进行开发,并且能够达到目标,以便测试能够永久呈绿色而不是红色持续半天,因为“您需要进行大量重构”。 这与编写支持的代码或生产性代码的能力完全相同。

因此,您的代码使自身适应变化的程度取决于您最初制定的设计,它的简单程度以及测试的质量。

面试后,我在几个小时内收到了反馈。 在这个阶段,我意识到我已经通过了考试,直到“与福勒会面”为止几乎没有。

阶段4.决赛。 足够的技术问题。 我们想知道你是谁!


老实说,我对这个问题的表述感到有些困惑。 在一个小时的交谈中,我如何理解自己是什么样的人? 更重要的是,当我说的语言不是我的母语时,我怎么能理解呢?坦白说,这很糟糕,言不由衷。 在以前的采访中,我个人讲话要比回答问题容易,而且重点是责备。 至少一位面试官是亚洲人-可以说,他们的重点在某种程度上是针对欧洲人的。 因此,我决定采取一种主动的方法-准备一个关于自己的演示文稿,并在面试开始时用这个演示文稿来介绍自己。 如果他们同意,那么如果他们拒绝报价,至少对我来说问题会更少-那么,我整个演讲中花了3个小时并不是那么高的价钱。 但是在演示中要写些什么? 传记-他在那出生,然后上学,大学毕业-但是谁在乎呢?

如果您对Thoughtworks文化有所了解,可以找到Martin Fowler的文章[https://martinfowler.com/bliki/ThreePillars.html],其中描述了3个支柱:可持续业务,软件卓越和社会公正。

假设我已经检查过Software Excellence。 它仍然显示可持续商业和社会正义。

此外,我决定专注于后者。

首先,我告诉你为什么ThoughtWorks-仍在研究所时,请阅读Martin Fowler的博客,并因此热衷于Clean代码。

也可以从不同角度介绍项目。 他还开发了医学软件,使患者的生活更轻松,甚至有传言说它挽救了一条生命。 他还为银行开发了软件,这也简化了居民的生活。 特别是如果该国70%的人口使用此银行。 这与俄罗斯联邦储蓄银行无关,甚至与俄罗斯无关。

想了解我吗? 好吧 我的爱好是摄影,一种或另一种方式是我一直将相机拿在手中已有10年之久,有些照片并不十分尴尬。 而且,一次,我帮助了一只猫躲藏处:我拍了需要永久性家的猫。 有了好的照片,安装猫就容易多了。 可能是和一百只猫一起拍的:)

最终,我演讲的80%都是猫。

演讲后,人力资源部立即写信给我,他还不知道采访的结果,但是整个办公室已经被猫打动了。

最后,我等待着反馈-我满足了所有人的个性。

但是人力资源部在最后的谈话中婉转地说,社会正义是非常好的和必要的,但并不是所有的项目都是这样。 并问这是否吓到我。 总的来说,我对社会正义的看法太过分了,这确实发生了:)

总结


结果,我在Thoughtworks的新加坡工作已经有几个月了,我发现这里有太多公司采用Google和Google的“最佳面试方法”,使用传单和Whiteboard进行编码,尽管事实上,除了Spring,Symfony,RubyOnRails(下划线)在工作中不是必需的。 工程师在休假前需要一周休假才能“准备好”。

在Thoughtworks中,除了对候选人有足够的要求外,还遵循以下原则:
面试的喜悦。 而且,对于双方。 的确,如果您想招募最优秀的员工(而不想要谁?),那么面试不是一个选择奴隶的市场,而是一个新郎和新郎,雇主和候选人都在这个市场上互相评估。 如果候选人将愉快的情绪与一家公司联系在一起,那么他很可能会选择这家公司。

多个面试官以减轻偏见。 在Thoughtworks中,结对编程是事实上的标准。 如果这种做法可以应用于其他领域,TW正在尝试这样做。 在每个阶段,有2个人进行访谈。 因此,至少有8个人对每个人进行评估,并且TW尝试选择具有不同背景,不同方向(不仅是技术人员)和性别的访调员。

最终,将根据至少8人的意见做出雇用决定,并且没有人投决定票。

基于属性的招聘而不是根据候选人的喜好决定,而是针对每个角色和每个阶段开发了一种表格,包括要评估的属性。 同时,在评估时,建议不要评估特定技能的经验,而应评估其应用能力。 因此,如果应聘者无法运用TDD之类的技能,但他仍尝试运用该技能,请听取适当使用的技巧-他有机会接受面试。

不需要教育证书 TW不需要候选人获得强制性证书或接受计算机科学教育。 仅评估技能。

这是我去外国公司的第一次采访,我没有必要为此做准备。 在每个阶段之后,我都不会感到像柠檬一样被挤压,但是相反,我很高兴能够采用最佳实践,显示器另一侧的人们对此表示赞赏,并且每天都在应用它们。

几个月后,我可以说完全满足了期望。 ThoughtWorks与常规公司有何不同? 在常规公司中,您可以找到优秀的开发人员和好人,但是在TW中,他们的注意力超出了规模。

如果您想加入ThoughtWorks,可以在这里查看职位空缺
我还建议关注有趣的空缺:
首席软件工程师: 德国伦敦马德里新加坡
高级软件工程师: 德国 悉尼曼彻斯特曼谷
软件工程师: 悉尼巴塞罗那米兰
高级数据工程师: 米兰
质量分析师: 德国 中国
基础设施: 德国伦敦智利
(我想诚实地警告该链接是推荐链接,如果您访问TW,我将获得可观的奖励)。 选择自己喜欢的办公室,不必只限于欧洲,毕竟,每两年,TW将很乐意将您运送到另一个国家,因为 它是ThoughtWorks政策的一部分,因此文化在传播和普及。

随时在评论中提问或要求我推荐您。
如果这个话题看起来很有趣,我将写一篇文章在ThoughtWorks中的工作方式以及它在新加坡的生活。

Source: https://habr.com/ru/post/zh-CN479874/


All Articles