[博客翻译]2020年员工职位面试中我学到的东西


原文地址:https://amyunger.com/blog/2020/09/16/6-things-i-learned-interviewing.html


--

艾米·昂格

作为服务提供商的错误学习 | 我在GitHub上以编程为生 🐛 | 曾在Heroku任职 💜 | 曾在Getty Images工作 📸 | 她和她的团队


6条从面试中获得的教训

日期:2020年9月16日

分类:博客


引言

最近,我花了大约9个月或2个月的时间寻找新工作,这是我职业生涯中首次寻求“Staff”级别的工程职位。我在推特上实时分享了这个过程,这对一些正在考虑初次寻找此类职位的人有所帮助。这篇博客可能对你不那么相关,原因如下:

  1. 我只与大约10家公司进行了交谈,并最终选择了4家进行最后面试。
  2. 我主要关注的是拥有1000-2000名工程师的公司,没有面试任何一家大型科技公司(FAANG)。
  3. 我没有计算机科学学位,我不认为LeetCode风格的面试是衡量工作表现的指标,我认为在Staff工程师的角色中,你可能不需要编写生产代码也能成功。我知道这些观点存在分歧,但这是我在写这篇文章时的立场。

定义的多样性

首先,让我们从基本的职位名称开始。每接触一家新公司,我都要深入了解他们的级别体系。有的公司有“Staff”级别的概念吗?“Staff”是一个明确的头衔,还是包含“Staff+”级别的其他职位?这之间有很大的差异。

其次,不仅每个公司的对Staff角色的理解不同,即使在同一公司内部,也可能存在多种Staff级别的工作模式。Will Larson概述了四种不同的Staff角色原型,但这更多适用于小型或中型公司。我在Salesforce(5万人规模)中尝试划分了角色类型,但每个公司甚至每个经理可能对招聘的技能组合有自己的假设,而且往往难以明确表达。

你可以通过一些问题来更好地理解角色,而不会引起争议。例如,询问该职位是否涉及编写生产代码,或者是否需要编程。如果主要是原型代码,可以找当前担任该职位的人询问他们最近一个原型项目投入了多少时间。你想要了解的是,这个角色会花多少时间编程(生产或原型),其余时间是会议密集还是写作密集?这个头衔提供了什么权限,以及你期望在非正式影响力中建立什么?

面试方式各异

像大多数工程职位一样,Staff级别的面试并没有标准流程来评估所需的技能。

最常见的做法是让Staff级别的候选人经历高级面试流程,期待他们能“完美”通过所有面试。这有几个令人沮丧的地方:一是许多Staff职位并不需要保持与高级工程师相同的技能更新,所以你的评价更侧重于你是否愿意准备技术面试,而不是实际的工作表现;二是你可能从未接受过专门针对Staff技能的面试,比如与产品团队、技术领导或跨部门协调等。

由于我只面试了四家公司,我没有发现明显的面试模式。大部分技术面试似乎在测试基础能力、团队合作和应对不确定场景的能力。然而,有一次特别的面试方式,他们试图在技术面试中测试Staff级别的技能,即要求应聘者指出面试官需求的模糊之处并推动明确化。坦白说,我没有足够的勇气成功做到这一点。但这比我想的要普遍。回顾那次经历,我认为我能识别出公司在测试适应模糊需求的能力还是推动清晰需求的能力,但我对此并不自信。有些人会在不那么在意的公司进行“预热”面试来帮助自己。

对于那些有专门针对Staff的面试流程的公司,我遇到的往往是稍微调整后的流程。我仍然会有1-2次纯粹的技术面试,但常常被解释为“只是为了确认你不是在瞎编”。我会遇到最困难的设计和行为面试,通常由看起来相当资深的人来主持。在某些地方,我甚至在整个面试过程中都没有与初级或中级工程师交谈。

有一家公司在我面试中增加了管理行为面试,这很好!强烈建议公司在Staff级别的面试流程中加入部分线经理面试的部分。这是唯一一家真正深入探讨Staff角色关键部分的地方:如何培养人才?如何处理冲突?如何建立影响力?你知道哪些事情值得坚持,哪些时候需要撤退?

除了管理行为面试,我还推荐以下类型的面试:

  1. 与初级人员搭档。无论是你还是他们,都有足够的背景知识,这样你可以根据日常工作中可能会遇到的动态来评估自己。这既有趣又有助于确保我在编程时不会显得粗鲁无礼。
  2. 展示你想解释的内容。这是一个很好的测试沟通能力和在被追问时能否承认“我不知道”的方法。

设计面试的亮点

