如何招聘程式設計師(譯)

迷茫發表於2012-04-06

原文地址:http://www.codinghorror.com/blog/2012/03/how-to-hire-a-programmer.html

譯者:劉永新

日期:2012年4月4日

招聘程式設計師沒有什麼妙招,但是我可以分享一些我認為有效的且多年來一直在使用的技巧方面的建議。

1. 首先,通過一些簡單的”Hello World”線上測試

我知道這聽起來很瘋狂,但是一些自稱是程式設計師的人勉強能編寫出來。時至今日,我仍能經常聽到有人告訴我他們的候選人失敗在最基本的程式設計測試上

這就是為什麼非常簡單的程式設計測試成了任何明智的招聘過程中的第一步。這些測試應該是線上的,目的並不是為了證明候選人是一些程式設計天才,而是讓他們應該知道什麼是所謂的程式設計。是的,這有點可悲甚至有時是令人沮喪的,但是如果你不做這個明智的測試,相信我——你會後悔的。

部分提供線上程式測試服務的網站(我確信還有好多,但是我就知道這一倆個)有InterviewZencodility

2. 詢問一下他們的履歷

任何稱職的程式設計師都應該有一個他們的工作履歷,它不一定有多吸引人,但通過它我能發現一些蛛絲馬跡,瞭解到你放在網上的那些對別人有用的大手筆。一份Stack Overflow的個人簡歷,我就能瞭解到你是以何種方式進行溝通的,你是如何解決問題的。給我一個你的開原始碼庫的連結,一個專業的blog?一個Tumblr?一個Twitter?或者我從來沒聽過的,最好能給我們展示下。分享下你設計的應用程式,或者你參與過的網站,並且描述下哪些部分是你做的。

僅僅看下他們做過什麼樣的工作,他們建立過什麼樣的網路產品,對於獲得他們什麼在行,什麼不在行非常有益。

3. 聘用文化背景相適的

正如GitHub,我發現相比整天埋頭程式設計,文化背景相適應更是成功的前兆。

在招聘的過程中我們的談論[哲學],我們很重視這件事。我們想讓每個我們潛在的GitHub職工知道他們即將進入的是個什麼樣的公司,確定是否真的適應公司的環境。其中一步就是一起晚餐,一起談論比如文化、哲學、曾經做過的錯事、規劃等亂七八糟的東西。

在早期,我們根據技能招聘,很少考慮到他們如何融入公司的文化或者他們是否懂得哲學。自然,這些招聘沒有起到有效的效果。因此,當我們關注一個有潛力的職工的同時,他們是否能理解我們的做法也是一個重要組成部分。

我知道並不是每個企業都有業務相關的社群,但是如果你確實有,那麼當你需要招聘的時候務必從你們的社群中挑選,這些夥計自然而然就融入到你們的工作環境中,這些候選人適應文化的可能性將是異常的高,而這就是你想要的。

有沒有一些使用者對你的遊戲進行了驚人的改造?他們是否曾發現一個不起眼的安全漏洞並嘗試去告訴你?立刻聘用他們!

4.做一個詳盡、結構化的電話約談(phone screen)

一旦上面所說的都已經通過,現在是該給候選人打個電話了,記住,電話約談不是聊天而是面試,通話應該是結構清晰的技術性問題,因此如果確實不合適,雙方可以立即終止面試。電話約談涵蓋一些基礎要點,概要的說:

1、一點即時程式設計(on-the-fly coding)。“查詢一個整型陣列中最大的整數”。

2、一些基本的設計。“設計一個HTML模型的表現層。”

3、指令碼和正規表示式。“從這個目錄中提取一個包含特定格式的電話號碼文字列表檔案給我。”

4、資料結構。“你什麼時候會採用雜湊表而不是一個陣列?”

5、位和位元組。“為什麼程式設計師認為10月31日和12月25日是同一天這個問題是有趣的?”(譯者注:Oct 31和Dec 25,Oct為英文單詞十月的縮寫,同時Oct為八進位制的意思,八進位制31轉換為十進位制是25;Dec為英文單詞十二月的縮寫,同時為十進位制的意思,因此八進位制31和十進位制25是一樣的)

