您當前的位置:首頁 > 曲藝

10年技術招聘經驗的面試官,教你如何選技術人才

作者:由 ShowMeBug 發表于 曲藝時間:2021-03-03

​前言:又到了金三銀四的黃金招聘季,“面試造火箭,入職擰螺絲”的情況經常發生,不僅企業會浪費大量的篩選時間,而且也會讓來面試的技術牛人苦不堪言。那到底如何面試技術人員呢?相信這篇文章能幫到你,不僅說出了絕大多數技術人員的心聲,也給企業和麵試官提供了切實可行的方法。

10年技術招聘經驗的面試官,教你如何選技術人才

Follow Your Dreams Cancelled — Chris Devers (CC BY-NC-ND 2。0)

最近,一位雅虎工程師在網上怒斥:糟糕的技術招聘讓他一步步放棄程式碼面試。他說出了我對招聘雙方的挫敗感,但更重要的是,他揭露了一個事實:不良的招聘行為不僅不利於公司招聘,而且還會敗壞整個行業。

招聘怎麼糟糕了?

面試過於隨機和隨意,無法透露給你關於候選人的必要資訊。

公司期望聘請的優秀候選人是符合公司發展的。這可能會使HR將搜尋時間延長數月,並花費數萬美元。

初級開發人員通常很難在該行業立足。

你的公司可能為太多的高階開發人員支付了過多的費用,而沒有僱用足夠的初級開發人員。

候選人感到沮喪,離開了這個行業。

公司很少有好的候選人可供選擇。

在傳統的白板面試中,這些問題只會更加惡化。

白板用於繪圖,不用於編碼

技術招聘存在幾個問題。諷刺的是,面試過程中最大的問題之一,就是面試被一種非常低技術的程式碼面試工具佔據多年,這種工具就是:白板。

我之前已經寫過有關此問題的文章,但是值得對這些問題做一個簡短的回顧:

人們不會從上到下以整齊的線條線性思考或編碼

。他們將塊放在一起,經常剪下和貼上,等等……在白板上,這個過程需要塗改,而且看起來像是寫錯了。當然,這會使面試者感到緊張,也會誤導面試官的判斷。

人們對視覺提示有強烈的偏見

。候選人的筆跡絕對不會告訴你關於他們是否會編碼這一資訊,但面試官會從中看出書寫是否整潔、線條是否傾斜以及內容是否在限定空間範圍內作答這種細節產生很多誤解——哪怕面試官會有意識的避免這樣做。而且還有面試相關的文章和手冊,專門訓練候選人做這些沒實質用的“面子工程”。

在正常情況下表現良好的很多人在白板面試的壓力下會爆炸

。通常,你可以使用Google和鍵盤。沒有人會對你在寫演算法的時候進行計時和觀察你行為動態進行性格分析。在白板面試中,你處在一個陌生的環境,並且失去了日常工作中的可用的資源和協助,這讓你感覺失去了左膀右臂。

觀察錯誤反饋並進行糾正是一項關鍵技能

。白板不會警告你語法錯誤(每個人都會犯錯),但是面試官在尋找導致候選人不及格的原因時,往往會忘記這一點。透過執行程式碼,開發人員可以快速發現並糾正此類問題。每個人都會犯錯誤,我們應該給應聘者一個發現和解決錯誤的機會。

瞭解候選人在壓力下的表現會很有用,但是工作面試的情境已經很有壓力。你在白板上所做的所有事情,都使自己對應聘者做自己想聘用的真實工作的能力視而不見。簡而言之,除非你要僱用某個人來解決白板上的演算法問題,否則請不要使用白板來做面試。你正在做的就是引入很多不公平的偏見和任意的限制,而候選人在實際工作中將永遠不會遇到這些限制。

Using a whiteboard to interview coders is like rolling a pair of dice and passing or failing the candidate based on the number it lands on。使用白板面試程式設計師就像擲一對骰子,根據它們落下的數字來錄取或淘汰候選人。

