程式設計面試問題真的越難越好嗎?No!

機器之心發表於2019-02-19

為了節約成本,避免招到不想要的程式設計師,很多公司傾向於把面試問題設得比較難。但這樣一來,很多優秀的程式設計師也會被淘汰。究竟什麼難度的問題比較合適呢?本文作者透過資料調查給出了結論……

程式設計面試的問題其實沒必要那麼難,原因不僅是因為這種面試會給人帶來巨大的壓力。我們的資料表明,難度較大的程式設計面試問題在預測最終工作能力方面還不如簡單的問題。

時限壓力會加大程式設計難度。面試期間尤其如此。在正常環境下看似簡單的程式設計問題移到面試廳明亮的燈光下就成了棘手的難題。面試期間,你的思想會被壓力荷爾蒙籠罩(無力的是,對於一個艱難的程式設計問題,戰鬥或逃跑都不是有效的應對方案)。你幾乎可以感覺到這些問題被設計得異常困難。其實我覺得這不只是感覺而已。

面試問題設計刁鑽。由於僱傭一名糟糕工程師的成本遠遠高於拒絕一名好的工程師,公司往往傾向於設立很高的門檻,所以面試問題就會很難。從直覺上來看,這麼做很合理,因為問題越難,篩選程式就越嚴格。但是直覺並不是一個很好的指導。資料表明,難度較大的問題在預測候選人工作能力方面還不如難度較小的問題。

面試問題太難

比較難的問題的確可以篩掉那些不合格的工程師,但也會剔除一些優秀的人選。而簡單的問題雖然會在一定程度上避免篩掉優秀人才,但也會讓很多不合格的工程師過關。權衡這兩者是你在選擇最佳難度水平的面試問題時面臨的核心問題。而為了防止不合格的面試者過關,很多公司選擇了天平的另一端,即選擇偏難的問題。

然而,候選人是否正確回答了問題並不是面試中唯一的參考訊號。你也可以評估整個過程,例如,觀察他們花了多長時間來完成,他們的程式碼有多幹淨,他們在尋找解決方案的過程中花費了多大的精力。我們的分析表明,第二個訊號源(過程)和第一個訊號源(答案的正確性)一樣具有預測性。

但這裡還有一個額外的權衡。偏重過程訊號的問題比偏重答案正確性訊號的問題要容易得多。當你將過程歸結為候選人在尋找解決方案時的努力程度(過程中與問題難度最直接相關的方面)時,原因就變得很清楚了。如果一個問題很難解決,那所有的候選人都會努力去解決這個問題(即使是那些最終給出正確答案的人),因此努力程度沒有什麼差別。

相反,大多數候選人都能夠答對那些偏重過程訊號的簡單問題,因此不能提供什麼關於正確性的訊號。最佳難度的問題應該能夠平衡過程和正確性訊號,以從中提取最大的訊號。

我們面試了數千個工程師,然後根據多個維度對他們的回答進行打分,包括面試過程和答案的正確性,然後將這些分數與後面的表現進行比較。迴歸分析(檢視過程和正確性訊號)得出的資料表明,大部分預測性問題實際上比我們預想的要簡單(也比很多公司設定的簡單)。

較難的問題最終篩掉了很多合格的候選人,因此並不適合。所以如果你想讓招聘過程更準確高效,應該問一些更簡單的問題。

這並不是說你要降低門檻讓更多人透過。降低問題難度不等於降低面試難度。問題的難易程度和你的決策門檻是相互獨立的。即使問題簡單,你也可以設定非常嚴格的僱傭程式並嚴格地評估求職者。我們發現,簡單的問題可以提供更多訊號。但如何利用這些訊號取決於你。

簡單的面試問題也會降低壓力,這是一個非常重要的好處。壓力會影響面試者的正常發揮。面試者感覺舒適才會發揮出自己的最佳水平,這也能提高面試的預測水準。面試官往往會低估壓力的影響,而高估自己的能力。如果你是問問題的那個人,你就很容易會忘記 30-60 分鐘之內編出大量真正的程式碼有多麼困難。為了解決這個問題,我們在 Triplebyte 網站上制定了一條規則。規則表明,面試官必須給面試者三倍於他們認為解決問題所需的時間來回答問題。通常這才是正確的時間限制。

面試問題太短

降低問題的難度還有另外一個好處,即你可以在面試中加入更多的內容。換句話說,你可以設計多個較長的、相對簡單但難度逐步增加的問題,這樣你便可以透過多方面的綜合資訊來決定錄取與否。相比於短而難的問題,多而易的問題更能預測出候選人的水平。原因有二:

一,較長的問題往往更能反映現實生活中的問題。程式設計通常要在較長時間內使用相對較大的程式碼庫,面試中使用較長的問題顯然可以更好地接近這樣一種現實。

二,較長的問題可以讓你在候選人遇到困難時給予提示。我認為這一點至關重要,因為即使是大神級的工程師在編碼時也有可能在某個問題上掛掉。較長的面試題可以讓候選人有機會從錯誤中走出來,並展示出他們本有的技能。面試中的某一個失誤不應該毀掉整個面試。此外,額外的資訊也可以減緩面試的壓力,從而得到更準確的結果。

結論

面試問題太難反而會使公司陷入可能的惡性迴圈。一開始他們提出的問題太難、太短,這將導致他們得到的反饋資訊有較大的噪聲,從而做出次優的招聘決策;而另一方面,當他們發現招聘的人並不那麼優秀時,又會反過來透過更加嚴格的方式(通常意味著更難的問題)來「糾正」他們的錯誤,但這隻會讓他們的面試更加的不準確,如此往復。結果便是公司和候選人兩兩受害——公司錯失人才,候選人錯失工作機會;而且雙方還都飽受壓力。

因此,我希望面試人員能夠接受這個發現。這樣不僅可以使他們的工作變得輕鬆,而且更加準確。與不恰當的短期困難相比,提出一些簡單的、多步驟的問題所花費時間要少很多,而且更能檢測候選人處理日常工作的能力。

所以在此提一個小建議:如果你真的想讓面試更加準確,不妨從簡單的程式設計問題開始。這並不是要降低標準,而是為了獲取更多資訊,以聘請到合適的人。


原文連結:https://triplebyte.com/blog/interview-questions-are-too-hard-and-too-short

相關文章