你在尋找的不是神奇的完美答案,而是探知這個人如何解決問題的、他們是否瞭解他們的工作職責(加或減10%),我們的目標是確保這個候選人在下一步中測試中不是浪彼此的時間,所以如果有太多不合適的預兆,立場要堅定,儘早結束這個通話。

5. 給候選人一個面試專案(audition project)

候選人輕輕鬆鬆的通過了Hello World程式設計測試,有一個驚人的履歷,非常適合企業文化背景,同時出彩的通過了電話約談,是時候進入面試了,是嗎?夥計,並沒有這麼快!

我曾看到過候選人通過了所有上述步驟,進入公司後,根本無法把事情做好。僱傭程式設計師確實不容易。

如果你想打消這個招聘是否正確的疑慮,那麼給他們一個面試專案。我不是說一個一般的、抽象的程式設計任務,而是一個你們現在正需要立即解決的真實產品的模組,你原本會將這個模組交給正式的職工去做,如果正式職工都不忙,那麼讓他做點其他的事情。

這應該是一個正規的操練方式,按工時明確的定義了專案的進度。選擇一個可以在1-2周就能理想解決的小專案,無論這個候選人是在辦公室辦公還是遠端辦公。我知道並不是每個公司都有這些小模組可以外包出去——但可以盡力讓他們在公司內完成。我想說,如果你想不出任何方式讓一個不錯的候選人蔘與面試小型專案,也許你現有員工的工作結構構存在不合理性。

如果面試專案成功了,那麼太棒了——你現在擁有一個高素質的可以真正完成任務的候選人,你已經完成了要做的事情。時至今日,我從來沒有見過有誰通過面試專案而無法勝任工作的。我把面試專案的表現看的很重,因此在僱用之前讓他們儘可能的做接近實際的工作。如果這個面試專案沒有達到理想效果,那麼,就把這個操練的付出看成是退出費吧,這與在公司裡和4、5個人進行撒網式的面試過程相比成本少多了,最壞的情況下,你可以把這個面試專案交給下一個不錯的候選人。

(招聘的試用期也可以工作,理論上和正式職工沒什麼差別,在大家一致同意的前提下,你可以在6-8周做“留還是不留”的決定)

6.進入面試、推銷環節

最後,你應該選個時間和候選人見上一面。這是不可避免的,但是之前還有一步就是你應該在他們還沒進入這個面試會議室之前,95%的確定這個候選人將會是個不錯的職工

我還遠遠不是一個面試專家,但是我不喜歡面試難題讓問題溫和善意化

然而,對於如何面試程式設計師我有自己的理論:給候選人15分鐘的時間讓他們展現他們的專業領域。我認為這比傳統面試好多了,因為你很快就會確定……

  • 這個人對於他將要從事的工作充滿激情嗎?
  • 他們能否的在小組中進行有效溝通?
  • 他們能很好的應付他們所在的專業領域嗎?
  • 你的隊伍會喜歡和這個人一起工作嗎?

每個程式設計師都應該懂得如何推銷你自己、你的程式碼和你的專案,我完全同意。現在,推銷自己吧!

7. 沒有任何擔保

以上的技巧不要生搬硬套,我知道這些技巧很好用,但是偶爾也有不起作用的時候,因此要要因“況”制宜,調整這些建議適用於你的特殊情況,剔除那些不適合於你的(儘管我強烈建議你不要跳過第一步驟)。即使在最好的環境下,招聘職工也是很困難的。一個工作機遇可能會遠遠超出任何人的控制,正如他們所說的,人本來就很複雜。

如果你認為工作像維持一種關係,那麼餘生中你將花掉每週40小時(或更多)時間,每個人理應合理支配時間。公司和候選人都應該真誠的盡最大努力決定對方是否合適。你的目標不應該僅僅是得到一份工作,或者僱用一個人為我工作,而應該尋找樂趣熱愛你的選擇。不要急於任何事情,除非雙方都感覺不錯。

(順便說一句,如果你正在尋找吸引程式設計師的方式,那麼你不容錯過來自SamuelMullen的出色建議

相關文章