寻找工作的高级工程师。 我如何经历15次技术面试以及对此的看法

关于我如何在不同公司接受不同职位面试的故事的延续。 这次我们将关闭有关第一部分的一些问题和评论,并继续谈论测试任务和技术面试。

令我惊讶的是, 上一篇有关招聘人员和人力资源部门面试的文章引起了人们的意想不到的兴趣:来自所有来源的超过100,000次观看 他们在PM上得到了很多积极的反馈,他们是前同事的写信给我,我上次见面大约是5年前。 一些故事中的女主人公; 一个人,我几周前通过OLX出售了一个系统单元(类似于Slando,大约每人) ; 去年与我们在车库里打铁的鼓手,奇怪的是,有很多招聘人员问我对面试和录用某些方面的看法。 出于某种原因,有250个人在LinkedIn上加入了我:)。

在开始工作之前,我将回答最受欢迎的问题以及个人信息和评论。

如何安排面试的薪水


许多评论与金钱有关。 我故意没有对此进行过多关注,因为出价是一个单独的问题,但是评论员仍然对其进行了说明,并指出了我的策略的缺点-例如,立即命名价格。 以下是两篇很好的文章,它们以更加详细和专业的方式解决了这个问题:


我建议在找工作之前先阅读。

关于招聘的几点思考


我绝不会就招聘人员的工作方式提供建议。 我不是专业的招聘人员,我也不知道他们的内部厨房如何工作。 当我需要寻找工作人员时(不仅要进行技术面试,即寻找和聘用-一个完整的周期),这些职位分别是初级职位,我没有任何特殊困难。

在私人信息中,他们问我如何对工作提议做第一条消息,以使它看起来既有吸引力又使专家感兴趣,如何引起我的注意?

在我看来,不幸的是,没有什么取决于招聘者。 招聘人员可以做的就是找到尽可能多具有必要个人资料的专家联系,然后向他们发送要约。 此后,您需要等待并希望其中之一正在犹豫或正在积极寻找工作。 就是说,有20%的工作是靠基地工作的,而80%的工作是运气。 该网络包含许多有关如何正确创建职位空缺的资料,等等,但是对我而言,关键因素恰恰是候选人求职的愿望。

招聘是将空缺出售给候选人。 您越早了解这一点并开始提升业务员技能,就越好。 哦,我说过我不会提供建议的:)

我也坚信,在求职过程中,候选人需要承担或多或少合适的所有职位空缺,因为实际上,只有在与技术专家交谈时才有可能找到职位空缺。 在搜索中,我几乎没有注意空缺中写的内容,而是在技术面试阶段发现了必要的细节。 我相信这种方法是最正确的,因为找到可以隐藏在标准灰色描述后面的炫酷项目的机会大大增加了。 我的经验仅能明确证实这一论点。 它没有一次空缺就专门写了需要做的事情。 只有一般的短语,例如“编码代码,测试测试,部署部署”。

参与公司或项目


在我们的现实中-绝对是一个项目。

如何选择标题


我将自己定位为高级软件工程师或更高级别的候选人-团队/技术主管,首席工程师,软件架构师,项目经理,人员/小组经理等。 这就是“高级+”中“ +”的含义。

在我看来,标题没有任何意义。 唯一重要的事情是您将实际执行的操作,而这只能从与您一起工作的人那里发现。

因此,女士们,先生们,让我们继续进行技术面试。

第二阶段。 技术面试


在这一部分中,我的主观经验和哲学将比建议更多。 Internet上有很多有关技术面试要求以及如何准备的信息。

免责声明:作者不是涡轮发动机奥林匹克运动员,因此某些决定或评论可能会引起笑容,屠杀,向作者指出他的错误或低学历的愿望。 我很高兴听这个结构。

总共,我经历了15次技术面试,就我而言,这并不是很多。 我本来可以经历更多的事情,但是平均而言,我预计从第一次与招聘人员接触到与技术专家进行对话的一周时间。 尽管事实上我几乎没有时间限制。 在安排另一个面试的时间里,我只安排了一次面试。 我还注意到,所有公司或招聘人员亲自来找我。 我没有先将简历发送给任何公司。 问题在于,寻找工作的不是不是领军人物,而是工作-君主。

测试任务