如何招聘

尋找候選人可能是一個挑戰。如果你正在招聘高階開發人員,我建議你聯絡獵頭,而不是與招聘人員聯絡。獵頭:

更善於傾聽你的需求。

推薦更好的候選人。所有信譽良好的獵頭都會與最優秀的人才合作,並與業內最優秀的技術顧問一起對候選人進行

預篩選

始終推薦有前景的潛在候選人,而不是隨意推薦對某份工作真正感興趣的人。

不會向招聘公司收費。

如果你正在招聘初級開發人員,請考慮程式設計培訓學校和訓練營。他們目標就是幫助學生找到合適的工作。

接下來我們聊聊如何幫助公司更好地招聘候選人。我自己犯了所有的錯誤:我一直在進行白板面試。

多年來,我已經調整了聘用方式,今天我得到了更好的成績。我現在正在尋找不同的東西。

在我職業生涯的早期,我在白板上做了CS問題。那時,每個人似乎都認為語言理解不是重要的部分。如果考生對抽象和演算法有很好的掌握,並且可以用虛擬碼將其寫出,那麼我們可以在幾天內教會他語言語法。

當我任職不同公司,並開始聘請更高階的職位(例如團隊負責人,初創的CTO和架構師)時,這種策略就瓦解了。這種想法是正確的,但

僅適用於初級開發人員

高階職位需要一定的專業知識和精通能力。你可以是一名資深的多語言人,但是你最有價值的技能是你的專長。

招聘初級和中級開發人員

我曾經有一個 JavaScript 難題列表,測試諸如函式提升(function hoisting),非同步計時技巧(async timing tricks),變數作用域(variable scope)之類的東西。這些題目的問題在於,它們涵蓋了初級開發人員可以快速學習的內容。對於初級開發人員而言,快速進行一次結對程式設計比問任何語言相關的問題都要好。

面試初級開發人員並不是考核他們現在所知道的,而是考察關於他們學習新事物並獲得成長的能力和渴望。對於初級開發人員,我會有完全不同的問題集:

你編碼多長時間了?

那段時間你學到了什麼?

你是怎麼對程式設計感興趣的?

你是否有一些當前的程式碼示例可以給我看看的?

你是怎麼學習?

你對哪些領域和技術特別感興趣?前端?設計工作?節點?React?

你是否有興趣尋找導師?

招聘高階開發人員

如果你要聘請高階開發人員來處理特定的語言技術棧並奠定體系結構基礎,那麼對這種語言的專業化和深入理解將大有幫助。至少需要一年(通常是兩到三年),才能熟練掌握一種新語言並把一個 APP 架構得很好。

我列出了每個高階JavaScript開發人員都應該知道的問題。這些問題集中於那些構建堅實框架的基礎。如果候選人能夠回答這些問題,他們很有可能瞭解所有的坑。針對高階開發人員的問題將根據特定的語言技術棧而有所不同,但它們應集中在該語言的非常廣泛的基礎上,包括該語言可能的基本程式設計範例,以及如何將其最好地用於構建靈活的可擴充套件程式碼。

高階開發人員應該具有廣泛的知識,能夠快速學習幾乎所有語言,並具有與你的需求相適應的深厚專業知識。如果對方的專業度與你的要求不匹配,你將會為他廣而不精的技能最終付出高昂的代價。

你應該問每個人的一個問題

你在《破解程式碼面試》中找不到任何關於候選人的真正資訊。

我認為這種書籍的存在簡直是業界的恥辱。你想知道應聘者最近是否研究過演算法,還是想知道他們是否可以寫程式碼呢?

我想知道的是“這個人喜歡編碼嗎?”

你想了解開發人員是否總體上對編碼充滿熱情嗎?嘗試問這個:

“What is the project you’re most proud of?”

“你最引以為傲的專案是什麼?”

