1. 程式人生 > 實用技巧 >桌面上的軟體圖示是白板_是時候結束對軟體工程師的白板採訪了

桌面上的軟體圖示是白板_是時候結束對軟體工程師的白板採訪了

桌面上的軟體圖示是白板

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
Image courtesy of the author
圖片由作者提供
Image for post
Advanced algorithm/data structure question. Image courtesy of the author
高階演算法/資料結構問題。 圖片由作者提供

招聘開發人員的頭痛(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
seldo 塞爾多

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.)

整個行業都圍繞著技術面試準備而建立-從基於訂閱的實踐站點(如LeetCodeInterviewCake )到模擬面試平臺(如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:

考慮到這些目標,技術面試應圍繞回答以下問題進行:

  1. Can you code?

    你會編碼嗎?
  2. 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
Vox Vox
Image for post
Vox Vox
Image for post
Vox Vox

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

桌面上的軟體圖示是白板