技术面试:被电子人拒绝

TripleByte是否成功利用技术来完善技术招聘流程?

电子人 | ˈsīˌbôrɡ | 名词,虚构或假想的人,其身体能力通过内置于人体中的机械元素而超出了正常的人类极限。

简而言之,从哪里开始:

  • 在2016年初,在Solinea作为软件工程师全职工作的两年时间中,我开发了一个RSI案例,这使我的打字生涯停顿了。
  • 我研究了替代输入法,并加入了语音编码社区,在自适应输入软件工程领域发展了我的技能,使用语音作为主要输入法(我现在也在做)。
  • 在2016年底,我离开了软件开发团队的其余部分,因为该公司从产品转向只专注于合同DevOps演出。
  • 稳定工作职责流程的这种中断是因祸得福。 它给了我一个至关重要的空间,让我专注于身体康复。 我也一直在利用时间从事合同工作,并为了不断学习而从事激情项目。 这次加深了我作为工程师的经验和知识的呼吸。
  • 这只是我在全职工作期间遇到的问题的一小部分样本。 2017年让我结束了将我的加密货币交易机器人*投入在线的工作,在此之前,我花了几个月的时间与纽约市学校系统的服务提供商签订了合同,为其年度日历制作创建了内容管理系统。 目前,我在Coursera上完成了Andrew Ng的机器学习课程的80%。 *注意:该机器人只是短暂在线,因为它很可能会赔我钱。 在市场上赚钱的艺术是一门独立的学科,我的主要目标是为了学习和成长而继续对软件工程充满热情。 机器人的主要作用是选择一个基于个人兴趣的项目作为我的工作重点。

因此,回到现在,是在2018年初,我经历了很大程度的康复,继续在Voice Coding的专家级工作,最近我一直在回想起全职担任软件工程师。

这使我想到了本文的主题:

我在TripleByte遇到了多个在线广告,该公司声称他们已经弄清楚了如何解决程序员的面试问题。 他们有明确的宣言和常见问题页面,描述了他们如何实现此目标的价值观和过程。 总而言之,他们描述了他们对客观性的关注,认识候选人的长处,提供了清晰而有价值的反馈,标准化了他们的流程以及评估了基于证书的能力。

我很感兴趣,并希望这是打开我的全职工作选择的好途径,我参加了他们的多项选择的“前端”技术考试,并且评分机器人告诉我我做得很好。 受到鼓舞,不愿浪费时间,第二天早上10点,我报名参加了远程屏幕共享技术面试,我收到一封确认电子邮件,其中包含一些有关如何准备的有用建议,我应该提到这是其中之一。如宣言所述,帮助候选人了解期望的核心价值观。 我仔细阅读了他们推荐的所有资源,并根据他们的建议准备了项目样板。 我选择了create-react-app,并连接了redux。

在我看来,TripleByte已经开发了一些出色的系统。 可以说,他们的业务实际上是工作流程和管理优化,甚至没有那么多的意思,但它却具有能够进行大量技术面试的副作用。

我想知道他们是否还能保持质量? 他们如何充分利用自己的系统为他们的宣言中概述的潜在工程师提供价值?

第二天早上10点,我登录了一个Google hangouts屏幕共享,另一端遇到了一位友好的工程师。 为了支持他们的客观性和减少偏见的核心价值,我们跳过了任何个人或专业介绍,而在两个小时的头一个小时中直接进入了访谈的编码部分。 实时编码部分之后是57分钟的进一步问题,分为来回问答循环和系统设计思想实验。 我们在通话的最后3分钟中有2分钟与我在一起,描述了我的背景和经验,而在最后1分钟中则花费了所有最后的问题,然后解释了我对下一步的期望。

我本人曾担任过面试官,曾亲自进行过多次技术面试,但我普遍认为事情进展顺利。

几天后,我收到了来自TripleByte的电子邮件,

嘿亚历克斯

