原文連結:How to Hire a Programmer,翻譯:CSDN
如何招聘到優秀程式設計師,這是一個老生常談的問題。近日著名部落格Coding Horror博主、Stack Overflow創始人Jeff Atwood發了一篇文章《How to Hire a Programmer》,讓我們看看Jeff Atwood對該問題有什麼高效的解決方法。文章內容如下:
招聘程式設計師,永遠沒有萬能的方法。在這裡,我只希望分享一些多年來的我個人的招聘經驗。
首先, 進行一系列簡單的“Hello World” 型別的線上測試
對此,你是不是很驚訝呀?但確實有一些自稱為程式設計師的人幾乎不會程式設計。直到今天,仍會有一些招聘者告訴我,他們總會遇到一些應聘者無法通過最基本程式設計測試。
所以,任何合理的招聘過程應把極簡單的程式開發測試放在第一步。並且這個測試需要線上上進行,目的不是為了證明應聘者有多牛,而是看看他到底是怎樣的開發者。這一過程很有必要,如果不進行這一部的篩選,你將來可能會後悔。
現在有一些服務可以幫助你解決線上測試應聘者的問題,比如Interview Zen和codility。
看開發者在網際網路上的個人資料
任何名副其實的開發者應該有一份關於他們工作經歷的簡歷。它不必十全十美,我只關注應聘者在網際網路上因幫助他人而留下來的點點痕跡。向我展示你在 Stack Overflow上的相關資料,憑此我可以瞭解你專注於哪些方面的技術資訊,同時解決了哪些技術問題;給我一個你曾參與的開原始碼庫的連結;給我你的專業 部落格地址?Tumblr?Twitter?或其他一些我不曾聽過的名字?不錯,我可以好好看看。向我展示你曾設計的應用,你曾工作過的網站,及你在其中擔 任怎樣的角色。
瞭解應聘者曾做過哪方面的工作及線上創造了哪種型別的貢獻,對於招聘者瞭解應聘者適合做什麼、不適合做什麼有很大的幫助。
僱傭適合企業文化的人
正如GitHub,我發現很好地融入企業文化比整天埋頭苦工更容易獲得成功。
我們會在面試過程中和應聘者談論哲學,我們十分重視這個過程。我們希望來GitHub工作的員工瞭解他們將要進入的這個企業,確認他們能很好地適應公司的環境。這個過程包括一塊吃飯,一起談論企業文化、哲學、我們曾經犯過的錯誤、未來的規劃等話題。
早些時候,我們招聘只注重應聘者的技能,而對於他是否適應企業文化,是否懂哲學並不太關注。很自然,這些招聘並沒收到很好的效果。所以現在我們不僅注重應聘者的技能,是否能融入我們也是我們考察的重要部分。
據我所知,不是所有的業務領域都有相應技術圈子,但如果有,招聘者一定要儘可能地從技術圈子中招人。因為該圈子中的技術人員會自然而然地對你企業所 做的事感興趣,也會很容易融入到與他們意願一致的企業中。這些應聘者較好適應企業文化的可能性是異常高的。這也正是招聘者樂於見到的。
與應聘者電話溝通 內容需結構清晰
上面提到的事你都完成了,現在是時候給應聘者打個電話了。記住這個電話不是用來聊天的,而是為了篩選應聘者。所以通話的內容是關於技術話題的,而且結構層次要清晰。如果內容不太合適,你和應聘者都會被帶離此次通話的目的。內容應該覆蓋技術基礎,總結下來有下面幾點:
● 快速程式設計。如:程式設計實現從Int陣列中找出最大的Int型資料;
● 一些基本的設計。
● 指令碼語言和正規表示式。
● 資料結構,如,你什麼時候會採用雜湊表 ,而不是陣列?
● 位元和位元組,如:程式設計師為什麼問說出“oct(31) == dec(25)”類似這樣的笑話。
該舉措的目的,是為了到下一流程後,可以節約應聘者和招聘者更多的時間。你一定要堅持自己的立場,如果發現該應聘者多點不符後,儘早放棄該面試過程。
請應聘者參與實際專案
應聘者順利通過了上文提到的四關,是時候進行面對面的面試了嗎?現在還不是時候。
我曾見過一些應聘者,他們也順利通過了上文提到的層層考驗,但最終在實際工作中,並不能很好地完成實際任務。
如果你想確定無疑地判斷他是否是一個優秀的應聘者,那就給他一個實際的專案做。我說的不是一般的、抽象的程式設計任務,而是你們公司現在正在進行的某產品的一個實際開發模組——你本計劃交給公司實際員工做的任務。
選擇一個測試專案,在理想的情況下可以在幾天,也可能最多在一個星期或兩個星期內完成。應聘者可以在公司裡完成,也可以遠端工作。我知道不是每個企 業都能把他們的專案切分成一些這樣的小專案,分給應聘者在公司外完成——但可以盡力嘗試讓應聘者在公司內完成。我個人認為,如果你無法為優秀的應聘者分配 這樣一個微專案,很可能說明你為現在員工分配的任務存在不合理性。
如果應聘者出色地完成了所分配的測試專案。恭喜你,你找到了一個高素質的應聘者,他已被證明可以出色完成各項工作。到現在為止,我所見過的通過該項 考驗的所有應聘者都能在實際工作中很好的完成任務。準確地說,也不是百分之百保證,但我把該項測試看得很重要,因為在應聘者還未被僱傭前,你可以近距離地 觀看他在實際專案中的表現。如果測試專案沒成功,就把在該專案上所付出的代價看作一筆“退出費”,這相比請公司的4或5個人來進行一場昂貴的面試過程便宜 多了。最壞的情況是,把該專案用於下一個優秀的應聘者。
是時候與應聘者見面了
最後,你應該選一個時間與面試者見上一面了。這是必然的,但通過之前所進行的一系列測試,你應該95%地確認這個應聘者就是很好的僱傭物件後再與他見面。
我並非面試專家,但我不喜歡問一些很難的問題,適度就好。
關於如何面試開發者,我有自己的一套理論:給面試者15分鐘的時間,請他陳述所擅長的領域。相比與傳統的面試方式,我認為這可以取得更好的效果,困為你可以很快地探明下面問題:
● 這個人喜歡做什麼樣的工作?
● 他是否擅長在小組中交流?
● 他能否很好地解決他所擅長領域中的問題?
● 你的團隊是否願意和他一塊工作?
每個開發者都應該知道一件事,即如何推銷自己、程式碼以及專案。
任何事都無法絕對保證
請正確看待上文所列舉的招聘流程。它們有時很成功,有時也會失敗。根據你自己的特殊情況,調整這些建議,貼合你的想法,忽略某些步驟(雖然我強烈建 議你最好不要省,即便是跳過第一步)。即便在最理想的環境下,招聘人才也是一件很難的事情。一個工作機會的獲得會受很多因素的影響,往往不受人的控制。正 如人們說的,人本來就很複雜。
如果把工作看作一種關係,每週需花40多個小時相處的關係,那麼公司和招聘者都應該有一種信念,努力找到適合自己的對方。我們的目的不只是找到一個工作,或僱傭一個人,而是為了生活樂趣,為了創造一種友愛的關係。(編譯:CSDN陳秋歌)