许多公司会先进行测试作业,然后再进行对话以淘汰无关的候选人。 尽管事实上许多人不愿意将时间花在测试任务上,特别是如果它们非常繁琐,我仍然认为这是一种好习惯。 让我们考虑一下可以执行哪些测试任务。

“从头开始创建项目(也许使用特定技术),然后将其发布到GitHub上” –对于我来说,这是最糟糕的选择。 您可以在解决方案周围的基础架构上花很多时间,通常,面试官会对任务条件中列出的一些小实施细节感兴趣。 好吧,例如,如果您手边有项目模板,则可以在5分钟内提升服务器并快速下载所需内容。 否则,您必须记住所有内容并从头开始。 如果任务有条件使用外部依赖项(例如,非嵌入式数据库),这也很糟糕。
职位DevOps工程师。 他们向我发送了一项任务,要求对多个虚拟机进行Vagrant配置,其中应该包含具有静态功能的Web服务器,它们的平衡器和Jenkins。 所有这些都必须使用Chef安装和配置。 现在想象-我从未使用过Vagrant,Chef,也没有配置任务中所需的Web服务器。 我了解这一切是如何工作的,我使用过类似的工具,但是我从未专门使用过这些工具。

我不得不整夜坐下,解决所有问题,收集一堆耙子,最终完成任务。 主要的困难是我有15年的旧MacBook Pro,实际上没有时间重新启动容器,而且我没有使用Vagrant的经验。

这项任务的实质-弄清楚如何安装-大概花了我半个小时。 剩下的时间(7小时后),我花在安装所有工具上,重新启动-重新启动,拨入配置以试图了解为什么它不起作用,等等。
我可能会在一个小时内在Docker Compose上执行相同的任务,甚至可能更少。 您不可以将候选人局限于工具吗? 在我看来,这是可能的。

这个任务对我有帮助吗? 绝对可以! 现在,我将知道从Vagrant和Chef中您需要远离:)

花费时间-8小时
不幸的是,我没有关于这种类型任务的更多故事,因为一般而言,没有太多的测试对象:(

“这里是包含测试站点的链接-通过测试”是一个非常不错的选择。 有什么意义? SaaS允许您配置一系列实践和理论问题,对于解决方案,它们直接在浏览器中提供REPL和代码编辑器,并提供运行验证测试的机会。 然后,您只需进行作业,修复现有作业或编写自己的代码,运行它并查看结果。 测试本身对您是隐藏的,您只会看到结果(通过/失败)和测试的简短描述,同时可以作为提示。 为什么我最喜欢这个选项? 因为对作业质量有明确的标准,而且候选人确切地知道他得分了多少分,他的决定是否有效等等。 我个人甚至对完成这些任务感兴趣。 我唯一看不到诸如“如果执行此代码会发生什么”之类的理论问题的要点-它们很容易在google中找到。
Ruby软件工程师职位。 他们会给我发送到TestDome网站的链接,当然还有自定义测试的链接。 我单击,进入实际测试。 他们给了我2.5个小时来完成整套任务,每个问题5-20分钟。 实际上,我真的很喜欢它,我已经很长时间没有经历过这种事情了。 我特别喜欢TDD方法:我编写了代码,启动了,看了下来,然后又编码了。 非常高兴地通过了。

任务本身非常简单:更正代码(Ruby / JS / CSS / HTML),编写验证器(Ruby),实现数据结构(Ruby),没什么特别的。 但是,您可以立即检查该解决方案是否有效的事实很有帮助。

我在一个小时内完成了93/100分的任务。 不幸的是,这个结果对将来完全没有帮助。

TDD可以帮助您做出决定,而无需花费时间来提高基础架构,直接在浏览器中进行重放-简而言之,非常酷。 为此,可以等待一个月-最终,我得到了多巴胺(一份出色的工作)和肾上腺素(时钟在滴答作响,时间不多了!)。

花费的时间-1小时。
同样,此类任务的最大优势在于其验证是自动化的。 我们都知道面试官是如何“喜欢”检查作业的,这里机器可以为他们完成所有工作-非常方便,至少您不需要下载代码并收集代码。 将来在招聘时也许会使用这种方法。

“这里是资源库,有一个任务,发送带有解决方案的请求请求” -我没有遇到过这样的选择,但是我的同事使用了它。 我不太喜欢他,因为您可以看到其他候选人如何完成任务(如果有)。

这种方法的缺点很明显:测试人员需要下载代码,收集代码,观察其中的内容,这很漫长而无聊。 当然,您可以在浏览器中从表面上看到代码,但是为什么您需要执行任务呢? 然后,让我们编写伪代码。

“这里是资源库,这里有代码,请尽可能地对其进行重构” –这是前一个版本的变体。 这样做更好,因为从一开始就创建了一个可在其中工作的框架。 缺点是相同的:尚不清楚何时停止。 正如Egor Bugaenko 所说 ,任何程序都包含无数个错误,并且可以无限期地修复它们。

作业的作者在创建作业时可能脑子里有些东西,我们很可能不知道单单对他们来说主要是什么。 如果任务有明确的标准,那就太好了。 例如,“有一个代码,它在这样的硬件上以速度产生这样的结果,将其重构为两倍快”。 没有条件就很难工作。 在现实生活中,在实际工作中,我们始终有一个框架,并且正在此框架和常识的指导下寻求最佳解决方案。 开发人员的主要工作就是感觉这种平衡并找到适当的解决方案。

令我非常遗憾的是,没有其他人提供测试任务,因此我的选择非常少。 除非我记得多年前的测试。 所有这些都是第一类-必须进行一个项目。 有趣的是,我是在GitHub尚未流行的那些日子里执行它们的,因此有必要通过邮件在zip存档中发送解决方案:)

