矽谷充滿了下面這種創業公司,它們瘋狂崇拜在面試中能夠答對幾道編碼難題的候選人,並認為僱傭這些人最終會帶來雙贏的局面:能夠解決演算法難題宣告著伴隨著他們的加入,背後的 VC 公司一定能獲得高利益回報。
創業公司:我們正在招募能夠革新和改變世界的人!
面試官:請把這個字元移動到此陣列上。
大多數創業公司的使用者基礎為零,但它們仍有可能成功。儘管技術很少是創業公司成功的原因,但我們依然不切實際地將程式設計謎題作為招聘的最佳標準。
公司/HR 該瞭解自家的需求
面試中遇到的問題,與工作中遇到的問題,兩者存在相當廣泛的差距。因此人們總是好奇,創業公司是如何脫離初期的孵化階段。
我是一名產品工程師。我沒有正式的 CS 背景,但我會做 Web 相關的東西,並且還很擅長。在過去的 10 個月中,我一直在不斷地進行面試,從未如此近距離的面對檢視、控制器、甚至模型。並不是每個公司都堅持使用程式設計謎題作為招聘的技術指標,但使用這種方法的公司,基本上都完全聚焦在解決現實世界中不存在的奇特演算法問題。
- 面試官: 怎樣寫一個完成此操作的方法?
- 我:在 Ruby 中寫一行程式碼。
- 面試官:OK,那如果現在你不能使用標準庫呢?想象一下這是一個 200GB 的檔案,你必須在 Ruby 的記憶體中完成所有操作。
- 我:我 TM 為什麼要這樣做?
誠然,對於一些工作而言,面試要求“完全正確的”演算法,這並沒錯。但看看周圍,有多少小型、不到 50 人的創業公司在做著這樣的工作?業內有個不為人知的祕密,就是大部分創業公司在頭幾年,做的都是“響噹噹的”CRUD(增刪改查)應用程式,並且認為能夠產生最大影響的全面、多樣化的人才,往往能夠身兼數職。
你更需要擔心的是,你是否招錯人了!
現狀
現在的趨勢是,公司普遍採用程式設計謎題來招人,這往往讓那些不擅長技術面試但其他方面優秀的人才,在面試中失利。
基於演算法的難題通常是這麼來的:面試官陶醉在自我欣賞、自命不凡的氛圍中,想出了一些他們認為能夠體現聰明才智的東西。 (解決前面那種演算法題的)可靠方法是,從一開始就採用遞迴思路來解決問題。(這對於面試官而言,是一種誘惑。)如果這行不通,請再次嘗試一次通過,而不是在 O(n) 操作中嘗試。此時,即使只節約了額外的 1 ms,也一定能向公司證明你的價值。
從這個角度來看,你馬上給未來的同事(應徵者)傳達了一個資訊,“正確答案只有我知道,而我希望你能得到它”。這樣會讓他們更有壓力,因為你向他暗示了存在著一個正確答案。
在我的職業生涯中,我完成的每一個產品都沒有所謂的正確答案。它更像是雕刻大理石雕像:你對想要呈現的東西有模糊的概念和理解,而你必須通過不斷地削減、雕琢它,來最終獲得一個可能的結果。你和你的隊友在此過程中一起獲得最終答案,而不是以一個先入為主的答案,來指導你的同事獨自獲得它。
合作面試(作者的觀點,後面還有例子)
這就是為什麼有時我在面試過程中,強烈地主張結對程式設計。拿出一個小時,用來討論 Bug 或一起想要獲得的功能。今天沒有發生什麼有趣的事嗎?這個 Bug 太“無聊”了嗎?
好吧,那你為什麼要這樣做呢?如果這是候選人在工作中會實際碰到的典型問題,那麼你值得在面試中一試。此外,即使只是最簡單的錯誤修復,你也可以從別人那裡學到很多東西。
一起做一些真正的東西。這樣做完全能夠改變你的動力,我一直是這樣強調的。從前你獨自努力地尋找一個只有你知道的祕密,但現在你們團隊合作,鑽研一個答案未知的難題。以前你們是獨立對抗,而現在則是團隊合作。這會讓你的候選人放心,更容易施展技能。
沒有人知道他們在做什麼
技術面試中還有很多瘋狂的事,我聽說過,並且也曾經歷過。
Max Howell 曾為開發過熱門的一個工具 (Homebrew),你可能聽說過他在 2015 年在谷歌面試時被拒。谷歌面試官認為他不是一個合格的開發人員,因為他沒能在白板上寫出(二叉樹翻轉)演算法。
去年,我參加了一場巨頭創業公司的面試,爭取工程主管的職位,而當時公司的高速發展導致了一些基本問題,使得數百名開發商的產品無法順利出貨。我和公司的 CEO 和 CTO 進行了一次很好的討論,關於對整個流程、CI、部署和管理架構進行全面的改革。然而,當我進入非程式設計領導崗位的最後一輪面試時,內容則幾乎完全是由初級開發者問我初級的 JavaScript 問題。我在這樣的情況下退縮了。
你看,我現在明白了,面試需要花費時間和精力,而大多數人只想回到做事的階段。提出一個標準化問題,可以讓你以更少的精力做更多的事,並讓你比較不同候選人的能力。
但是,選上的候選人是否合適,這需要花費長時間來驗證。大多數處於初期階段的創業公司,對候選人(特別針對早期員工)所需要的技能集,太過炫目和繁雜了。它們期望候選人懂得:產品、程式碼、營銷、設計(全能選手),會溝通,並且飽含熱情。你不能像微軟或蘋果那樣過濾掉其他人。它們是大公司,讓我第一個提醒你:你並不是它們,你有不同的優先事項。
哎,反正我也沒通過那些操蛋的面試!