可以是他們為僱主所做的事情,也可以是他們在自己的時間上所做的事情……你正在尋找他們眼中的火花。他們對此有多興奮?他們談論時會變得更加生氣勃勃嗎?

彩蛋:如果他們在向你解釋某些內容時感到很興奮,那麼他們會更喜歡這次面試,並且他們更有可能對你的 offer 說“yes”。

是否想做相反的事情來徹底摧毀面試?那你就繼續玩演算法彩票吧。

演算法彩票(The Algorithm Lottery)

詢問隨機演算法問題等同於執行演算法彩票。開發人員記住了哪些演算法,差異很大,並且你在計算機科學中學習的大多數演算法在工作中都很少使用。

一些最好的,最有經驗的,最有生產力的開發人員,也會做不出演算法彩票。他們已經畢業多年了。距離他們上次看到歸併排序可能已經十年了。我知道你在那個學位上花了很多錢。我能感受到你的痛苦,但是請不要讓求職者感到痛苦。你在折磨候選人的同時,也在同等程度地傷害你代表的公司。

開發人員日常使用的大多數演算法都內置於

該語言中或在公共庫中可用。開發人員真正擅長的是常用概念,具體概念取決於領域的專業。

為什麼不問一些關於那些常見領域概念的問題呢?如今,大多數開發工作都是前端。如果你正在招聘前端人員,為什麼不要求開發人員點選 Instagram API 並在響應式柵格系統中顯示具有hashtag的影象?

如果你正在尋找初級或中級開發人員,那麼在他們需要幫助時不要讓他們失望。只需僱用他們作為初級或中級開發人員,並支付給他們相應的薪酬,同時認可他們會

在工作中學習。

如果你要聘用第一個開發人員,那顯然你應該尋找可以幫助你建立和指導強大的核心團隊的高階開發人員。

別碰白板

在我整個職業生涯中,最好的面試經歷是在我的第一份程式設計工作中。老闆正在帶我參觀公司,但他突然被叫走了。當他回來時,我正在幫助開發人員進行一個真實的專案。他當場僱用了我。

如果更多的面試是像這樣的,我認為世界將會變得更加美好。

The best way to prove you can code is to code。

證明自己可以編碼的最好方法是編碼。

你想知道應聘者是否可以編碼?要求他們編碼。真正的。在計算機上。檢視為此目的設計的線上程式設計環境,例如CoderPad。

使用計算機

和(可選)投影儀。如果候選人隨身攜帶一臺計算機,請讓他們使用自己的計算機。很多人會帶上自己的膝上型電腦。如果你要線上面試,那麼你已經領先於比賽了。我強烈建議進行線上工作和線上面試。

讓他們使用Google

並不要當成是問題,不論他們搜尋的內容是你可以輕鬆理解的,還是你問他們的那個問題的確切解決方案,嗯,別攔著他們 Google。如果我必須在現實生活中實現一個眾所周知的演算法,那麼我要做的第一件事就是 Google 一下,如果這個演算法你多年沒用了或者從沒用過,你也會 Google 的。

如果他們知道如何快速搜尋和找到可行的解決方案,那也是非常有用的。搜尋解決方案是所有軟體開發人員都需要的一項寶貴技能。

讓問題簡單死了。

在面試中,要求應聘者進行編碼的目的僅僅是親眼驗證他們知道程式設計,而不是試圖考察對方知識的全部深度和廣度。當我說“簡單死了”的時候,我的意思就是“簡單死了”。我見過才華橫溢、經驗豐富的人在面試的壓力被 FizzBuzz 卡住。把障礙設低點。

一個思路:嘗試將自己程式碼庫中的一些常見模式簡化為一個非常簡單的問題,然後與候選人結對程式設計(讓程式跑起來)。同時闡明這個問題。

觀看程式碼執行

