咱們都生活在一個這樣的噩夢中:一個新手開發人員前來工做,你歡迎他的參與,卻發現他達不到你對進度的要求,並且他的提問也顯示出他對基礎知識的無 知。即便他最終把工做完成了,編寫的程序也很笨拙,須要更能幹的人從頭重寫。然而錄取他的面試官們或人力資源部門(若是你的公司中也有這種官僚體制的寄生 蟲的話)卻信誓旦旦地表示,他們只聘用精英人才。
這是一個大問題,尤爲是如今,有愈演愈烈的趨勢。天天我都從招聘人員那兒收到騷擾郵件,每一個IT公司都極度渴望聘請程序開發者,可是優秀的程序員是不可替代的。一個優秀的程序員能夠輕易完成至關於一個平庸的程序員五十倍的工做,而拙劣的程序員最終只會產生消極的生產力(參見《一些不爲人知的編程真相》)。所以,對任何公司來講僱傭這樣的人都 是一個可怕的錯誤;對新創公司來講,這簡直就是具備毀滅性的公司殺手。既然這樣,爲何這種狀況出現得如此頻繁呢?
就如同有不少殘留問題困擾着現代軟件工程同樣,這都是微軟的錯。當微軟仍是一我的人都暗自想去工做的邪惡帝國時,就以用使人絞盡腦汁的問題面試而著名。例如:爲何井蓋是圓的?固然,他們也問剛畢業的大學生一些關於計算機科學理論的問題,如:請寫一個二分查找程序。
每一個IT公司都但願能像微軟同樣,甚至Google也這麼但願過,直到目前你們都想成爲Google歌這樣的公司。所以這種相互模仿的面試傳統就延續 了下來。看看這兩個關於面試問題的最新信息,一個來自準員工,一個來自谷歌面試官。這裏引用了兩句谷歌面試官說的話,頗有啓發性。「我甚至沒必要說這是一個 很好的標準。」和「若是 有任何值得欣慰的地方,至少咱們不再問複雜的謎語問題了,那個實在是至關使人反感。」
使人高興的是,Google彷佛有點意識到他們的招聘方法存在問題,惋惜的是他們沒有設法解決。Jean Hsu也撰文代表她對技術面試效用的疑問。根本問題是,目前經過行業標準化的軟件面試所須要的技能並非一個優秀的軟件開發人員所須要的技能,或許這其中有某些相關性,但這個相關性就跟奧克蘭突襲者隊挑選出跑得最快的人,卻無盡沮喪地發現國家橄欖球聯盟並非一個跑步比賽是同樣的。
事實上更糟糕。由於至少接球員是須要跑的,而我卻能夠無所畏懼的向你保證,沒有哪一個被聘用的軟件工程師必須寫一個二分查找程序。這就如你選擇承包商一 樣, 由於他們知道怎樣用煤、鐵、爐子和風箱來鍛造和澆鑄鋼材。事實上他們只須要知道最近的一家家得寶(全球最大的家居建材零售商,美國第二大零售商)的地址, 以及用在那裏買的鋼材來作什麼用。
你一般試圖在僱員身上找尋的東西,Joel Spolsky曾給出了準確的解釋,即:就是聰明(Smart)而且能作事(Get things done)的人。(大學院校中處處都是具有前者而不具有後者的人。)不過,首先你必須構建一些其它的能力,也就是說不能徹底不具有任何能力。你會驚奇的發 現,如此多的徹底不勝任的應聘者出如今技術面試中。谷歌的二分搜索大概是打算做爲他們的「FizzBuzz」(分支切換)——一個你進入谷歌大門必須越過 的障礙。這個「FizzBuzz」在真正的面試開始前佔據了足足五分鐘。
那麼,一場真正的面試包括什麼呢?請容許我提出一個愚見:不聘用沒有任何成就的人。證書和學位歷來都不是成就,我是指有實際用戶的真實項目。如今 Google App Engine和Amazon Web Services提供免費的第三方服務,並且要註冊成爲一名Android開發人員,並在Android Market發佈程序也總共只需25美圓。在這樣一個世界裏,任何軟件開發人員沒有藉口說他沒有本身製做的網站、應用程序或服務。(編注:所以,新人在參 加全職工做前,去承接網站開發項目或者軟件開發項目,從中學到的知識和積累的經驗,對新人而言是一項很是寶貴的財富。)
舊的面試體系以有限的信息爲基礎,你只能經過應聘者的簡歷瞭解他們。可是,若是你只面試有成就的人,你將會有一個更寬廣的平臺來開展工做。避開 「FizzBuzz」,直接讓應聘者展現他們的代碼,並解釋他們的設計決策,若是讓他們如今從新作的話,又會有什麼不一樣。你在一旁觀看時,讓他們實現一個 或者兩個功能,這樣你就能知道他們其實是怎樣工做的以及他們在工做中的想法。這纔是你想從一場技術面試中獲得的,而不是經過一些過期的算法和數據結構來 對此進行估量。這個世界總在不斷前進。
譯文連接:http://www.jobbole.com/entry.php/932