如何招到一個靠譜的程序員

我的上一份工作是在一家世界500強(qiáng)金融集團(tuán)擔(dān)任架構(gòu)師囊拜,當(dāng)時俱恶,公司的IT團(tuán)隊規(guī)模將近2000人兔港。與其他IT公司一樣庸毫,程序員的流動性也比較高,而作為架構(gòu)師衫樊,我需要為所在的部門招聘各個層級的開發(fā)人員飒赃,當(dāng)然也包括外包。在這長達(dá)5年時間里科侈,我面試了大約400名程序員载佳。我并沒有參加過任何人力資源方面的培訓(xùn),也沒有正式研究過如何面試程序員臀栈,但是我通過對大量程序員的面試蔫慧,以及錄用后效果的觀察,得出了一套自己的面試策略权薯,去找到那些真正靠譜的程序員姑躲。

1. 簡歷看人

閱讀簡歷永遠(yuǎn)是面試的第一步睡扬。好的簡歷一定是正確、清晰并且能夠體現(xiàn)候選人最有價值一面的黍析。我首先會過濾掉那些包含錯別字卖怜,文句不通或沒有邏輯性的簡歷,因為如果一個程序員連自己的簡歷都不愿意去仔細(xì)檢查并完善的話阐枣,很難想象他寫出來的代碼質(zhì)量會如何马靠。接著,我便會重點(diǎn)閱讀簡歷中的項目經(jīng)驗部分侮繁,在這里我能夠看到面試者的開發(fā)經(jīng)驗,技能棧如孝,并且判斷他們熟悉的技術(shù)框架宪哩、工具是否與目前公司要求相匹配。

這里第晰,我還會特別關(guān)注面試者是如何來寫這部分項目經(jīng)驗的锁孟,你需要用盡可能簡練的文字來描述項目的背景,你在項目中承擔(dān)的角色茁瘦、參與項目的時長品抽,你用到的技術(shù)、以及你在項目中的亮點(diǎn)等信息甜熔。優(yōu)秀的程序員們往往有一個共同的特質(zhì)圆恤,那就是善于歸納,并能夠一針見血的發(fā)現(xiàn)問題或把一個問題說清楚腔稀。我經(jīng)撑桕迹看到面試者在簡歷中像寫故事一般地描述他們的項目經(jīng)歷,光這一個章節(jié)就有好幾頁焊虏,其實(shí)這反而會給你減分淡喜,因為這會讓面試官判斷你缺乏必要的歸納能力。

最后你的一些與編程有關(guān)的社會化活動诵闭,如:你在GitHub上的開源項目炼团,在知乎、V2EX中給他人的解答以及你的個人技術(shù)博客等等都會給你加分疏尿,因為這說明你對所從事的工作有著極大的熱情瘟芝,并愿意在業(yè)余時間去學(xué)習(xí)和提高自己,就像在我之前的 “給職場新人的10點(diǎn)職業(yè)建議” 一文中提到的褥琐,如果你要成為一個領(lǐng)域的專家模狭,那你必須花費(fèi)超過10,000小時,而這光靠工作時間是遠(yuǎn)遠(yuǎn)不夠的踩衩。

2. 給面試者10分鐘介紹自己最擅長的

當(dāng)面試者通過了筆試和HR面試之后嚼鹉,你就需要面對面地對候選人進(jìn)行面試贩汉。我遠(yuǎn)不是什么面試專家,但我有一些自己的獨(dú)特方法锚赤。我討厭問一些很個人的問題匹舞,比如你的職業(yè)規(guī)劃是什么?你為什么想換工作线脚?等等赐稽。我更愿意給面試者10分鐘時間,讓他介紹自己最擅長和最感興趣的領(lǐng)域浑侥。這往往能幫助我很快作出下面的判斷:

  • 這個人對他所做的事情是否充滿激情
  • 他們是否能在團(tuán)隊中很有效地進(jìn)行溝通
  • 他們是否在專業(yè)領(lǐng)域足夠擅長
  • 你的團(tuán)隊是否會樂于和這個人一起工作

這一招我在面試中用得很多姊舵,而實(shí)踐證明也確實(shí)非常有效。

3. 基礎(chǔ)打牢了嗎寓落?