。不同的開發人員將針對問題提出不同的解決方案。很多時候,我發現面試官在尋找特定的答案,當候選人的答案跟特定答案不一樣時,即使候選人是對的,他們也會認為是錯的。在計算機上,你可以觀察程式碼的執行情況,並證明其是否滿足要求,甚至可以證明哪種解決方案效能更高,從而可以進行富有成效的討論,你們可以探討為什麼一種解決方案可能比另一種解決方案更好,以及什麼使你你選擇了一個而放棄另一個。

說到觀看程式碼執行,如果你在面試之前花了幾分鐘時間做一些準備,則可以設定帶有一些單元測試的CodePen,並要求應試者透過測試。請參考上面的“使問題保持簡單死了”。別想著耍他們。

這是一個CodePen示例。你可以隨意取用:

10年技術招聘經驗的面試官,教你如何選技術人才

學習的文化

我們這個行業,對初級開發人員要求太苛刻了,這會讓你的團隊付出很多錢。應屆生或大學畢業生需要在導師的頻繁幫助下吸收他們的第一年經驗,但很多時候,他們被拋到最底層,羞愧到覺得自己不能問太多問題。

我非常支援對初級開發人員的指導和結對程式設計。你所有的高階開發人員應花費大量時間來指導其他開發人員,回答許多問題,並進行大量程式碼審查。

當然,你將需要高階開發人員的原始火力來佈置一些關鍵的體系結構,或編寫供初級人員使用的核心庫,但是不應期望你的高階開發人員具有超級英雄的超能力。相反,他們是領導者和指導者,其主要角色應該是確保團隊的其他成員始終處於正常狀態,並且確保任何初級或中級開發人員在幾分鐘之內都不會陷入困境。

給他們足夠的時間以確保你團隊的其他成員富有成效。

要記住:

The best way to be a 10x developer is to help 5 other developers be 2x developers。

成為10x開發者的最佳方法是幫助其他5個開發者成為2x開發者。

結論

現在是時候調整技術招聘的態度了。

Instead of looking for reasons to reject candidates, we need to look for reasons to hire them。

與其尋找拒絕候選人的理由,不如尋找僱用他們的理由。

他們有學習的熱情嗎?

有成熟的編碼能力嗎?

他們相信你的公司價值觀嗎?

他們對你的工作感興趣嗎?

他們能否在你的團隊中立於不敗之地?如果沒有,他們會迅速而熱情地學習嗎?

如果這些問題的答案是肯定的,錄用他們。

翻譯:凱西,校準:阿毛,MOOKEY

宣告:此譯作僅供學習交流用,不用做商業用途。

原文連結:

https://

medium。com/javascript-s

cene/tech-hiring-has-always-been-broken-heres-how-i-survived-it-for-decades-b7ac33088de6

CodePen:面向前端設計人員和開發人員的社交開發環境。你可以在此建立和部署網站,展示作品,建立測試用例以學習和除錯以及尋找靈感。

https://

codepen。io/ericelliott/

pen/ONaMbG

CoderPad:一個實時協同的線上程式碼面試平臺。

https://

coderpad。io/

CodePen 和 CoderPad 都是海外的網站,國內訪問會不穩定。ShowMeBug 集成了這兩者的功能,是一款數字化驅動的互動式程式碼交流的技術面試工具,讓使用者體驗矽谷流行的像真正工作中一樣的程式碼面試,透過線上筆試場景和線上面試場景兩大法寶讓企業結構化、規模化、自動化、智慧化的進行技術招聘從而節約大量的面試時間。

憑藉優秀的產品體驗和需求的激發,ShowMeBug 增長迅速,註冊使用者從去年底的 3600 增長至現在的 90000+ ,面試官超過 5000 ,覆蓋的科技公司約 3500 家。同時,ShowMeBug 也獲得了頂級資本的青睞,半年內獲得奇績創壇、盈動資本、變數資本和真格基金的投資。開箱即用:您的瀏覽器不被支援