1. 程式人生 > >我問每個面試官的兩個問題,把工程流程用到軟體面試

我問每個面試官的兩個問題,把工程流程用到軟體面試

我最近一直在進行軟體工程師面試。面試開始時,我都會問面試官兩個問題,但至今沒有得到令我滿意的回答:

1. 你們面試的目的是什麼?

2. 如何評估你們的面試水平?

你們的面試目的是什麼?

面試官的回答多種多樣,只有極少數會說「其實我也不知道我們在尋找什麼樣的人」。他們大部分人的看法,在我看來,都屬於以下幾種:

  1. 要找到“最出色的”人才;
  2. 要搞清楚候選人是否適合公司;
  3. 要評估候選人能多好地完成他們正在面試的工作(這也比較罕見。注1:在我問的 11 家公司中,只有一家公司給出了接近的回答。)

在我接受面試的公司中,只有不到 10% 說:他們進行面試是為了評估候選人如何有效地完成應聘的工作

在我看來這點很荒謬:“適合的”招聘策略以及招聘“最好的”人才,這兩點篩選過濾掉了許多人才,但這是卻基於面試官的偏見,而不是候選人的能力。

如果你將評估候選人的工作能力看作是面試的重點,那麼這也揭示了現在諸多技術面試的不足之處。我本人從未在面試中,接受過團隊任務或優先順序任務方面的能力評估,相對於在 O(n) 時間內找到迴文詞(anagram)這樣的技術評估,這兩項能力可能對軟體工程師的工作更加重要

如何評估你們的面試水平?

面對我的這個問題,大多數公司的答案是“我們不評估”。(注2:“沒錯,我們對自己的員工很滿意,所以我要說,我們在招聘方面做得還不錯”,這樣的回答在我看來,其實並沒有評估招聘過程是否有效。)

如果你正在優化一個專案,而你的成功標準卻是“我不知道(標準),但我做了一些改變,結果似乎看起來更好了,”相信我,走出房間後你一定會被人恥笑的。然而,這點在招聘過程中似乎是可以被接受的。儘管在創業初期,團隊獲得的口頭承諾是特別重要的一部分,但大多數公司似乎都忽視了其招聘環節,幾乎沒有人將工程流程應用於招聘中。

要將工程流程應用到招聘中,第一步是評估你目前擁有的員工,你可以問問自己:目前表現最好的員工是面試過程中表現最好的員工嗎?如果不是,原因是什麼?大多數公司都會進行績效考核,也會保留當初面試的材料和相關資料,但很少會有公司將這些結合起來,以改進他們目前的面試過程。

這樣做總比什麼都沒做要好,但是你仍忽略了問題的另一半:那些你面試中過濾掉的人哪?

人們常說,拒絕一個好的候選人比招聘一個糟糕的候選人,承擔的風險要更小,但我不同意,在我看來它並沒有道理。我經常聽說,那些頂級公司缺少並渴求有才能的開發人員,而人才市場上卻幾乎找不到這類人,但也正是這些頂級公司,因為嫌棄候選人的學歷或資歷不足,或是沒有通過白板測試等這個那個的原因,拒絕刷掉了一大批人,其中就有它們想要的人才。這聽上去很諷刺,不是嗎?即使你認為縮小(已經很小的)人才範圍,仍比招錯人的風險要小,你至少應該確保,一開始選定的範圍是正確的。

這是一個非常艱難的問題:如果你能獲得一些資訊,它們足以改變你對候選人最初的看法,那麼你應該先僱傭他們。好吧,這是個悖論~ 但我們仍然可以嘗試緩解這個問題:

對現有員工進行面試

如果你想改變面試流程,可以先在現有員工身上嘗試。如果有人沒有通過面試,你應該問問自己,是否應該要解僱他。當然,你可能不會這麼做。

我聽說有一些公司是這麼做的,但我認為,絕大多數公司都不會這樣嘗試。

做一個“驗證集”

要確定認當前招聘策略是否有效的方法之一,就是深入瞭解一些被你拒絕的候選人,並判斷拒絕他們是否是正確決定。

但這存在一些問題:

  1. 它對那些沒有公共 Github/部落格/Twitter 等(社交平臺)的人不利。
  2. 有許多候選人的程式設計能力非常糟糕,而在面試過程中,要花更多的時間來發現這個問題。

儘管依然存在著問題,但我認為它對一些公司來說仍是一個好策略,特別是那些申請者數量較少的公司。

在現場面試中,這麼做一定是可行的。簡歷則很難適用,因為存在著很多不合格的候選人,但我認為這個策略可能還是有用的。

結論

在面試過程中,大多數公司似乎都是盲目的。我發現,有些招聘人員和招聘經理甚至不知道他們在找什麼樣的人才,而且幾乎沒有人嘗試更新和優化面試過程。

在少數幾個關注評估面試流程的公司中,大多數關注的是找到驗證候選人好壞的方法,而不是改變現有的面試流程,讓那些容易在“典型面試”中淘汰的優秀人才得以通過面試。(注3:Matasano 從那些在“傳統面試”中淘汰的人才那裡,吸取經驗教訓,獲得了極大的成功。)

如果你正在(作為面試官)為你的公司進行面試,我很樂意聽到你的看法!如果你正在(作為候選人)接受面試,我強烈建議你向面試的公司提出這些問題,以此來看看它們對此的反應,這會非常具有啟發性。