最後一次技術面試:我們能修復破碎的招聘流程嗎?
幾十年來,技術面試一直是軟體工程師的成年禮。從令人畏懼的白板挑戰到艱辛的 LeetCode 考驗,這個過程旨在篩選出「不合格」的人。然而,正如 Steve Yegge 在他那篇具挑釁性的文章《The Last Technical Interview》中所言,目前的系統從根本上就是破碎的。儘管採用這些方法的公司規模龐大且非常成功,但這個過程仍然是一個高風險的猜測遊戲,產生了無法接受的假陽性(false positives)和假陰性(false negatives)數量。
問題的核心在於信號與雜訊的比率(signal-to-noise ratio)已經崩潰。公司在面試流程上花費了數千個工程小時,卻經常聘用無法勝任的人,並拒絕了那些本可以成為超級巨星的人。業界已經趨向於一套代理指標(proxies)——演算法謎題和簡歷關鍵字——這些指標衡量的是候選人的面試能力,而非其工程能力。
提案:從面試轉向臨時僱用
Yegge 建議進行一場激進的變革:用「臨時僱用」(provisional employment)取代傳統的面試流程。與其進行一系列人造的測試,不如讓候選人在短期、有薪的基礎上執行實際工作。這種「營火」(campfire)方法模仿了技術工種中的學徒制模型,其中工匠(journeyman)只有在經過多年證實的工作表現後才能獲得認證。
在此模型下,候選人將處理現實世界的任務,而他們的表現將被記錄在一個可攜帶、永久的記錄中——一個跟隨他們到其他公司的認可或失敗的「印記」。目標是從一個 預測性 模型(猜測某人是否能勝任工作)轉向一個 經驗性 模型(觀察他們實際在做工作)。
反對意見:實用性與權力動態
雖然臨時僱用的理論很有吸引力,但 Hacker News 社群提出了重大的實用與倫理疑慮。最直接的問題是 高質量候選人的進入門檻。
"Lots of the best candidates have jobs and families and aren't going to give up their current job to try out for a company that's not committing," noted one commenter.
對於一名資深工程師來說,為了「臨時」試用而放棄穩定的薪水、醫療保險和 401k 是不合理的風險。這會造成一種選擇偏差,使得只有失業或走投無路的人才能負擔得起參與新系統的成本,從而可能排除掉該流程旨在尋找的那些「瑰寶」。
此外,批評者認為這並不會真正消除篩選問題;它只是將問題推向了更後端。如果一家公司對一個職位收到 1,000 份申請,他們無法臨時僱用 1,000 個人。他們仍然需要一個篩選機制——無論是簡歷篩選還是傳統面試——來決定誰能獲得臨時試用機會。
尋找更好信號的替代路徑
如果臨時僱用過於侵入性,那麼有哪些可行的替代方案呢?討論中強調了幾種策略,它們能提供比 LeetCode 更好的信號,且沒有六個月試用期的風險:
1. 工作樣本測試
許多人認為「金標準」已經存在:工作樣本測試(work-sample testing)。與其進行抽象的謎題,不如讓候選人執行與實際工作鏡像的任務。這可以是一個 2-4 小時的配對編程(pair-programming)環節,或是一個受控的帶回家測試項目(take-home project)。如果執行正確,這些比面試更具擴展性,且能提供技術能力的直接信號。
2. 開源貢獻
另一個建議是利用開源工作。要求候選人為真實項目貢書獻,可以提供一個透明、公開的記錄,證明他們具備處理複雜代碼庫、與他人協作以及提交高品質代碼的能力——而公司無需管理一名臨時僱用者。
3. 「人」的方法
一些經驗豐富的招聘經理建議,技術門檻通常是「渴望度」和「智力」的次要關注點。透過在面試中專注於關係與團隊契合度,並利用嚴格的三個月試用期(這在許多非美國市場很常見),公司可以降低聘用錯誤人員的風險,而不要求候選人候選人提前辭職。
系統性悖論
社群中最引人注目的觀察之一是「成功的悖論」。如果招聘流程如此破碎,為什麼 Google 和 Amazon 等公司會如此成功?
答案可能在於,對於萬億美元規模的公司來說,「假陰性」(拒絕了一名優秀的工程師)的成本是微不足道的,而「假陽性」(聘用了一名有毒或無能的工程師)的工程成本很高。目前的系統是為了 避免最差的情況,而非 尋找最好的。
最終,「最後一次技術面試」的的辯論揭示了業界內部的深層層次緊張關係。我們正處於企業對風險緩解的風險緩解需求與候選人對穩定性的需求之間。直到業界轉向更標準化、專業的認證制度——類似於其他工種中的執照專業工程師——技術面試很可能仍將是一個有缺陷但持續存在的儀式。