而你應該使用什麼
想象一下,你是一家希望招募新老師的K-8小型學校的校長。由於你的老師少於20名,因此必須確保僱用的每個人都可以教任何年級。更復雜的是,你最近失去了一位最好的老師,一位擁有15年經驗的人,以及許多初級老師的導師。你怎麼能代替她?
經過一番思考,你可以製作出自己認為是一種創造性的面試方法。當候選人出現時,你要求他們教授從K-8課程中汲取的教訓。為了確保候選人全面發展,在面試開始之前不告訴他們要教的課程。如果他們做到了這一點,就可以推斷出他們可以輕鬆地教任何東西,因為他們對於隨機選擇的主題上,在壓力下表現出色,
你發出的通知是你正在招聘,並且有一些真正出色的應聘者。但是,對於這種新方法的首次測試,你打算嘗試透過推薦進行嘗試,該老師是你的一名員工過去與之合作過的老師,並聲稱是學校的明星。你會為她申請的運氣感到驚訝,並認為她將是新面試過程的完美考驗。你聯絡她安排面談日期,並告訴她你正在使用的這項新技術,以便給她一些準備的機會。
然後面試的日子到了,你的候選人出現在學校。你會感覺到她有點緊張,這很奇怪,因為她是一位經驗豐富的候選人,簡歷無懈可擊。你決定不對此進行詳細介紹,而是將她帶到一個教室中開始採訪。 "我希望您教給我一門關於數論的課程"。那時,她的臉下沉了,因為你不認識她,所以她十年多沒教過8年級了。但她始終是專業人士,因此上了臺並開始課程。她談到質數,以及如何確定給定數字是否可以被2、5和10整除,但她仍在努力。當你詢問GCF和LCM時,她需要澄清首字母縮寫詞,你認為這是一個不好的訊號。你解釋說,您指的是"最大公約數"和"最小公倍數",但此時可以說出她的信心已被擊中,並且你的聲音中有些淡淡的煩惱。
在一小時結束時,她偶然發現了數字理論的要點,但並沒有讓你充滿信心,她可以在一群表現不佳的8年級學生面前盯牢這節課。她在其他基於行為的面試中表現出色,但你無法擺脫這種感覺,因為她可能不是最佳的室內老師。經過深思熟慮,你決定放棄她,並僱用經驗不足的老師,他們在"課程測試"方面表現出色。
儘管這似乎是一個完全人為的示例,並且是面試授課申請人的一種奇怪方法,但這恰恰是用來面試軟體工程師的方法。儘管我並不是要說程式設計面試完全被打破了(儘管其他人已經做到了),但我堅信,在面試高階工程師時他們沒有方向。
為什麼?簡而言之,高階工程師是不同的,典型的程式設計面試使他們處於劣勢,原因有很多:
· 他們需要花費大量的準備時間-程式設計面試從軟體開發的整個領域汲取,因此很難為詳盡的準備做準備。對於高階工程師,此問題有兩種解決方法。首先,顧名思義,他們被進一步取消了學業,這可能是他們最後一次遇到軟體開發中一些更深奧的方面(動態程式設計,紅黑樹甚至是遞迴)。在各種各樣的演算法和資料結構上重新整理它們的記憶體可能會花費大量的準備時間。除此之外,高階工程師對時間的壓力更大(他們要求苛刻的工作,並且通常承擔重大的個人責任),這成為一場完美的風暴。我知道有幾種情況,高階工程師詢問了給定僱主的面試過程,並且聽說有一次程式設計面試,就拒絕面試。
· 他們推動高階工程師以不同的方式工作-高階工程師與用於程式設計面試的基本開發環境相距甚遠。它們通常具有經過高度最佳化的環境,經過多年的完善,旨在使它們擺脫不必要的程式設計負擔。在不加限制的人為的時間約束下,將其從中分離出來會使它們處於明顯的劣勢。此外,他們可能在過去幾年中使用了現有僱主的專有庫(記憶體管理,錯誤檢查,跟蹤)。一次程式設計面試使他們突然脫離了舒適區,回到了標準庫和簡單文字編輯器的世界。
· 他們並沒有真正測試過您希望他們聘用後會做什麼—也許與高階工程師進行程式設計面試中最令人震驚的方面是他們只測試了要僱用他們做的一小部分。高階工程師的收入通常比新畢業生的收入高3-5倍(或更高)。期望他們產生比新畢業生多3到5倍的程式碼是不合理的–一天中沒有足夠的時間。相反,你正在尋找他們來幫助初級工程師團隊,指導那些人,識別系統性問題,除錯最複雜的問題,以及在進行編碼時瞭解複雜的系統以及在其中進行編碼所需的複雜工作。這些方面都沒有在程式設計面試中得到測試,這是高階工程師討厭它們的主要原因之一。
· 他們發出了不好的資訊-正如您所知,你並不是要僱用高階工程師來編寫程式碼,他們也知道。但是,當在招聘過程中強調程式設計面試時,就會讓高階工程師第二次猜測要招聘的職位。"他們只是想讓我成為碼農嗎?""我會在這裡浪費我的才能嗎?""這是向前邁出的一步,還是向後邁了一步?"如果你想要的最後一件事是讓有才華的工程師對面試過程中的角色或您的公司有疑問。問他們程式設計面試問題就可以了。
總結所有這些因素,高階工程師討厭程式設計面試也就不足為奇了。如果想吸引最優秀的高階工程師並減少在這個特別緊張的勞動力市場中的面試摩擦,我建議不要再問他們程式設計面試問題了。
但是,你可能在想,我怎麼知道他們是否可以程式設計?如果您不願僱用高階工程師而對他們的編碼能力一無所知,建議您提供簡短的實地工作(最多不超過一兩個小時)。大多數高階工程師應該能夠找到少量時間來完成這樣的任務,尤其是因為這樣做省去了編碼面試所需的準備工作,並且可以分成更小的時間片,從而更適合他們的繁忙日程。帶回家的作業還允許他們在其本機IDE中工作(如果願意的話),並花費任何必要的時間重新熟悉標準庫。
另外一個好處是,申請人可以根據自己的意願花一些時間進行練習,這一事實可以深入瞭解使他們打勾的原因。他們對註釋是否體貼?是否全面考慮測試?他們是否以合理且易於理解的方式來組織程式碼?他們是否在乎提交的工作質量?換句話說,你不僅會知道他們是否可以編寫程式碼,而且會知道他們是否可以很好地編寫程式碼,並且設定的更為現實。
高階工程師是任何軟體組織的命脈。他們是最理想,最昂貴且最難吸引的。尤其是在歷史上緊張的勞動力市場上,招聘過程需要針對他們的特定需求進行量身定製,因為你比他們更需要他們。
高階工程師討厭程式設計面試,如果您想採用最好的面試,你也應該討厭他們。