不幸的是,我们现在不会继续处理您的应用程序。 面试是一个混乱的过程,我们知道在淘汰过程中不可避免地会犯错。 我们也相信能给我们采访的人们诚实的反馈。

我将在下面粘贴电子邮件的其余大部分内容,并对反馈进行评论,以更深入地了解他们的流程,并试图在各行之间阅读并弄清楚哪些反馈来自我们的人际互动,以及算法生成的位置。 我真的很喜欢我的面试官,并且我认为TripleByte在这里有一个好主意。 出于对他们专有系统的尊重以及他们为构建这样的系统所做的一切努力,我将编辑任何我认为会损害他们采访过程的有效性和价值的信息 。 或者换种说法,我不会给出测试的任何答案。 我打算在这里进行的工作是严格审查他们的流程,因为我不相信仅使用技术就足以解决破碎的技术面试流程

我们不要忘记这一点:

我们无法通过使用与创建问题时相同的思维方式来解决问题。 – 艾尔伯特爱因斯坦

TripleByte是否真正地改进了该过程,还是只是自动将导致技术面试过程中断的相同的人为偏见和错误判断质量?

所以这就是他们所说的:

我们很高兴与您交谈–我们从每次采访中都学到了很多东西。 我们希望这次采访对您来说也是一次很好的经历。 我们认为您对初级工程师显示出很大的力量,并且我们认为您有很大的潜力。

首先,我作为初级工程师的分类提出了很多想法和感觉,包括困惑,好奇心和挫败感。 关于为什么我被严重错误归类的原因,我能够理解的是,TripleByte可能无法很好地履行他们不重视凭据的既定使命。 正如采访结束时向我所说的那样,在我们开会之前,我的采访者对我的背景一无所知,显然,他学到的关于我的一切都来自我两分钟漫长的电梯演讲,直到会议结束。 。 经过反思,我在描述我的背景(从2014年初到现在)时犯了一个著名的错误。 如果您想让面试官充满信心,请不要将您所说的第一件事与您进入软件工程新手训练营有关。 尽管那是4年前的事,但显然我是立即被不可磨灭地盖过菜鸟的。 正如您将看到我的拒绝信继续所说,这是棺材上的钉子。 我致力于持续学习,而这次面试过程是我从中学到的很多东西。 强化的一点是,在进行技术面试时,每个方面都很重要,包括您如何谈论自己,无论您在知识广度和代码执行方面可以展示什么。 我还要提到的是,在我第一次专业演出的两年中,当我更加接近字典中“初级工程师”的定义时,我的工作要求实际上使我在更高级的类别中更加扎实。 我是软件团队中第一个,也是唯一一个雇用JavaScript的人。 关于技术堆栈和体系结构的许多决定最初是,或者最终变成了我自己的决定。 最终,我还负责任何其他前端候选人的面试。 就工程而言,我在团队合作方面享有很大的自主权和尊重。 在我最近的工程发展和发展期间,包括有偿合同工作和热情项目,所有工程决策都是我自己的,遍及整个堆栈。 我提供这些信息是为了说明初级工程师的任命有多么奇怪,但是鉴于访谈的故意背景盲目结构,我也许可以猜出它是如何发生的。 也许您认为初级工程师的分类错误是由于我确实在面试中很烂。 为了解决这个问题,这封信继续以……

您对和CSS进行了很好的讨论。 您编写了非常不错的惯用前端代码。 在系统设计问题上,您展示了对后端和前端体系结构关注点的扎实知识。 您的技术词汇非常好。 而且您很友好,我们很乐意与您交谈。

谢谢。 我的面试官也很友善,我也很喜欢和他谈话。 上一段中刚刚描述的人听起来像我想与之共事的人。 所以发生了什么事?