一般括丁,有一定規(guī)模的公司都會為面試者安排機(jī)考或筆試,從而能首先篩掉一批未能通過的面試者伶选。另一些規(guī)模較小的或初創(chuàng)公司則會讓面試官直接進(jìn)行技術(shù)面試史飞。其實(shí),我覺得這兩者的差別不大仰税,有經(jīng)驗的面試官往往能夠通過幾個最簡單的技術(shù)問題构资,判斷出面試者的技術(shù)基礎(chǔ)是否牢固,這不是為了證明他有多優(yōu)秀陨簇,而是用來判斷他是否是一名合格的程序員吐绵。對于我來說,并不看重機(jī)考的成績河绽,因為機(jī)試的考題很多能夠在網(wǎng)上得到拦赠,特別對于一些外包公司,他們總是能夠通過各種途徑得到考題葵姥,從而使得他們推送的外包能夠順利通過筆試荷鼠。

下面是我經(jīng)常會問的幾個問題(JAVA):

  1. HashTable與HashMap有什么區(qū)別?
  1. Servlet是線程安全的嗎榔幸?
  2. JSP中 @include跟jsp:include的區(qū)別
  3. HTTP的response code 403和500分別代表什么
    ......

這些問題都很簡單允乐,但一些基礎(chǔ)不牢的程序員往往會在這個時候露餡。當(dāng)然削咆,根據(jù)面試崗位的不同牍疏,你還可以有針對性地問一些問題,例如拨齐,你需要找一個能寫核心算法的程序員(比如 銀行的總賬計算鳞陨,或者保險公司的保費(fèi)計算),那么你可以問一些算法相關(guān)的問題瞻惋。

4. 技術(shù)深度夠嗎?

具備牢固的技術(shù)基礎(chǔ)厦滤,一般就可以滿足項目中普通程序員的要求了援岩,但如果你需要找的是一個資深程序員,那么你還需要對面試者的技術(shù)深度進(jìn)行考察掏导。我們現(xiàn)在做項目時都會大量使用框架享怀,這能使我們的開發(fā)效率和質(zhì)量都得到提升和保障,但同時也降低了對于程序員開發(fā)技能的要求趟咆。因此我一般會詢問面試者下面的問題添瓷,來考察他對所使用框架的掌握程度。

請你描述一下值纱,在這個項目中鳞贷,從一個HTTP請求發(fā)起,到最終的Response返回虐唠,它在你的系統(tǒng)和框架內(nèi)部是如何流轉(zhuǎn)的搀愧?

這個問題往往能夠判斷出面試者對于相關(guān)技術(shù)掌握的深度。較初級的開發(fā)人員描述的層級往往比較淺凿滤,比如使用Spring MVC框架的妈橄,只能說到實(shí)現(xiàn)一個Controller繼承BaseCommandController(甚至很多開發(fā)人員只知道繼承了一個公司內(nèi)部框架的基類)庶近,至于再往下Spring框架是如何進(jìn)行內(nèi)部流轉(zhuǎn)的翁脆,就再也說不清楚了。而更資深的開發(fā)人員鼻种,往往能說出框架內(nèi)部的實(shí)現(xiàn)機(jī)制反番,以及如何調(diào)用和處理的。在面試者描述的過程中叉钥,你還可以穿插詢問一些比較有深度的問題罢缸,比如框架中某個類這樣設(shè)計是哪一種設(shè)計模式的體現(xiàn),采用這樣的設(shè)計有什么好處等等投队。這比讓面試者默寫一個設(shè)計模式代碼要有效枫疆、自然得多。

除了技術(shù)層面上的考察之外敷鸦,對于資深開發(fā)人員息楔,還需要考察他們的設(shè)計能力。說到軟件設(shè)計扒披,大部分面試者都能熟練地背出面向?qū)ο蟮娜齻€基本特性:繼承值依、封裝、多態(tài)碟案,也能把它們的概念描述清楚愿险。但我一般會問下面的這個問題來考察他們的面向?qū)ο笤O(shè)計能力。

請用一段程序代碼描述我們所在的這間房間价说。

我驚訝地發(fā)現(xiàn)至少有一半的面試者都很難準(zhǔn)確使用Interface和Class來給房間建模辆亏,也有一些人會將最基本的代碼語法或關(guān)鍵字寫錯风秤。

5. 選擇適合所在企業(yè)文化的人

