在上一篇詳細討論了作為一個程式設計師的面試技巧。這一篇講講作為一個招人的部門或個人,如何從眾多的候選人中挑到真正比較優秀的程式設計師。
面試是個技術活,其本質上是一次溝通的過程。候選人要在限定的時間和條件內向面試官展現自己的才能,而面試官同樣也要在有限的時間和條件內發現候選人是否適合該職位。對於候選人的觀察,很多人存在誤區,那就是:技術主導,只要技術牛,那就是我要找的人。其實我認為這樣是非常不靠譜的,為什麼?因為我認為,無論什麼行業,作為一個部門負責人或者團隊負責人,在選擇候選人的時候,應該把德行放在第一位,其次才是技術水平,第三是身體狀況和其他因素。下面我就這三點展開來談一談。
第一:德行
對於一個程式設計師候選人來說的話,如何評判一個候選人的德行呢?我覺得有以下幾點:
眼神
注意觀察候選人眼神是否飄忽不定,是否總是不敢直視你的眼睛,或者回答問題的時候總是往左右兩邊瞟。一般來說,眼神是一個人性格的直觀表現之一,如果眼神不夠沉穩堅定,說明此人不踏實,心境飄忽,很有可能不誠信(比如愛撒謊,不誠實,不講信用等等)。
身體語言
如果一個候選人在跟你聊的過程中,整個人吊兒郎當,身體左搖右晃,一會二郎腿,一會把腳放到大腿上(別懷疑,我真遇到過),那麼說明此人一定不沉穩,性格輕佻浮躁,最好謹慎考慮。相反,如果候選人坐姿規矩,談話間體態得體,自然,不緊張,不做作,那麼該候選人應該比較有家教,個人習慣很好,性格比較穩定。
溝通
在跟候選人對話時,注意對方的語氣語調。如果候選人語速平緩,吐字鏗鏘,說明此人準備比較充分,不急躁。當遇到一些一時回答不上的問題時,能夠保持冷靜,集中精神思考,如果實在不會,沒有打算糊弄過關或者顧左右而言他,而是直接答覆不知道,那麼就說明該面試人性格比較沉穩,而且比較誠實,不滑頭。甚至你可以故意說錯一些細節,看看對方以何種方法給予糾正或者不糾正。你也可以直接故意用錯誤去質疑對方正確的表述,看看對方的反映,如果對方一下就被點燃了一樣蹦起來,或者總打斷你說話,說明對方性格比較急躁,這是程式設計師的大忌。當然此招能少用盡量少用,而且一次足矣,如果老這樣,會讓候選人覺得面試官不行,而心生鄙視。
細節
最常見的就是對方電話來了,看對方的反應,一般來說候選人會選擇直接掛掉,或者任由電話震動。如果對方當著你的面,直接接起了電話,說明對方在為人處事方面肯能有些欠缺,起碼不是很懂禮貌,或者根本不大重視這場面試。另外,一般來說前臺會給面試者打一杯水,等到面試結束,或者有需要中途更換面試場所(例如換會議室等等),如果對方隨手拿起水杯而不是留在原地,說明該候選人素質比較高的,而且心應該比較細。
第二:技術
技術排第二不是說技術不重要,作為一個程式設計師崗位,技術當然是非常重要的。很多企業喜歡讓程式設計師做卷子作為首面的內容。我認為這是不妥當的,是面試官在偷懶的表現。不是說做卷子不能反映問題,只是這種方式太死板,並不能真正過濾掉不合格的面試者。比如,我其實沒有什麼技術能力,但是我面試前背了很多書,那麼做卷子這一關我有可能可以過,到真正面試的時候才會被拒。所以,做卷子只能過濾那些真正沒有技術,而且沒有背書的面試者。但是,即便是直接面試,面試官真的碰到這樣的面試者,又花的了幾分鐘就可以判斷出來再拒絕呢?所以,我建議,不要做卷子,直接面試,並且分成以下幾個內容來考察面試者。
過往經驗
可以讓候選人介紹最近一個專案,並且描述自己的工作內容。首先看看候選人是否能夠說得清楚這個專案,比如有哪些模組,每個模組有哪些功能,實現了一個什麼業務邏輯,自己負責的這一塊的詳細業務邏輯又是怎樣的,等等,如果連這些都說不清楚,那麼基本上可以判斷候選人在撒謊。瞭解了專案之後,可以通過候選人負責的內容進行深入技術提問,比如候選人說使用了MVC4,那麼就可以就MVC4的相關知識進行提問;候選人說使用了多執行緒,那麼就多執行緒相關的知識進行提問,但是注意要由淺入深,不要一上來就問一些很難很深的問題。一般來說如果候選人沒有撒謊,那麼應該來說還是可以回答一些不太難的問題的。
基礎知識
一定要考察候選人的基礎知識。很多候選人在說起自己做過的專案的時候眉飛色舞,一套一套的,甚至滿嘴都掛著一些熱門的詞彙,比如大資料,高併發,雲端計算,等等。但是一問基礎知識就傻眼,最簡單的值型別引用型別都不知道有什麼本質區別。很多候選人都會辯稱,自己會程式設計,能夠實現業務邏輯,為什麼還要去背那些概念性的東西,殊不知,那些他們認為沒有的概念性的東西,正是我們構築大廈的根基所在。舉個例子,我造一所房子,地基打了10米,你造一所同樣的房子,沒有地基。我們都造好以後,在風和日麗的時候,看上去一模一樣,你會笑話我,“看,我們一樣,但是我比你不知道省了多少工序“,但是你要知道,並不是每天都會風和日麗,總會遇到狂風暴雨,等到考驗真正來臨的時候,誰的房子更不容易傾塌呢?
分類考察
在面試候選人的時候,最好是分類進行考察,每個類別準備5個問題左右,並且由淺入深。比如基礎知識5道題,我一般會問:值型別引用型別什麼區別?建構函式什麼特點,合適被呼叫?string和StringBuilder什麼區別?子類被例項化的時候會呼叫父類的建構函式嗎?介面和類有什麼使用場景上的區別?問完了基礎知識,一般會問C#的相關知識,然後是資料庫相關知識,然後是框架的知識,例如MVC的知識,最後問一些Web前端相關的,例如ajax,Jquery,JS等等。一般來說我不會考察演算法,資料結構相關的內容,更不會讓候選人寫一個“二分查詢法”,或者“單例模式”的程式碼,什麼道理呢?因為我招程式設計師還是以實際應用為主,而且.net裡面已經封裝了很多演算法,知道如何使用即可,對於原理性(注意,是原理,不是基礎)的東西,如果自己能花時間去了解去掌握更好,如果不太瞭解,但是能夠熟練應用封裝好的東西就行。畢竟頂尖的網際網路公司就那麼幾個,一般的公司招聘真的沒必要搞那麼高大上,兩個字,務實!。
第三:身體狀況及其他原因
為什麼把身體狀況單獨拎出來說呢?因為之前招過一個不錯的程式設計師,但是其身體極其瘦弱,臉色也比較蒼白,但是我還是把他招進來了,並且分配了相對重要的工作,但是該蒼白弟來了之後沒幾天,就舊疾復發(我也不知道入職體檢是怎麼做的),需要住院了,好在他也比較nice,也沒算工資,就直接離職了。所以面試官在招聘時,一定要注意候選人身體狀態,如果有明顯的身體狀態問題或者不正常,千萬要慎重考慮。另外,需要考慮的還有下面的因素:
候選人是否準備創業
有些候選人因為首次創業失敗,需要找個地方打工解決一下生活問題,一旦緩過勁來,就會離職重新創業。說實話,我是不太願意招此類程式設計師的,太不穩定。
之前換工作太頻繁
一般我認為,正常情況下,IT行業換工作頻率在2年一次以上是比較正常的,當然後寫不正常情況另當別論,例如公司倒閉老闆跑路,例如被收購後辭退,等等。但是,如果正常情況下,連續3分以上工作的更換頻率在1年以下,那麼這種候選人需要謹慎對待。
其他
比如提一些無理要求的,期望薪水過高的,完全不尊重人的,等等,這些候選人都要謹慎考慮。
總結
洋洋灑灑又寫了這麼多,希望對各位面試官有些幫助。在考查候選人時,一定要檢視候選人的德行,如果候選人德行不好,最後會讓負責人非常頭疼(親身經歷)。目前我的團隊中開發17人,16人是我親自招的,不說有多優秀多頂尖,但是絕對是一支戰鬥力極強的隊伍,高效,專業,穩定(從去年6月建團隊到現在只走了4人,其中老團隊成員2人,一人回家,一人被以前同事挖走。新團隊成員2人,一人上文提到的蒼白弟身體抱恙離職,一人因為對公司有意見主動離職)。所以,千萬不要光盯著候選人技術能力,要從各方面綜合去考察一個候選人,這樣才能找到你真正需要的人才。
打賞支援我寫出更多好文章,謝謝!
打賞作者
打賞支援我寫出更多好文章,謝謝!
任選一種支付方式