这是我们认为您可以改进的领域。 您在问题上很好地开始了工作,但后来陷入困境。 您在使用Javascript进行小规模编码时遇到了很多麻烦。 您被在问题中必须编写的一些CSS绊倒了。 我们没有看到我们在前端程序员中所需要的知识的深度:您没有表现出对的深入了解。 在问题上,您对整个体系有扎实的基本了解,但没有传达有关架构Web系统的专业知识。

因此,在本段中,我没有传达架构Web系统的专业知识。 当第一段赞扬我对后端和前端架构问题的扎实知识时,如何解决? 也许这些声音之一可能是我的人类面试官的声音,而另一种是技能评估机器人可以响应我的人类面试官生成的表单输入? 还是它们的某种组合? 另外,记得在采访中我对系统体系结构的评论时,我非常明确地指出,对于该问题有许多可能的解决方案,并且我正在考虑项目需求。 我在回答问题时对可伸缩性有所关注,并强调快速部署以开发MVP。

还有……关于“卡住”一词? 再一次,参考我进行技术面试的个人经验,我可以客观地指出自己从未陷入困境。 作为VoiceCoding的副作用,我非常擅长的一项技能是在做某事时大声说出自己的想法。 在这次采访中,我主要用键盘上的手,并且只有语音编码了一些重复的任务,这些任务通过使用语音来提高效率,因此我在编码时几乎总是可以使用自己的语音进行旁白。 我认为“卡住”的那一刻是候选人既不打字,不研究也不描述其过程的时刻。 我一直听起来像是AM广播中的NPR广播员。 我找到了解决任何阻塞问题的方法,但由于时间限制,最终未能完成整个玩具项目。 但这是重点吗? 难道我们所有人都不都是要大声讲话,以便面试官可以看到我们的想法吗? 他们在听吗? 加快需求,留下技术债务燃烧痕迹的员工的价值是什么? 平衡是关键,因为您也不想雇用某个开始研究汇编语言的人来对设置事件侦听器充满信心。 我的个人估计是,我介于两者之间的目标区域中。

而且,我绝对可以相信,我对尝试实现项目的CSS要求感到不满。 不过,这是我的批评:解决此技术难题的要求涉及按数字顺序进行解决。 第5步中的第2步是实现CSS的像素完美对齐。 最后,面试官毫不留情地让我前进,但在我浪费了大约25分钟的时间进行研究之前,我没有这样做。 在那段时间里,我的叙述的一部分包括我在一家公司工作了两年的事实,我的票中有95%是工程问题,最终的布局可以由Bootstrap处理。 CSS目前不是我的理想选择,但是与其他所有工程挑战一样,在我的日常工作更多的环境中,我充满信心,我将迎接挑战。 而且真实的是,任何“前端”工程面试都可能会强调这一技能。 在这方面我还没有做更充分的准备 。 当我向面试官描述我的工程思维过程之前,他强制要求以数字方式执行这些步骤,因此我要完成模型和视图之间数据流的架构设计,并最终节省样式。 这就是我在现实生活中要做的事情, 如果我有一位工程师可以与我面试,他可以做出出色的视觉设计,但不能正确地连接组件视图和状态,我会发现有意义的缺陷,而不是其他缺陷的方式。

要与没有太多行业经验的候选人一起前进,我们需要看到卓越的实力。 您在面试的许多部分都做得不错,但是我们没有看到我们需要的任何领域的出色实力。

由于“很多行业经验”和“超凡实力”是不确定的,因此,这完全属于可以出于任何原因而无需任何证据而适用于任何人的模棱两可的拒绝类型。 这是面试任何领域的候选人的问题之一,我希望TripleByte能够弄清楚如何做到这一点。

这是我们的建议。

进行小规模编程将很有用。 在编程问题中的某些情况下,您会陷入与前端开发不直接相关的次要编程错误。 为了更好地做到这一点,您可以尝试从LeetCode这样的来源练习小问题。 阅读其他人在解决特定问题后如何解决这些问题特别有用-通常其他人会发现您没有想到的很酷的解决方案。 这种做法通常对您的编程很有用,尤其是在面试中。