這一點(diǎn)也曾是我經(jīng)歷的一個誤區(qū),我總是希望能為團(tuán)隊招到技術(shù)能力最強(qiáng)的人褒链,而忽略了他是否與整個公司和團(tuán)隊的文化相匹配唁情。這往往會造成,雖然招到了人甫匹,但沒過多久就因為理念不同不歡而散的結(jié)果甸鸟,反而給公司帶來了損失。讓我們看看GitHub的負(fù)責(zé)人是怎么說的兵迅。

我們很嚴(yán)肅地看待我們自己關(guān)于招聘流程的哲學(xué)抢韭。我們希望每一個GitHub員工都了解他們所要面對的環(huán)境,并保證他們是能夠很好適應(yīng)的恍箭。這包括我們所創(chuàng)造的文化刻恭、哲學(xué)、計劃扯夭、錯誤甚至是晚餐鳍贾。比起他們的技能是否滿足要求,我們更看重他們的潛力以及是否能夠適應(yīng)我們的企業(yè)文化交洗。

我曾在具有鮮明文化差異的不同公司或團(tuán)隊工作骑科,看到許多崇尚開放、開源的程序員在一個相對封閉构拳,具有很多流程以及規(guī)范限制的公司中很難發(fā)揮咆爽,最終選擇離開。因此在招聘程序員時置森,選擇合適的往往比選擇最優(yōu)秀的更重要斗埂。

6. 行為面試法

行為面試法可能是我在整個面試過程中唯一用到的教科書面試方法。一個程序員是否能夠很好地工作凫海,不僅取決于他能否順利地完成開發(fā)任務(wù)呛凶,更重要的是在遇到一些特殊場景或問題時,他能否合理有效地處理和解決行贪。行為面試法能夠幫助我們從面試者描述的過去某一具體事件中漾稀,預(yù)測未來他在工作中可能的表現(xiàn)。下面便是一個我經(jīng)常用到的問題瓮顽。

請談?wù)勀阍谶@個項目中遇到的最大困難或挑戰(zhàn)是什么县好,你是如何解決的。

從面試者對上面這個問題的回答中暖混,我能夠很好地判斷他是否有較強(qiáng)的獨(dú)立解決問題的能力缕贡,而我認(rèn)為這是除技術(shù)能力之外,程序員最應(yīng)具備的能力。

7. 給他們一個虛擬任務(wù)

經(jīng)過上面的這些環(huán)節(jié)晾咪,你可能對面試者的整體情況已經(jīng)比較滿意收擦,但先別急著下結(jié)論。我曾見過能夠順利通過上面所有面試步驟谍倦,并且被雇傭的程序員塞赂,當(dāng)他們進(jìn)入實(shí)際工作后卻沒能把事情做好。

在你確定是否錄用他們之前昼蛀,可以給他們一個虛擬任務(wù)宴猾。我不是說一個抽象的程序問題,而是指一個真實(shí)的叼旋,可能就存在于你當(dāng)前項目中仇哆,并且需要在一兩個小時之內(nèi)完成的一個開發(fā)任務(wù)。我曾經(jīng)出過這樣的考題:

寫一個小程序?qū)⒁粋€以特定格式(如CSV)存儲的文本文件轉(zhuǎn)換為XML格式夫植,并存儲為另一個文件讹剔。

你可以給他一臺已經(jīng)配置好開發(fā)環(huán)境以及IDE的電腦,讓他當(dāng)場編寫代碼详民。當(dāng)然如果時間有限延欠,你也可以直接詢問面試者的實(shí)現(xiàn)思路,并簡單用偽代碼來描述處理過程沈跨。通過這個測試由捎,你能夠看到很多細(xì)節(jié),比如面試者是否有良好的編碼習(xí)慣谒出,異常處理是否規(guī)范隅俘,代碼邏輯是否縝密高效邻奠,以及他的開發(fā)效率是否足夠高笤喳。如果面試者給出了非常優(yōu)秀的解答,那么你就應(yīng)該能夠判斷他確實(shí)是一個優(yōu)秀的候選人了碌宴,因為我從沒碰到過能夠通過上面的測試杀狡,卻在實(shí)際工作中無法做好的人。

8. 以上絕不能保證你招到合適的程序員

