從為IBM招聘實(shí)習(xí)生中學(xué)到的經(jīng)驗(yàn)
幾個(gè)月前我曾在博客中公布了IBM要招聘兩個(gè)實(shí)習(xí)生來(lái)填補(bǔ)它的長(zhǎng)期(帶薪)實(shí)習(xí)職位空缺?,F(xiàn)在好消息出來(lái)了,經(jīng)過(guò)廣泛的篩選和一系列繁瑣的手續(xù)(跨國(guó)事務(wù)總是這樣),最終有兩個(gè)學(xué)生成功的加入到了我們實(shí)驗(yàn)室的DB2團(tuán)隊(duì)。
如果你想知道這兩個(gè)學(xué)生是誰(shuí),他們是羅馬尼亞的Marius Butuc和來(lái)自巴西的Henrique Zambon。他們都是很棒的小伙,你們可以在Twitter上關(guān)注他們(如果你是說(shuō)葡萄牙語(yǔ)的,你也許會(huì)覺(jué)得Henrique的信息會(huì)更有趣些)。
選拔過(guò)程
我們從世界各地收到了想申請(qǐng)這個(gè)實(shí)習(xí)職位的100位學(xué)生的簡(jiǎn)歷。我們邀請(qǐng)了其中50位最有潛力的申請(qǐng)者進(jìn)行了***電話交談,我就是想給每個(gè)人一次公平的機(jī)會(huì)(當(dāng)然了,我也不想讓那些很顯然不能得到面試機(jī)會(huì)的人還抱有任何幻想,對(duì)于剩下的申請(qǐng)人我們都通知了他們?cè)诔踹x時(shí)沒(méi)過(guò)關(guān))。
在初次面試進(jìn)行之前,我給這50位預(yù)選通過(guò)的候選人布置了編程作業(yè)。他們可以開(kāi)發(fā)一個(gè)CSV到HTML的轉(zhuǎn)換器,或者一個(gè)使用Twitter API的客戶端搜索工具,或一個(gè)S3上傳工具。
很顯然沒(méi)有一道習(xí)題是關(guān)于火箭科學(xué)的,我們只是想用一種途徑來(lái)證明這些學(xué)生的編程能力。大部分的候選人選擇了CSV到HTML的轉(zhuǎn)換器。一部分人選擇了Twiter客戶端,很少人選擇S3上傳工具(有個(gè)野心勃勃的候選人竟然把3道題全做了)。
在認(rèn)真查看了他們的編碼后,我對(duì)所有交了作業(yè)的候選人進(jìn)行了技術(shù)面試。在這***的面試中我問(wèn)了他們每個(gè)人一系列非常技術(shù)性的問(wèn)題,某些時(shí)候我們也會(huì)討論他們的作業(yè)。大多數(shù)的面試都持續(xù)了一個(gè)小時(shí)左右。
首輪面試結(jié)束之后,我選出了10個(gè)最有潛力的候選人給了他們第二次的電話通知,我也通知了余下的人將不會(huì)再進(jìn)行面試。
第二輪面試時(shí)我的經(jīng)理加入了進(jìn)來(lái),一起對(duì)每個(gè)候選人進(jìn)行電話交談,談話不大牽涉候選人的個(gè)人技能。這第二次的面試是要看看他們的軟實(shí)力,了解一下他們的興趣愛(ài)好,看看他們的綜合心理狀況。
這種面試很重要,它能讓我們更進(jìn)一步的了解候選者。我們的目的是想知道這些充滿渴望的候選人對(duì)什么感興趣,看看他們對(duì)編程的熱情有多少,發(fā)現(xiàn)一些他們的跟編程并不十分相關(guān)的其它技能。我們也會(huì)跟他們討論一下如果他們被選中后將會(huì)參與的項(xiàng)目、我們的團(tuán)隊(duì)合作方式(我們更像一個(gè)敏捷開(kāi)發(fā)的新團(tuán)隊(duì),而不是人們對(duì)IBM的老舊印象),我們還和這10位候選人都詳細(xì)討論了下一步我們將做些什么。
至此Leon(我的經(jīng)理)和我最終討論了哪兩位申請(qǐng)人應(yīng)該被選中。十位候選人都很優(yōu)秀,我們要做出選擇并不是很容易。我們仔細(xì)研究了整個(gè)過(guò)程中的細(xì)枝末節(jié),從他們的簡(jiǎn)歷、過(guò)往經(jīng)歷,到他們的作業(yè)上的表現(xiàn),他們知道的(人類的和編程的)語(yǔ)言,他們對(duì)這幾次面試的看法。
經(jīng)過(guò)反復(fù)的考慮,我們最終選擇了Marius和Henrique。(也許你會(huì)奇怪,那個(gè)把三道題全做了的學(xué)生也是來(lái)自羅馬尼亞呀,如果能保證Marius和Henrique成功的獲得實(shí)習(xí)資格的話,他將是我們的第三選擇。)
從面試了這么多候選人中學(xué)到的東西
當(dāng)你突然從世界各地收到100個(gè)非常優(yōu)秀的學(xué)生的簡(jiǎn)歷時(shí),你會(huì)馬上發(fā)現(xiàn),要想去判斷一個(gè)人的真實(shí)能力是異常的困難。光從紙上看每個(gè)人都優(yōu)秀的不得了!這就是我為什么必須用一些特殊的東西顯示出他們之間的區(qū)別,而不能只依據(jù)他們的課題表現(xiàn)和學(xué)習(xí)成績(jī)(下面我還要更詳細(xì)的說(shuō)這個(gè)問(wèn)題)。
編程作業(yè)對(duì)確定一個(gè)人的真實(shí)能力有巨大的幫助。有些做的***的作業(yè)是來(lái)自理論表達(dá)能力很弱的人。你可以很清楚的看出誰(shuí)才是程序員或有潛質(zhì)將來(lái)成為計(jì)算機(jī)科學(xué)家的人。如果沒(méi)有這個(gè)作業(yè)任務(wù),選拔工作會(huì)困難的多,所以我很愿意找出一點(diǎn)東西讓申請(qǐng)人去做做。
有一點(diǎn)很意外,即使是非常好的學(xué)生,看起來(lái)對(duì)一些相對(duì)直接的算法問(wèn)題也會(huì)感到困難,不如其它類型的問(wèn)題感到輕松。一些問(wèn)題就像:紅-黑樹(shù)是什么?有什么用處?你能向我解釋一下P vs NP的問(wèn)題嗎?(請(qǐng)注意,這些都是相對(duì)開(kāi)放的問(wèn)題,通常我會(huì)接著問(wèn)一些特定的問(wèn)題來(lái)評(píng)估候選人的理論知識(shí)背景—也就是他們對(duì)這些問(wèn)題的思考方式。)
大多數(shù)的學(xué)生并不了解現(xiàn)實(shí)生活中的編程活動(dòng)。特別的,他們似乎并不是十分關(guān)注時(shí)事,大多數(shù)人從來(lái)沒(méi)聽(tīng)說(shuō)過(guò)例如SVN, GIT, MVC, ORM, Agile programming,或 NoSQL等東西。
通常,質(zhì)量偏差的候選人的簡(jiǎn)歷上列出的品質(zhì)我們看起來(lái)都有些夸張,而對(duì)于優(yōu)秀的人的反而顯得有些低估了。(這有點(diǎn)像某種形式的達(dá)克效應(yīng)(Dunning–Kruger effect)在起作用。)
有些候選人,利用遠(yuǎn)程電話面試的便利,試圖使用Google來(lái)搜索答案,當(dāng)我問(wèn)到了他們不太熟悉的知識(shí)時(shí),我確實(shí)聽(tīng)到了他們敲擊鍵盤的聲音,嘴里回答,“嗯…這個(gè)…”,跟著一個(gè)20秒的停頓,然后把從維基百科上找到的東西全都粘貼出來(lái)。很容易就能看出里面的貓膩,這種不誠(chéng)實(shí)的表現(xiàn)最終會(huì)給候選人帶來(lái)不好的印象。
招募人是件難事。需要花費(fèi)大量的時(shí)間和精力;要做出理性的決定是件很有挑戰(zhàn)性的事,因?yàn)榇蠖鄶?shù)情況下真的需要你拿蘋果和橘子做比較。
什么樣的簡(jiǎn)歷能打動(dòng)我
開(kāi)源軟件的參與者(一個(gè)GitHub的鏈接立即能引起我對(duì)這個(gè)候選人的興趣)。
簡(jiǎn)要但明了的描述在學(xué)校課程之外為外界公司曾實(shí)現(xiàn)過(guò)的項(xiàng)目(在業(yè)余時(shí)間或?qū)嵙?xí)期間)。
對(duì)編程社區(qū)類的社會(huì)媒體的參與。是否有StackOverflow身份?跟編程相關(guān)的Twitter賬戶?或者跟這個(gè)主題相關(guān)的博客?雖然這些事情單獨(dú)看起來(lái)并不能說(shuō)明某人是個(gè)好程序員,但這些卻是一個(gè)適當(dāng)?shù)闹笜?biāo)來(lái)說(shuō)明一個(gè)人至少熱衷于這個(gè)學(xué)科。是否出席行業(yè)相關(guān)會(huì)議也是一個(gè)很重要能說(shuō)明對(duì)這個(gè)領(lǐng)域的興趣的指示。
知道不常見(jiàn)的編程語(yǔ)言。基本上每個(gè)人都在簡(jiǎn)歷上寫了Java,然而,只是這些還不最夠吸引我這個(gè)面試官的眼球。(該死,連Python也開(kāi)始變得很平常了。)如果候選人聲稱自己會(huì)Haskell, Scala, Clojure,
OCaml, Scheme, Factor, Io, J,等等…這絕對(duì)能吸引我。同樣,這也并不能保證其人就是個(gè)好的程序員,但這很可能就說(shuō)明了他們對(duì)這個(gè)職業(yè)有高于常人的興趣,或者在大學(xué)里這些語(yǔ)言都學(xué)過(guò)(這也許是個(gè)不好的信號(hào))。
我不確定你能從這篇文章里得到些什么,但是把上面描述的整個(gè)招聘過(guò)程當(dāng)成一個(gè)有趣的事情分享給大家是有價(jià)值的。如果你是一個(gè)正處在相同情形下的學(xué)生,如果正打算向一個(gè)類似IBM這樣的公司申請(qǐng)實(shí)習(xí),讀了這篇文章你就會(huì)知道該怎么做了。如果你發(fā)現(xiàn)自己是一個(gè)處在相似情況下的面試官,你會(huì)在這篇文章里發(fā)現(xiàn)很多相關(guān)的觀點(diǎn)。
【編輯推薦】