再次,我从来没有“卡住”。 我演示了在构建对机器有意义的控制流和条件执行时的人类过程。 这是一个反复的过程。 有一次我打开了一个CodePen,以便在我的一个化简器上执行快速的TDD会话。 我的过程包括暂停和进步,从未被“卡住”。

您在CSS方面有些挣扎。 全面的CSS能力真的可以帮助您成为前端工程师。 本教程非常好。 我们建议您浏览前几节,直到您找到了新手入门的资料,然后尝试实施示例,直到可以快速轻松地完成。 另外,请查看有关CSS规则层次结构的文章,CSS规则是比较混乱的CSS概念之一。 如果您真的想发展CSS专业知识,可以阅读本书…

太客气了。 我拥有一个事实,那就是我在定时的实时编码项目中全神贯注于CSS的执行。 面试后的第二天,我完成了该项目的工作,进行了部署,然后将链接以及感谢信发送给了我的面试官。 我在工作时使用了TimeTracker,将项目的样式设置为原始规格确实比其他任何部分都要花更长的时间,但那段时间包括了研究工作。 猜猜是什么,现在我知道该怎么做,并且能够在更少的时间内从头开始再次执行此项目。 这就是我们工作的本质。

没有人确切地知道当他们开始解决问题时,但是重复会滋生熟悉和模式识别。

要了解有关前端开发的更多信息,也许您应该在Twitter上关注Dan Abramov和Sara Soueidan。 也许尝试使用各种有趣的前端技术并使用它们来构建应用程序。 一些有趣的功能包括D3库,SVG和不同的前端框架。

我碰巧已经跟着Dan了,而实际上让我受到注意并被雇用的第一份全职工作是我的简历上有D3。 我还密切关注Eric Elliott的著作,该著作的撰写软件系列为我继续发展成为工程师奠定了基础。

拒绝信的下一段建议我重新学习计算机科学,算法和运行时的知识,并提供一些很好的资源。 所有好的建议。 尽管我对数据结构和时间复杂性的讨论感到非常满意,但我仍在努力不断学习,并将为这些主题投入更多时间。

听起来您在面试中感到非常压力。 真的很糟糕:(。可能值得做些什么,以使自己对面试变得更加自在。随着时间的流逝,人们会变得不那么紧张,因此在某种程度上,随着您进行更多面试,这个问题可能会消失。面试过程中的压力很可能是练习练习,在压力下练习编码很有意义–例如,可以通过找朋友问编码问题来做到这一点。

那是我的面试官,还是拒绝信机器人? 我确实谈论过一些压力,但是在面试开始时以及在我从事玩具项目时有一次以友好聊天的方式谈论了压力。 这里的良好反馈永远不会低估我们的言语如何影响他人的看法。

我们认为您的潜力很大,如果您在四个月内仍在找工作(我们当然希望您那时能很高兴被聘用),或者下次您找工作,我们很乐意与您交谈。想要一份工作。

再说一次,我们知道这不是一个完美的过程,我们很想听听您关于如何改进它的诚实反馈。 我们也很高兴听到您还有其他疑问。

最好,

三字节组

谢谢! 同时也祝大家
亚历克斯

对我来说,也很突出,在拒绝信中甚至没有提到过第二天我完成,部署并提交了完整的玩具工程问题的事实。 即使我没有在面试过程中按时完成项目,该项目对我来说也是微不足道的。 我的经验并未反映出候选人应有的关注目标。

我的结论:我认为TripleByte还没有找到如何显着改善技术面试的方法。 在某些方面,他们只是犯同样的错误,而且速度更快。 我的意图是将本文视为建设性批评。 我真的希望他们继续在他们的系统上工作,因为改进破碎的技术面试过程是一项崇高的目标,将使我们所有人受益。

本文是系列文章的一部分