你可以在面試程序員時參考上面的這些步驟贰镣,對于我來說大多數(shù)情況下它們都是有效的呜象,但偶爾也會出錯。你需要結(jié)合你所在公司和團(tuán)隊的實(shí)際情況碑隆,提煉你覺得有用的面試步驟恭陡,并忽略其他的,最終形成屬于你自己的面試策略上煤。另外休玩,你還需要根據(jù)面試時的實(shí)際情況,隨機(jī)應(yīng)變,因為人是最復(fù)雜的動物拴疤,而面試過程卻是需要雙方互動的永部。

想象一下,在你退休之前的未來幾十年時間里呐矾,你都需要每周40小時地工作苔埋,因此無論是公司還是應(yīng)聘者都應(yīng)該互相尊重,建立充分的信任蜒犯,并充分判斷是否適合對方后组橄,再確定是否雇用某人或接受一個公司的職位。你的目標(biāo)不應(yīng)該是簡單的獲得一份工作或者雇傭某個人罚随,而應(yīng)該以獲得更多的工作樂趣和建立更良好的工作關(guān)系為目的去看待招聘這件事晨炕,切忌不要急于求成,就像談戀愛一樣毫炉,當(dāng)雙方都有感覺時瓮栗,一切就水到渠成了。

又到了一年中的招聘熱季了瞄勾,希望每一位年輕的程序員朋友都能找到一份讓自己快樂的工作 -


稀土掘金聯(lián)合編輯:技匠费奸,以上內(nèi)容歡迎大家分享到朋友圈/微博等,如需轉(zhuǎn)載請通過我的微信公眾號聯(lián)系进陡。謝謝大家愿阐!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市趾疚,隨后出現(xiàn)的幾起案子缨历,更是在濱河造成了極大的恐慌,老刑警劉巖糙麦,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辛孵,死亡現(xiàn)場離奇詭異,居然都是意外死亡赡磅,警方通過查閱死者的電腦和手機(jī)魄缚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焚廊,“玉大人冶匹,你說我怎么就攤上這事∨匚粒” “怎么了嚼隘?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長袒餐。 經(jīng)常有香客問我飞蛹,道長须肆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任桩皿,我火速辦了婚禮豌汇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泄隔。我一直安慰自己拒贱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布佛嬉。 她就那樣靜靜地躺著逻澳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪暖呕。 梳的紋絲不亂的頭發(fā)上斜做,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機(jī)與錄音湾揽,去河邊找鬼瓤逼。 笑死,一個胖子當(dāng)著我的面吹牛库物,可吹牛的內(nèi)容都是我干的霸旗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼戚揭,長吁一口氣:“原來是場噩夢啊……” “哼诱告!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起民晒,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤精居,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后潜必,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靴姿,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年刮便,在試婚紗的時候發(fā)現(xiàn)自己被綠了空猜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绽慈。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恨旱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坝疼,到底是詐尸還是另有隱情搜贤,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布钝凶,位于F島的核電站仪芒,受9級特大地震影響唁影,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掂名,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一据沈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饺蔑,春花似錦锌介、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至发皿,卻和暖如春崔慧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背穴墅。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工惶室, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玄货。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓拇涤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親誉结。 傳聞我的和親對象是個殘疾皇子鹅士,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,088評論 25 707
  • 不管你是不想還是不屑于去做,別人都會認(rèn)為你是個失敗者惩坑,不管你自己是怎么看的掉盅,反正別人是戴著有色眼鏡來看你的,他們只...
    囫圇思閱讀 343評論 0 0
  • 深切懷念去世的同事,愿一路走好蔓钟! 繁花似錦的三月永票,粉紅燦爛的桃花鋪天蓋地,天氣卻如寒意肅殺的冬日滥沫,冷徹心扉侣集。新葉綴...
    西園草閱讀 1,081評論 0 3
  • 他是一個農(nóng)民家庭的孩子世分,學(xué)生時代拼死拼活考進(jìn)大城市的一所美術(shù)院校,他一邊學(xué)習(xí)一邊打工缀辩,很努力地生活臭埋。大學(xué)畢業(yè)...
    Luckever閱讀 314評論 0 0
  • 程序員們離優(yōu)秀有多遠(yuǎn)這個話題很早就在我的素材庫里了踪央,只是自知能力和眼界都有限,很難駕馭這樣的內(nèi)容瓢阴。今天也只是從我當(dāng)...
    韋韋韋閱讀 476評論 1 1