我对测试项目的建议?

  1. 不喜欢-不喜欢。 例如,如果任务是完成整个场地或编写草稿-那么,将其放入浴室。 作业应简短,并应集中精力为随后的讨论创建上下文,而不仅仅是测试如何进行脚手架。
  2. 如果任务是第一类任务,请添加到自述文件存储库中,其中详细描述了启动说明,有关为何做出此决定的简短注释,其缺点是什么,您喜欢还是不喜欢什么,如何解决该任务(如果有)您有更多时间,依此类推。 我不知道这是否真的有帮助,但是作为一名面试官,我肯定会提到这种决定的文件。
  3. 编写正常,但是您不应该花大量时间舔零件。 对于我来说,只要在自述文件中列出您要改进的所有代码就足够了。
  4. 请务必考虑一下您可能对实现有什么疑问,并阅读有关您使用的API的其他文档。 假设我已经很长时间没有使用并发了。 我已经很长时间没有练习了,所以在做出决定之后,我迅速浏览了所有相关主题,记住了所有典型任务,并准备好进行对话。

好吧,测试一个,希望您已成功完成此工作,并将此信息传递给招聘人员,并在不确定的时间后邀请您亲自讲话。

技术面试。 前言


首先,现在很少邀请他们去办公室面试。 我只有几次被叫到办公室-接受过解决方案架构师,技术主管的面试,一次被要求-担任管理职位。 所有其他采访都是通过Skype,Zoom和环聊进行的。 与上一次对招聘人员的采访中所提出的建议是一样的-好的相机,好的耳机,好的互联网。 为此,我还添加了弄乱屏幕的条件。 因此,请确保您没有公开的工作项目(如果这很重要)以及不需要在此时向他人展示的其他个人物品。 保持干净的浏览器没有选项卡和REPL进行编码,以防万一(IDE或repl.it )。

在所有通讯方式中,我最喜欢Zoom。 实际上,它是最常用的。
有关在新闻组中进行适当交流的重要提示:养成在他人讲话和在耳机上讲话时不要讲话或不在键盘上打字的习惯,而不是例如通过外部笔记本电脑麦克风和外部扬声器。

为什么这很重要? 通常,两个人会分别与您交谈,他们不会使用耳机。 当您交谈时,他们的软件包括一个噪音消除器,可防止出现反馈效果(背景,啸叫,回声)。 当降噪器打开时,他们的麦克风几乎听不到任何东西,因此您不会听到他们对您说的话。

当您在键盘上打字时,它会产生噪音,该噪音会传播到另一侧,并且还包括降低噪音。 结果,短语断开并且产生连接不良的印象。 因此,您应该始终等到人们结束对话。 否则,您将不会听到他们想说的话(对话者也使用garntiru时除外)。 奇怪的是,许多人并不了解这些机制。 在通话时使麦克风静音也很有用,这样一来,房间中的声音就不会传播到其他人了。 我在一家人人都知道这些规则的企业中工作了很多年,因此对我而言,这一切显而易见,但是我看到许多情况下,人们没有遵循这些基本规则,并且在糟糕的Internet上犯了罪。
如果一切正常,ping反复进行,则对话将开始。 通常,访调员自己会提出一个谈话计划。 碰巧他们没有计划,但是至少有一个主题总是有意义的: “告诉我们您自己和您的经历

