桌面上的软件图标是白板
In 2017, prominent software engineers took to Twitter to confess that they would fail a whiteboard interview. A popular way to evaluate programmers of all experience levels, “whiteboarding” involves presenting candidates with a computer science problem to solve on a whiteboard in real time. Engineers have been complaining about them for years.
2017年,著名的软件工程师在Twitter承认,他们会失败白板采访。 评估所有经验水平的程序员的一种流行方法是“白板”,涉及向候选人提出计算机科学问题,以便在白板上实时解决。 多年来,工程师一直在抱怨它们。
David Heinemeier Hansson, the founder of Ruby on Rails, one of the most successful web frameworks in history, led the way. Top developers from Google, Microsoft, and the New York Times joined in.
Ruby on Rails的创始人David Heinemeier Hansson是历史上最成功的Web框架之一。 来自Google,Microsoft和《纽约时报》的顶尖开发人员也加入了进来。
Yet whiteboarding still constitutes a core part of the interview process at many tech companies, especially at FAANG (Facebook, Apple, Amazon, Netflix, and Google) and unicorn companies.
然而whiteboardi体中仍然在许多高科技公司构成了采访过程中的核心部分,尤其是在舫(在Facebook,苹果,亚马逊,Netflix和谷歌)和麒麟公司。
But the new normal of remote recruiting during the coronavirus pandemic presents an opportunity for recruiters, tech leaders, and the entire software industry to reexamine the original purpose of whiteboarding interviews. We need to ask whether they deliver on those goals and look at who they serve — computer science graduates — and who they don’t — those coming from nontraditional backgrounds. We need to realize that remote interviewing only makes the problem worse.
但是,在冠状病毒大流行期间进行远程招聘的新常态为招聘人员,技术领导者和整个软件行业提供了重新审查白板面试最初目的的机会。 我们需要询问他们是否实现了这些目标,并看看他们为谁服务—计算机科学专业的毕业生—而不是谁—来自非传统背景的人。 我们需要意识到,远程采访只会使问题变得更糟。
We need to implement alternatives that more effectively and inclusively measure engineering talent, team fit, and growth potential in video and phone interviews. It’s the most important reform toward a more diverse and inclusive industry.
我们需要实施替代方案,以更有效,更全面地衡量视频和电话采访中的工程人才,团队契合度和增长潜力。 这是朝着多元化和包容性行业发展的最重要的改革。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/b20b11d52ee70f3b26fbe0249ebd9260.png)
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/7638628116470260d6035fdc5b5465e4.png)
招聘开发人员的头痛(The headache of hiring developers)
Getting into Google is more difficult than getting into Harvard. (The former has a 0.2% acceptance rate against the Ivy’s 4.9%.) Top tech companies are well-known for conducting grueling interviews, especially for software engineers.
进入Google比进入哈佛更困难。 (前者的接受率为0.2%,而常春藤的为4.9% 。)顶尖的高科技公司以进行艰苦的采访而闻名,尤其是软件工程师。
When faced with thousands of applicants, how does a company sift through applicants, shortlist the best, and hire the very best? No matter the industry or role, recruiting is difficult. Companies inevitably hire a poor performer on occasion and allow excellent candidates to slip through.
当面对成千上万的申请者,如何通过申请公司筛,候选名单是最好的,并聘请最优秀的? 无论行业或角色,招聘都很困难。 公司不可避免地会聘请表现不佳的人,并让优秀的候选人脱颖而出。
It is incredibly difficult to evaluate a candidate’s technical skills without actually working with them.
如果不与候选人实际合作,就很难评估候选人的技术技能。
Hiring software engineers is particularly difficult. Competition for top talent is high. There are over 150,000 open roles on LinkedIn and “software engineer” consistently ranks as the most in-demand job, even during a pandemic. The primary pain point: It is incredibly difficult to evaluate a candidate’s technical skills without actually working with them.
雇用软件工程师特别困难。 顶尖人才的竞争非常激烈。 在LinkedIn上有超过15万个公开职位,即使在大流行期间,“软件工程师”也始终是需求最大的职位。 主要的痛点:如果不与候选人实际合作,很难评估候选人的技术技能。
Common ways companies conduct technical screens include:
公司进行技术筛选的常见方式包括:
- Take-home projects where a candidate is given a few days to build a simple web app 带回家的项目,给候选人几天的时间来构建一个简单的Web应用程序
- Code review of existing work现有工作的代码审查
- Quiz questions on coding and web fundamentals关于编码和网络基础知识的测验问题
- Solving algorithm and data structure questions in a one-on-one whiteboard interview在一对一的白板面试中解决算法和数据结构问题
With all the criticism and ample alternatives, why do companies still conduct whiteboard interviews?
有了所有批评和足够的选择,为什么公司仍然进行白板采访?
有礼节或必要的邪恶? (Hazing ritual or necessary evil?)
When computers were first invented, time on the computer was expensive. It was not uncommon to write code on a piece of paper before inputting to a computer. Computer programming has changed a lot since then. Although sketching out a system or handwriting code can help one plan and more deeply understand a piece of software, real-world programming today leans heavily on different frameworks, libraries, and Google searches. Building functional and beautiful software requires a profound understanding of how all of these tools build upon each other and at least a basic understanding of how they work under the hood.
最初发明计算机时,计算机上的时间很昂贵。 这是并不少见输入到计算机之前,写在一张纸上的代码。 从那时起,计算机编程发生了很大变化。 尽管草绘一个系统或手写代码可以帮助制定一个计划并更深入地了解一款软件,但当今的现实世界编程在很大程度上依赖于不同的框架,库和Google搜索。 要构建功能强大且美观的软件,需要对所有这些工具如何相互构建具有深刻的了解,并且至少需要对它们在幕后的工作方式有基本的了解。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/ebc7845908cb2abbbbbb35b985f45eff.png)
Why remove the normal tools a programmer now has at their disposal, including the obvious: a computer? Why ask algorithm and data structure questions?
为什么要删除程序员现在可以使用的普通工具,包括显而易见的工具:计算机? 为什么要问算法和数据结构问题?
Some say it is an important “rite of passage,” an inevitable hurdle to conquer on the road to becoming a software engineer. Interviewing should not be used as a hazing ritual.
有人说这是重要的“通过仪式”,这是征服成为软件工程师之路的必然障碍。 面谈不应该用作令人讨厌的仪式。
Some posts about the topic argue that studying algorithms shows a candidate’s eagerness to learn. Successful candidates, beginners and experienced programmers alike, spend hours preparing for these types of interviews.
有关该主题的一些文章认为,学习算法表明候选人渴望学习。 成功的应聘者,初学者和经验丰富的程序员都花时间准备这些类型的面试。
There is an entire industry built around technical interview prep — from subscription-based practice sites like LeetCode and InterviewCake, to mock interview platforms like Pramp, and entire boot camps devoted to algorithms and data structures. The fact that even experienced developers use these supplemental and often costly resources proves the point: In general, a developer’s real everyday work has little to do with the questions asked in a whiteboarding interview. (There are also plenty of other ways to measure curiosity and hustle.)
整个行业都围绕着技术面试准备而建立-从基于订阅的实践站点(如LeetCode和InterviewCake )到模拟面试平台(如Pramp) ,以及致力于算法和数据结构的整个新手训练营。 即使是经验丰富的开发人员也会使用这些补充性的且往往是昂贵的资源这一事实证明了这一点:总的来说,开发人员的实际日常工作与白板面试中提出的问题无关。 (还有许多其他方法可以衡量好奇心和忙碌程度。)
The most compelling reasons I found for using technical screens are to determine whether a candidate is lying about their programming abilities and to better understand their thought process and collaboration style.
我发现使用技术性屏幕的最令人信服的原因是确定候选人是否对自己的编程能力撒谎,并更好地理解他们的思维过程和协作风格。
With these goals in mind, technical interviews should be centered around answering these questions:
考虑到这些目标,技术面试应围绕回答以下问题进行:
- Can you code? 你会编码吗?
- Can you collaborate? 你可以合作吗?
Coding on a whiteboard, or during Covid, on a noncompiling text editor or Google Doc while on Zoom (I have been asked to do both) are not the best ways to evaluate these skills.
在白板上或在Covid上进行缩放时,在非缩放文本编辑器或Google Doc上进行编码(要求我同时执行这两种方法)并不是评估这些技能的最佳方法。
多样性问题 (The diversity problem)
I recently shared my path to starting my first software engineering role. After failing to make it through the University of California, Berkeley’s introductory computer science courses, I spent the early years of my career in a communications role before eventually finding my way back.
最近,我分享了我开始担任第一个软件工程职位的道路。 在未能通过加州大学伯克利分校的入门计算机科学课程取得成功之后,我度过了职业生涯的早年,担任沟通职务,后来终于找到了归宿。
My key learning was that although companies rarely require a computer science degree (job postings will often say something like “CS degree or equivalent”), the interview process heavily favors a formal background in computer science. As someone with experience in university CS as well as a boot camp — I did Flatiron’s full-stack program earlier this year — people often ask me the difference between the two types of education.
我的主要学习是,尽管公司很少需要计算机科学学位(职位招聘通常会说“ CS学位或同等学历”),但面试过程在很大程度上有利于计算机科学的正式背景。 作为具有大学CS经验和新手训练营的人-今年早些时候我做了Flatiron的全日制课程-人们经常问我两种教育之间的区别。
College courses primarily focus on computer science concepts and principles including algorithms and data structures, which are necessary to succeed in a whiteboarding interview. Most boot camps spend little-to-no time on this type of material. Flatiron focuses on learning web development, and you build several full-stack applications in the program. I never built a web application or used a framework in college CS.
大学课程主要关注计算机科学的概念和原理,包括算法和数据结构,这对于成功进行白板面试是必不可少的。 大多数新手训练营都花很少甚至没有时间在这种材料上。 Flatiron专注于学习Web开发,您可以在程序中构建几个全栈应用程序。 我从未在大学CS中构建过Web应用程序或使用框架。
While both types of education are valuable, boot camps provide an important entry point to software engineering for underrepresented groups. Boot camp grads come from a diverse range of backgrounds. Many slipped through the cracks in college or didn’t see software engineering as a viable path until later in their careers.
尽管两种教育都很有价值,但新手训练营为人数不足的群体提供了软件工程的重要切入点。 新兵训练营的毕业生来自不同背景。 许多人在大学里经历了裂痕,或者直到职业生涯后期才将软件工程视为一条可行的道路。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/ab59de4d865291d26511c4b35ae2acf8.png)
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/4463bfed2bc525b27797909487a2d795.png)
Whiteboard interviews are also intimidating, especially for those who suffer from imposter syndrome (which disproportionately affects women and people of color). The remote experience could compound the intimidation factor. It did for me.
白板面试也令人生畏,尤其是对于那些冒名顶替综合症的患者(这种现象对妇女和有色人种的影响尤其严重)。 远程体验可能会加剧威吓因素。 它对我有用。
We are all now experiencing how difficult it is to form a personal connection on Zoom, especially with someone new. It’s that much more difficult when working outside of your confidence zone.
我们所有人都在经历在Zoom上建立个人联系的困难,尤其是与新朋友建立联系。 在您的自信范围之外工作时要困难得多。
Because my job search coincided with the first few months of Covid lockdown, all of my interviews were remote. Whiteboarding interview questions provided me with little opportunity to authentically convey my ability to work effectively with others. Even for something as simple as writing a clear commit message, collaboration, and communication are crucial for effective software development. I was unable to show these strengths or even just be myself. I know I’m not alone.
由于我的求职恰逢Covid停职的前几个月,所以我所有的面试都是遥遥无期的。 白板面试问题为我提供了很少机会真实地传达我与他人有效合作的能力。 即使只是编写清晰的提交消息之类的简单操作,协作和通信对于有效的软件开发也至关重要。 我无法展现这些优势,甚至无法表现自己。 我知道我并不孤单。
有更好的方法 (There’s a better way)
Plenty of companies recruit talented engineers without whiteboarding. My previous company, Artsy, does not have any technical component in their interview process. Even early on, they were able to recruit some of the best engineers in the industry. There are simply so many better ways that more effectively answer: Can they code? Can they collaborate?
很多公司在招聘人才时都没有白板。 我以前的公司Artsy在面试过程中没有任何技术要素。 甚至在很早的时候,他们就能够招募到业内最好的工程师。 有很多更好的方法可以更有效地回答:它们可以编码吗? 他们可以合作吗?
我的前三种选择: (My top three alternatives:)
1.配对程序 (1. Pair program)
Pair programming — working with another developer on one machine — has grown in popularity to boost code quality and help engineers grow. When I was interviewing at my current company, VTS, the second of my three interviews was a “pair programming” exercise in which the interviewer and I collaborated on implementing a few simple methods in JavaScript. Simply framing the interview as a collaborative exercise alleviated so much of the anxiety. I felt like I could ask questions and bounce ideas off of my partner. Remote pairing is now part of many developers’ daily workflow so is, in itself, a valuable skill to assess.
结对编程(与另一台开发人员在一台计算机上合作)已变得越来越流行,以提高代码质量并帮助工程师成长。 当我在当前的公司VTS进行采访时,我的三个采访中的第二个是“成对编程”练习,在这个练习中,我和访问员共同合作,以JavaScript实现了一些简单的方法。 简单地将访谈定为一项协作练习,可以减轻很多焦虑感。 我觉得我可以问问题,从我的伴侣那里跳出想法。 现在,远程配对已成为许多开发人员日常工作流程的一部分,因此,远程配对本身就是一种有价值的评估技能。
Simply framing the interview as a collaborative exercise alleviated so much of the anxiety.
简单地将访谈定为一项协作练习,可以减轻很多焦虑感。
2.讨论过去的代码 (2. Talk through past code)
A past project or pull request is preferable, but take-homes work too. Use the candidate’s previous code as a jumping-off point to determine how they understand code, make trade-offs, and communicate their decisions. I read that companies worry about cheating — candidates asking friends or paying a developer on Fiverr to complete the assignment. Instead of training interviewers to ask esoteric whiteboarding questions, train them to ask thoughtful and thorough questions about previous work.
过去的项目或请求请求是更可取的,但是实干也可以。 使用候选人的先前代码作为出发点,以确定他们如何理解代码,进行权衡并传达他们的决定。 我读到,公司担心作弊-候选人问朋友或向Fiverr付钱给开发人员完成任务。 与其培训面试官提出深奥的白板问题,不如培训他们询问关于先前工作的周到且彻底的问题。
For companies who choose this method, be respectful of your candidate’s time. Many of my peers are balancing other jobs and taking care of kids at home. I completed several take-home assignments for companies that were either not seriously considering me or never had a conversation with me about the work and moved onto the next step. If take-homes are time-boxed, designed to help engineers learn something new, and followed by a comprehensive discussion, they can be well worth the effort.
对于选择这种方法的公司,请尊重您候选人的时间。 我的许多同龄人正在平衡其他工作,并在家照顾孩子。 我为不认真考虑我或者从未与我进行过有关工作的交谈的公司完成了几次实地考察任务,然后转到下一步。 如果带回家是有时间限制的,旨在帮助工程师学习新知识,然后进行全面讨论,那么值得付出努力。
A lot of people think references are fluff, but most companies conduct references poorly.
许多人认为推荐是虚假的,但是大多数公司的推荐都做得不好。
3.倾斜参考...但是要彻底 (3. Lean into references… but be thorough)
Past performance is the best indication of future performance. Talking to people who have previously worked with your candidate can provide invaluable insight into how they will perform in a new context. A lot of people think references are fluff, but most companies conduct references poorly. Asking a set of specific questions and digging for substantive answers will reveal more than you think. Here are some examples used by Artsy, which heavily weighs references in their interview process:
过去的表现是未来表现的最好标志。 与以前与您的候选人一起工作过的人交谈可以为他们在新环境中的表现提供宝贵的见解。 许多人认为推荐是虚假的,但是大多数公司的推荐都做得不好。 提出一系列具体问题并挖掘实质性答案将比您想像的更多。 以下是Artsy使用的一些示例,这些示例在面试过程中非常重视参考文献:
In your capacity as [relationship to the candidate], how many people have you worked with in the candidate’s role?
以您与[与候选人的关系]的身份,您曾与多少人一起工作过?
In just terms of job performance, how do you rank the candidate out of that [X] many people?
仅就工作表现而言,您如何在[X]个人中对候选人进行排名?
What’s the difference between [the candidate’s rank] and number one? How would the candidate need to grow to get to number one?
[候选人的等级]和第一名有什么区别? 候选人将如何成长才能获得第一名?
害怕寻求帮助 (Fear of asking for help)
Whiteboard interviews were hard for me, not because the questions were too challenging or I didn’t want to put in the work. They were hard because I was scared to ask for help. Knowing when and how to ask questions, whether from your colleagues or Google, is one of the most important skills to develop as an engineer. Virtual whiteboarding sessions do not allow for sufficient back-and-forth between the candidate and the interviewer. In the remote setting, it is so hard to be vulnerable.
白板面试对我来说很难,不是因为问题太具有挑战性或我不想参与工作。 他们很难,因为我不敢寻求帮助。 无论是从同事还是从Google知道何时以及如何提出问题,都是培养工程师最重要的技能之一。 虚拟白板会议不允许候选人与面试官之间来回充分的交流。 在远程环境中,很难受到攻击。
When I saw veteran software engineer Estelle Weyl’s tweet from the 2017 trend, I deeply identified with the fear of admitting you don’t know something. Amidst her mostly male colleagues revealing their inabilities to sort a binary tree, she said:
当我从2017年趋势中看到资深软件工程师Estelle Weyl的推文时,我深深地感到害怕承认自己不了解某些东西。 她在大多数男性同事中发现自己无法对二叉树进行排序,她说:
Eliminating whiteboard interviews didn’t happen in 2017, but maybe it can in 2020.
在2017年没有消除白板面试的机会,但在2020年可能没有。
翻译自: https://onezero.medium.com/its-time-to-end-whiteboard-interviews-for-software-engineers-8a805abcb3ad
桌面上的软件图标是白板