我最喜欢的面试是那些略显简化但仍接近团队最近技术挑战或重大产品的设计面试。这有助于他们评估:1)我对他们的产品是否真的关心到足以做足准备?2)我是否有他们期望的判断力?特别是当你带着一定程度的权威进入公司时,这给了未来的团队成员一个机会,如果他们不信任你的判断,可以选择让你“失败”。对我来说,这些面试也帮助我了解团队的技术成熟度和工程质量。他们在哪些方面假设可以妥协?当我讨论特定的扩展问题或紧张的笔记时,他们是否点头赞同或微笑?

避免过度调整

有一家公司采用谷歌式的面试流程,先进行一般面试,然后考虑将你分配到哪个团队。这导致了各方的困惑(包括我自己),因为Staff工程师的工作职责和技能因团队和经理的不同而变化。由于我不知道要为哪种角色做准备,我不得不面试所有可能的Staff职位。一开始就进行对话会更好。

团队领导与其他Staff的区别

找到“团队领导”级别的Staff职位相对常见,我指的是那种没有管理职责,但在团队中担任最高级别的个人贡献者。常见的职责包括指导初级工程师、负责团队的重大发布或重构、解决性能问题等。公司通常是因为团队新成立、扩张或近期有人离职,无人能接手这样的角色而招聘。

要找到职责范围超过单一团队的职位就难多了。除了通过人脉网络,我几乎没有机会。即使在交谈过的公司(不仅仅是面试),我也通常有联系。在进行了完整面试的四家公司中,有两家甚至没有公开的申请职位。

由于这类角色不常被外聘,我在与招聘人员和一些招聘经理交流时遇到了很多困难。提到我考虑在其他公司担任向经理汇报的职位时,他们就会感到困惑。尽管我努力明确表示我对“Staff”的理解很广,但我还是听到一些“抱歉,我们公司目前还没有适合你的职位,除非我们规模更大”的回应。考虑到那些公司都有向经理汇报的职位,而我对向线经理汇报的职位非常感兴趣,我现在学会了从这个角度解读听到的信息:

  1. 许多公司并不招聘这类角色。
  2. 因为他们从未见过这样的角色,招聘人员可能并不知道公司内部有这样的职位。
  3. 当招聘人员问“你在找什么”时,唯一的正确答案是他们为你准备的职位,所以在理解招聘经理想要的Staff工程师类型之前,尽量模糊回答。

与招聘和面试策略

为了避免听起来你不适合,我建议在谈论你对Staff角色的看法之前,先与招聘经理讨论他们的技术背景。特别是对于在公司内部晋升的经理,他们可能不需要或不希望你具备作为Staff工程师的大量技能。我带来的一些技能可能让人觉得像是管理(其实是领导力:🎉),尤其是线经理可能会觉得你在越界。为该公司和经理定制“我如何补充管理团队”的陈述,可以巩固你作为外部候选人候选资格。反之,这可能是你在没有明确面试失败的情况下迅速失去机会的最快方式。

如果你打算稍微探索一下人脉,要意识到这可能会变得尴尬。Staff的角色和职责可能会快速且意外地变化,你的许多联系人可能已经跟不上你当前的工作。你需要温和地更新联系信息,如果他们对Staff角色有不同的看法,你又回到了之前的讨论。即使是轻微的更新也可能导致尴尬的互动,因为人们倾向于在自己的网络内招聘,因为他们认为自己了解你。你的技能提升打乱了他们对你的预期,可能导致意想不到的对话——而这本不应该在内部招聘中发生。

除了是否招聘特定类型的职位,还有是否愿意从行业外部招聘。特定领域的经验可能是你在Staff角色中取得成功的关键因素。对于某些公司,我对自己空降到一个全新的领域是否会感到舒适持保留态度。我有6.5年的经验,专注于构建围绕大量数据(图片、视频、容器镜像,现在还有Git仓库)的团队协作工具,这些数据有很多可变状态。广告系统的团队对我感兴趣吗?老实说,我不确定。管理运行数千个容器并无限期运行的产品与管理几乎无状态但事件繁多的小数据产品之间的架构差异巨大。用户无法撤销操作或取消链接,这带来了截然不同的技术考量。

LeetCode风格面试的普及程度

这完全取决于你的背景,但如果你来自一个重视人性化流程和包容性招聘的科技领域,你可能会有些惊讶。

如果你像我一样,认为LeetCode风格的面试并不能预测工作表现,你可能会好奇为什么这种情况仍然存在。

我所看到的情况是,申请者众多,公司宁愿接受一些假阴性(即低估了一些人的能力),也不愿冒险错过潜在的优秀人选。不幸的是,这意味着热门公司可能有着糟糕的面试流程,而初创公司则会效仿,因为“大公司都在这么做!”(