雇傭合適的人對于Fog Creek軟件公司來說是非常關(guān)鍵的。在我們這個領(lǐng)域,有三類人可以挑選。在一個極端, 是哪些混進來的, 甚至缺乏最基本的工作技巧. 只要問這類人兩三個簡單的問題,再讀一下他們的簡歷,就可以輕易地剔除他們。另一個極端的類型是 才華橫溢的超級明星 這些人僅僅為了好玩就用匯編語言為Palm Pilot(一種手掌電腦)寫了一個Lisp(一種人工智能編程語言)編譯器。在這兩種極端類型中間的是一大群不能確定水平的候選者,也許他們中的某些人能干些什么?這里的關(guān)鍵是明白超級明星和那一大堆屬于中間類型的人的區(qū)別,因為Fog Creek軟件公司只雇傭超級明星。下面我要介紹一些找出超級明星的技巧。 Fog Creek公司最重要的雇傭標準是:
就是這些了。符合這樣標準的人就是我們公司需要的員工了。 記住這條標準。 每天上床前背誦這條標準。我們公司的目標之一就是雇傭擁有這樣的潛質(zhì)的人,而不是雇傭懂某些技術(shù)的人。任何人所擁有的某些具體技術(shù)都會在幾年內(nèi)過時,所以,雇傭有能力學習新技術(shù)的人,要比雇傭那些只在這一分鐘知道SQL編程是怎么回事的人對公司更劃算一點。 有頭腦確實是一個很難定義的品質(zhì)。但是讓我們看一些在面試時能提問的一些問題,通過這些提問,我們可以找出擁有這種品質(zhì)的人。完成工作非常關(guān)鍵??雌饋?B>有頭腦但是不能完成工作的人經(jīng)常擁有博士學位,在大公司工作過,但是在公司中沒有人聽他們的建議,因為他們是完全脫離實際的。比起準時交活兒,他們寧愿對于一些學院派的東西沉思。這些人由以下特性而可以識別出來。他們總是愛指出兩個根本不同的概念間的相似性。例如,他們會說“Spreadsheets是一種特殊的編程語言”,然后花一個禮拜寫一篇動人的,智慧的白皮書。這篇白皮書論述了,作為一個編程語言,spreadsheet關(guān)于計算語言特性的方方面面。聰明,但是沒用。 現(xiàn)在,我們來談?wù)?B>完成工作但是沒有頭腦的人。他們愛做蠢事。從來也沒有考慮過將來得靠他們自己或者別的什么人來亡羊補牢。通過制造新的工作,他們成為了公司的負債而不是資產(chǎn)。因為他們不僅沒有為公司貢獻價值,還浪費了好員工的時間。這些人通常到處粘貼大堆的代碼,而不愿意寫子程序。他們是完成了工作,但是不是以最聰明的方式完成工作。 面試時最重要的法則是:
在面試結(jié)束時,對于被面試者,你不得不做一個直截了當?shù)臎Q定。這個決定只有兩個結(jié)果:雇傭或者不雇傭. 回到你的電腦前,立刻用電子郵件通知招聘負責人你的決定。電子郵件的主題應(yīng)該是雇傭或者不雇傭。接著你需要在正文中寫兩段來支持你的決定. 沒有其他的答案。永遠不要說,“雇傭你,但是不能在我的團隊中”。這是非常粗魯?shù)模驗槟阍诎凳緫?yīng)試者沒有聰明到能有和你一起工作的資格,但是以他的頭腦適合進入那些天生輸家隊伍。如果你發(fā)覺自己被誘惑,想說出那句“雇傭你,但是不能在我的隊伍中”,那么就簡單的把這句話變成“不雇傭”再說出口。這樣就沒事了。甚至如果某個人在特定領(lǐng)域很能干,但是在別的隊伍中將會表現(xiàn)不好,也是不雇傭。事物變化的如此之快,我們需要的是在任何地方都能成功的人。如果某些情況下你發(fā)現(xiàn)了一個白癡專家(擁有某些特殊能力的白癡),這個專家對于SQL非常,非常,非常的精通,但是除此之外什么也學不會,不雇傭。在Fog Creek公司他們沒有將來。 永遠不要說,“也許,我吃不準”。如果你吃不準,意味著不雇傭???,比你想象的容易的多。吃不準?就說不!同樣,如果你不能作出決定,那意味著不雇傭。不要說,”嗯,雇傭,我想是這樣的。但是關(guān)于...,我想知道 ...”。這種情況就是不雇傭。 最重要的是記住這點,放棄一個可能的好人要比招進一個壞人強(譯者按:中國有位哲人說過,寧可錯殺一千,不可放過一個,呵呵)。一個不合格的求職者如果進入了公司,將要消耗公司大量的金錢和精力。其他優(yōu)秀員工的還要浪費時間來修復(fù)這個人的錯誤。如果現(xiàn)在你還在猶豫,不雇傭。 如果你是Fog Creek公司的面試官,當你拒絕了大量的應(yīng)聘者時,不要為Fog Creek公司將因此雇不到任何人了而憂慮。這不是你的問題。這是招聘負責人的問題。這是人力資源部的問題。這是Joel(譯者注: Fog Creek公司的老板,本文作者)的問題。但不是你的問題。不停地問自己,哪種情況更糟糕?一種情況是我們變成了一個龐大的,糟糕的軟件公司,充斥著許多腦袋空空如可可果殼的家伙,另一種情況是我們是一個小而高品質(zhì)的公司。當然,找到優(yōu)秀的應(yīng)聘者(并聘用他們)是很重要的。找到有頭腦而且完成工作的人是公司中的每個員工的日常工作之一。但是當你作為Joel Creek公司的一員真的開始面試一個應(yīng)聘者時,要裝作現(xiàn)在正有很多優(yōu)秀的人想打破頭擠進Fog Creek公司??傊?,無論找到一個不錯的應(yīng)聘者是多么的難,永遠不要降低你的標準。 但是你如何作出雇傭或者不雇傭這樣艱難的決定?你只要在面試過程中不停地問自己:這個人有頭腦嗎?這個人能完成工作嗎?要作出正確的回答,在面試時你必須問對問題。 開個玩笑,下面我要問個有史以來最差的面試問題: “Oracle 8i中的數(shù)據(jù)類型varchar和varchar2有什么區(qū)別”這是一個可怕的問題。掌握這種瑣碎的技術(shù)細節(jié)和Fog Creek公司想雇傭你之間沒有任何聯(lián)系。誰會去記這種東西?如果有在線幫助,你可以在15秒內(nèi)找到答案。 實際上,還有更差的問題,等會兒我會談到的。 現(xiàn)在我們要談到有趣的部分了:面試時提哪些問題。我的面試問題清單來自于我去微軟公司找第一份工作的經(jīng)歷。這里實際上有幾百個微軟面試問題。每個人都有偏愛的問題。你也可以發(fā)展一套自己的面試問題以及面試的個人風格,這樣你就可以比較容易地作出雇傭/不雇傭的決定。以下是我成功使用過的一些面試技巧, 在面試前,我讀一遍應(yīng)試者的簡歷,然后在一張紙片上隨便寫以下我的面試計劃。這個計劃實際上就是我要問的問題清單。以下是一個例子(用來面試程序員的):
在面試前,我非常,非常當心,避免自己先入為主。如果在面試前你就已經(jīng)想當然地認為,一個麻省理工的博士一定是一個有頭腦的人。那么在接下來的一小時的面試時間內(nèi),無論那個麻省理工的博士說什么都不能改變你的最初印象。如果在面試前你就認為這個應(yīng)試者是個傻瓜,那么他面試時說什么也無濟于事。面試就象一個非常精巧的天平。一小時的面試結(jié)束后就要對一個人下結(jié)論是不容易的(但是你又必須在面試結(jié)束后得出結(jié)論)。一些不起眼的細節(jié)可能會影響最后的結(jié)論。如果你在面試開始前對于應(yīng)試者有了一點了解的話,就好比天平的某一端加上了重重的砝碼。這樣面試本身就會變得沒有用處了。以前有一次在面試前,一個招聘負責人跑進我的房間說,“你肯定會愛上這個家伙的!" 對一個男孩? 天哪,這簡直讓我發(fā)瘋。我本來應(yīng)該說,“嗯,如果你這么確定我會喜歡他,為什么你不干脆雇傭他,何必讓我浪費時間來面試?”但是那時我還太年輕幼稚, 所以還是面試了那個人。當這個家伙開始說一些蠢話時,我對自己說,“哇塞,這應(yīng)該是個例外情況,也許是大智若愚。”我開始帶著玫瑰色眼鏡看他了。于是我以說“雇傭”結(jié)束了面試,雖然他是一個糟糕的面試者。接下來發(fā)生了什么事?除了我,其他的面試官都說,不要雇傭這個人。教訓是,不要聽別的人的話,在面試應(yīng)試者前不要四處打探這個面試者的情況。最重要的是不要和別的面考官談?wù)搼?yīng)試者,除非你們都已經(jīng)作出了獨立的判斷。這才是科學的做法。 作為面試步驟的第一步,介紹的目的是讓應(yīng)試者放輕松。我通?;?0秒鐘,講一下我是誰,接下來面試會如何進行。我總是使得應(yīng)試者確信,我們關(guān)心的是他(她)如何解決問題的,而不是他(她)的最終答案是對還是錯。順便說一下,面試時,你不要和應(yīng)試者隔著一個桌子坐著,否則在你和面試者之間就有了一個障礙,并且暗示著一種比較正式嚴肅的氣氛,這樣應(yīng)試者就很難放松了。更好的辦法是把桌子靠墻放著,或者和應(yīng)試者坐在桌子的同一邊,這樣有助于應(yīng)試者放松。只有應(yīng)試者不會因為緊張而表現(xiàn)失常,你才能更有效的進行面試. 第二步的內(nèi)容就是問應(yīng)試者最近做了些什么項目。對剛畢業(yè)的學生, 如果有論文就問問論文, 沒有的話, 就問問他們做過什么很喜歡的大作業(yè).例如,有時候我會問一下,“你最喜歡上學期哪門課程?不一定要和計算機相關(guān)的。”事實上,如果應(yīng)試者回答的課程和計算機沒有關(guān)系,我會比較高興。有時候你會發(fā)現(xiàn)這個計算機系應(yīng)屆生選擇了盡可能少的計算機相關(guān)課程,但是卻選修了很多和音樂相關(guān)的課程。但是他(她)卻說最喜歡的課程是《面向?qū)ο髷?shù)據(jù)庫》。哼哼,不錯啊. 不過如果你直接承認你喜歡音樂勝于計算機, 而不是在這兒胡說八道的話, 我會更高興一點。 當面試有工作經(jīng)驗的人時,你可以讓他們談一下前一份工作。 我問這個問題的目的是在尋找一樣品質(zhì):熱情。在應(yīng)試者談到他(她)最近做過的項目時,你觀察到以下跡象都是不錯的:
現(xiàn)在我們談?wù)勄鍐紊系牡谌睿?I>無法回答的問題。這很有趣。這個主意的關(guān)鍵在于問一些不可能有答案的問題,就是想看一下應(yīng)試者怎么辦。“西雅圖有多少眼科醫(yī)生?”“華盛頓紀念碑有多重?”“洛杉機有多少加油站?”“紐約有多少鋼琴調(diào)音師?”
關(guān)于編程問題,我通常要求應(yīng)試者用C語言寫一些小函數(shù)。以下是我通常會出的題目:
注意,通常你不會希望他們寫的代碼多于5行,因為你沒有時間理解太長的代碼。 現(xiàn)在我們來詳細看一看其中幾個問題: 第一個問題: 逆序一個字符串。我這輩子還沒有見過那個面試者能把這題目一次做對。所有的應(yīng)試者都試圖動態(tài)生成緩沖區(qū),然后將逆序的字符串輸出到該緩沖區(qū)中。問題的關(guān)鍵在于,誰負責分配這個緩沖區(qū)?誰又負責釋放那個緩沖區(qū)?通過這個問題,我發(fā)現(xiàn)了一個有趣的事實,就是大多數(shù)認為自己懂C的人實際上不理解指針和內(nèi)存的概念。他們就是不明白。這真叫人吃驚,無法想象這種人也能做程序員。但他們真的就是!這個問題可以從多個角度判斷應(yīng)試者:
第三個問題可以考考面試者對C的位運算的掌握,但這是一種技巧,不是一種品質(zhì),所以你可以幫助他們。有趣的等他們建立了一個子函數(shù)用來計算byte中為1的位的數(shù)目,然后你要求他們優(yōu)化這個子函數(shù),盡量加快這個函數(shù)的運行速度。聰明的應(yīng)試者會使用查表算法(畢竟這個表只有 256個元素,用不了多少內(nèi)存),整個表只需要建立一次。跟聰明的應(yīng)試者討論一下提高時間/空間效率的不同策略是十分有意思的事情. 進一步告訴他們你不想在程序啟動時初始化查詢表。聰明的面試者可能會建議使用緩沖機制,對于一個特定的byte,只有在第一次被查詢時進行計算,然后計算結(jié)果會被放入查詢表。這樣以后再被查詢時直接查表就行了。而特別特別聰明的面試這會嘗試有沒有建立查詢表的捷徑,如一個byte和它的置1的bit數(shù)之間有沒有規(guī)律可循? 當你觀察應(yīng)試者寫C代碼時,以下一些技巧會對你有幫助:
不可避免的,你會在他們的程序中發(fā)現(xiàn)bug,于是我們現(xiàn)在來到了第五個問題:你對代碼滿意嗎? 你可能想問,“好吧,bug在哪里?”這是來自地獄的一針見血的問題,要回答這個問題可要大費口舌。所有的程序員都會犯錯誤,這不是問題。但他們必須能找到錯誤。對于字符串操作的函數(shù),他們通常會忘記在輸出緩沖區(qū)加上字符串結(jié)束符。所有的函數(shù),他們都會犯off-by-one錯誤(譯者按:指的是某個變量的最大值和最小值可能會和正常值差1)。他們會忘掉正常的C語句結(jié)尾的分號。如果輸入是零長度字符串,他們的函數(shù)會運行錯誤。如果malloc調(diào)用失敗而他們沒有為此寫好錯誤處理代碼,程序會崩潰。一次就能把所有事情做對的程序員非常,非常,非常地少.不過要是真的碰上一個的話, 提問就更有意思了. 你說,"還有Bug"。他們會再仔細地檢查一遍代碼。這個時候, 觀察一下他們內(nèi)心是否開始動搖了, 只是表面上勉強堅持說代碼沒有問題??傊?,在程序員寫完代碼后,問一下他們是否對代碼滿意是個好主意。就像Regis那樣問他們?。ㄗg者按,Regis Philbin是美國ABC電視網(wǎng)的游戲電視節(jié)目主持人,他的口頭禪是“這是你的最后的答案嗎?”) 第六部分:關(guān)于設(shè)計的問題。讓應(yīng)試者設(shè)計某樣東西。Jabe Blumenthal,Excel的原始設(shè)計者,喜歡讓應(yīng)試者設(shè)計房子。Jabe說,曾經(jīng)有一個應(yīng)試者跑到白板前,畫了一個方塊,這就是他的全部設(shè)計。天哪,一個方塊!立刻拒絕這樣的家伙。你喜歡問什么樣的設(shè)計問題?
于是我們來到了第七部分,挑戰(zhàn)。這部分很好玩。在面試中留心一下, 當面試者的回答絕對的百分之百毫無爭議時, 你可以說: " 嗯, 等一下等一下." 然后花上兩分鐘玩一下魔鬼的游戲(譯者按,原文為devil‘s advocate,魔鬼代言人指的是違背自己的良知,為錯誤邪惡的觀點辯護). 記住一定要在你可以肯定他正確時和他爭論。 這個很有意思.
不得不承認,面試雙方的地位并不是平等的。有可能應(yīng)試者由于害怕你的權(quán)力而不敢于你爭辯。但是,好的應(yīng)試者有足夠的熱情和勇氣堅持正確的觀點,他們由于熱切希望說服你而會暫時忘記正在被面試。這樣的人就是我們要雇傭的人。 最后,可以問一下應(yīng)試者有什么想問的。一些人喜歡看看應(yīng)試者這時是否會問一些聰明的問題。這是市面上流行的面試書籍的標準技巧。我個人不在乎應(yīng)試者問什么,因為這時我已經(jīng)做了決定。麻煩在于,應(yīng)試者也許已經(jīng)見了5、6個人,進行了好幾輪面試,他們可能很累了,以至于不能為每輪面試都準備一個聰明而獨特的問題。所以如果他們沒有可問的,沒關(guān)系。 我總是留下面試的最后5分鐘來推銷我的公司。這很重要。即使我不打算雇傭眼前這個應(yīng)試者。如果你幸運的找到一個很棒的應(yīng)試者,你當然愿意做任何事情說服他(她)來你的公司。即使他們不是好的應(yīng)試者,你也要盡力讓他們?yōu)镕og Creek公司激動,這樣面試結(jié)束時他們會對Fog Creek公司留下一個很好的印象。記住,應(yīng)試者并不僅僅是可能的雇員,他們也是顧客,也是我們公司的推銷員。如果他們覺得我們的公司很棒,他們也許會推薦朋友來面試。 啊哈,我記得我說過我會給出一些應(yīng)該避免的非常不好的反面的試題例子。首先,避免不合法的問題。有關(guān)種族,宗教,性別,出生國,年齡,服役記錄,是否老兵,性取向,生理障礙的問題都是不合法的。即使他們的簡歷說他們1990年在軍中服役,也不要問有關(guān)問題。也許這會讓他們愉快地談?wù)撛诤硲?zhàn)爭中的經(jīng)歷。但是你的問題還是不合法的。如果簡歷上寫著他們上過Technion in Haifa, 不要問他們是否是以色列人, 即使只是為了閑談, 因為這是違法的. 下面有一個很好的不合法的例子。點擊這里有很多關(guān)于什么是違法的討論。(但是這個網(wǎng)站的其余問題夠愚蠢的。) 其次,不要在問題中給予應(yīng)試者暗示,我們公司喜歡或者不喜歡什么樣的員工。我能想到的一個例子是問應(yīng)試者是否有小孩或者是否結(jié)婚了。應(yīng)試者也許會想我們不喜歡有家庭拖累的員工。 最后,不要問那些腦筋急轉(zhuǎn)彎的題目,例如6根火柴怎么拼出4個三角形。象這樣的靈機一動的問題是不能看出應(yīng)試者是否有“有頭腦/完成工作”的品質(zhì)。 面試與其說是科學不如說是藝術(shù)。但是只要你記住有頭腦/完成工作這個原則,你就可以應(yīng)對自如。有機會就問問你的同事他們喜歡的面試問題和答案。這是我們公司員工午飯時熱衷的話題之一。 |
|