面试之前,请再次进行空缺,注意应试者的要求并准备演讲。 我接受了技术主管,DevOps / SRE,Ruby / Java软件工程师的采访,在每种情况下,我都说了一些不同的事情,我认为这对访问员来说会更有趣。 尽量不进行详细介绍,而应提供将为进一步讨论提供指导的信息。 您不应详细谈论5年前所做的事情(除非当然这不是什么特别的事情)。

例如,我这样说:“我在企业办公室工作了8年,主要是使用Java。 然后我去了一家初创公司,在那里我从事基础设施建设。 最近两年,我主要在Rails上写作。” 就是这样,访问者拥有足够的信息,他们将以他们感兴趣的脉络展开对话。

现在是一个意外的事实。

没有人看你的简历


老实说,这对我来说是一个伟大的发现。 好吧,招聘人员不会在LinkedIn上阅读个人资料,因为它可能不会更新,HR能够对角查看简历,并亲自突出主要内容。 但是进行技术面试的人当然不会阅读您的简历。 我要强调的是,没有一个人至少没有一次用眼睛看着我在这里写的东西。 我怀疑,通常,他们发现他们需要在实际面试的前一天进行一次技术面试,并决定在通话前5分钟阅读简历,而且某种程度上已经存在。
: « , ». , ( , ). , , .

, .

, , 10 . CV, , , .

CV , . , , .
我将再次对这种态度表示不满。我和您(如果您已经是高级番茄专家)是我所在领域中相对认真的专家(我想提醒您,我有这种诽谤性和成堆性)。市场上没有像我们这样的人很多,所以请表达敬意并熟悉我的所作所为。我了解了您的公司,项目,客户。我希望被视为一个人。为什么发生相反的情况?

没人需要你


但这最困扰我。在80%的情况下,我处理了生气,困倦,疲倦的性格内向的人,这些人显然对雇用任何人都不感兴趣。他们是技术上称职的人,也是优秀的专家,但是由于某些原因,他们并不希望真正聘请同事,他们也不想聘请优秀的工程师来帮助他们。

我坚信,这些人只是简单地承担了进行采访的义务。他们几次告诉我,合适的人正在休假,或者没有时间到达,或者很忙,或者其他事情。他们已经有很多事情要做,产品上有问题,我们没有时间去冲刺,与客户集会,然后下一位候选人又遇到麻烦了,我应该怎么对待他,是吗?问题来自于此:面试官并不认为您是他们需要与之合作的人,而只是试图从他们的角度评估您是否正常。当“哦,蒂姆利德现在很忙,所以另一个人要面试”时,这种情况非常频繁。

我只与工程师进行了几次对话,这表明是的,他们确实需要人才,他们想聘请一位优秀的专家,他们为我制定了计划,等等。因此,我们继续下一段。

您不会与未来的老板或团队负责人交谈


这是前一个的结果。我深信,您必须与将要服从的人进行正式或非正式的交谈。所有组织都有某种层次结构,无论是Scrum团队还是血腥的企业。到处都有一个人会照顾你(至少是一开始)。

不幸的是,您对此无能为力。 Yegor Bugaenko在他的文章“为什么不与Google招聘人员聊天中很好地描述了这种情况。如果您要求与未来的老板进行对话,那么您根本就不会接受任何面试。

在我看来,现在这是我们最大的招聘问题之一。也许这取决于项目的细节-外包,人们在其中做一些事情。我可能不知道这种普遍缺乏交流的文化和一种不道德的心态。
英文博客经常写道,招聘是建立成功公司至关重要的关键领域之一。我认为我们的公司将需要大量时间来达成此目标,并形成正确的文化。同时,客户必须将此外包。
. , CTO CEO. , . , , . , .
, , (, ).
到目前为止,无论我如何尝试,Longrid的所有内容,很多材料和思想都再次出现了。在下一部分中,我们将继续考虑该主题,并继续讨论技术面试中使用的特定问题和技术。

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


All Articles