資深面試官眼中的好程序員是什么樣?奇酷教育為你解答
來(lái)源:
奇酷教育 發(fā)表于:
這篇文章是一位資深面試官所寫的他心目中好員工的標(biāo)準(zhǔn),其實(shí)不僅是對(duì)人事適用,對(duì)正在求職的程序員們來(lái)說(shuō)也需要對(duì)照自身,做到符合面試
這篇文章是一位資深面試官所寫的他心目中好員工的標(biāo)準(zhǔn),其實(shí)不僅是對(duì)人事適用,對(duì)正在求職的程序員們來(lái)說(shuō)也需要對(duì)照自身,做到符合面試官需求,才能大大提高獲得OFFER的可能性。
經(jīng)驗(yàn)
這里所說(shuō)的經(jīng)驗(yàn)不是通過(guò)工作了多少年來(lái)衡量的,而主要是指面試者的經(jīng)歷,比如,在面試的時(shí)候,面試官考察你是否完整地實(shí)現(xiàn)過(guò)一個(gè)軟件,或作為主要開發(fā)者完成過(guò)一個(gè)項(xiàng)目。經(jīng)驗(yàn)的重要性在于它能說(shuō)明一個(gè)人的綜合能力。從項(xiàng)目的性質(zhì)、規(guī)模和難度,面試官就可以大致判斷出面試者的綜合能力。如果一個(gè)面試者一直在大公司負(fù)責(zé)一個(gè)小模塊的開發(fā)維護(hù),那么基本可以判斷他不具備獨(dú)立或作為主要開發(fā)者承擔(dān)一個(gè)項(xiàng)目的能力,只適合在另一家大公司做類似的事情。對(duì)于門檻較高需要長(zhǎng)期技術(shù)積累的職位,相關(guān)經(jīng)驗(yàn)更顯得尤為重要,比如,Linux內(nèi)核開發(fā),JVM開發(fā),游戲引擎開發(fā),數(shù)據(jù)庫(kù)實(shí)現(xiàn),高級(jí)UX等。對(duì)于這類職位,沒有經(jīng)驗(yàn)的面試者即使綜合素質(zhì)不錯(cuò)也是需要長(zhǎng)時(shí)間的學(xué)習(xí)和積累才能勝任。所以,基本上如果確定了你的職位屬于此類,那么相關(guān)經(jīng)驗(yàn)毫無(wú)疑問(wèn)應(yīng)該成為首選因素,換句話說(shuō),P(工作好 | 相關(guān)經(jīng)驗(yàn)好)的概率是非常高的。
通過(guò)項(xiàng)目經(jīng)驗(yàn)判斷面試者的優(yōu)劣比通過(guò)基礎(chǔ)和算法測(cè)試更加靠譜,所以,面試過(guò)程中面試官應(yīng)該花比較多的時(shí)間聽面試者介紹項(xiàng)目經(jīng)驗(yàn),并進(jìn)行深入地探討交流,了解面試者的知識(shí)面、思維能力、表達(dá)能力等。同時(shí),可以結(jié)合項(xiàng)目提一些基礎(chǔ)知識(shí)和算法的問(wèn)題,比如,如果面試者做過(guò)C++相關(guān)的項(xiàng)目,那就可以問(wèn)他如何進(jìn)行內(nèi)存管理?是否熟悉智能指針?如果面試者的回答不能令人滿意,那么就基本上可以判斷他的項(xiàng)目做得不是很好。
要注意的是,經(jīng)驗(yàn)也是一個(gè)多維度的事物。比如,C++股票交易中間件系統(tǒng),這就涉及(C++,中間件,股票) 3個(gè)維度。假如面試者A做過(guò)C++股票交易客戶端,面試者B做過(guò)C的股票交易中間件。從語(yǔ)言角度看,A最匹配,從項(xiàng)目性質(zhì)看,B最匹配,你如何選擇?這就是在多個(gè)維度中,哪個(gè)維度更重要的問(wèn)題,就這個(gè)例子而言,我個(gè)人更傾向于B,因?yàn)槲艺J(rèn)為中間件開發(fā)經(jīng)驗(yàn)是主要矛盾,而從C切換到C++并不是問(wèn)題。所以,面試官需要判斷哪一種經(jīng)驗(yàn)是主要的,而哪一種經(jīng)驗(yàn)是次要的。比如,我們招聘Android應(yīng)用開發(fā),這個(gè)職位的Android技術(shù)門檻并不高,它的真正難點(diǎn)在于做出好的用戶體驗(yàn)(UX)。所以,如果一個(gè)面試者沒有Android的經(jīng)驗(yàn)我們是可以接受的,但是我希望他在UX方面有經(jīng)驗(yàn),至少做過(guò)其他平臺(tái)的移動(dòng)應(yīng)用開發(fā)。
性格
現(xiàn)在,我來(lái)談我認(rèn)為最重要的因素:性格。這可能是許多初為面試官的朋友所難以想象的,怎么會(huì)是性格最重要呢?說(shuō)實(shí)話,當(dāng)我意識(shí)到這一點(diǎn)時(shí),我自己也很驚訝!說(shuō)白了,還是 P(工作好|性格好)的概率最高啊。我的實(shí)際經(jīng)驗(yàn)是,如果一個(gè)人的性格好,他能把工作做好的可能性是最高的,性格好遠(yuǎn)比基礎(chǔ)好、算法好要靠譜。
一個(gè)人如果技術(shù)上有缺陷,經(jīng)驗(yàn)上有不足,但性格好,在團(tuán)隊(duì)中是很容易由其他人來(lái)補(bǔ)位的,他自己也很容易逐漸補(bǔ)起來(lái);相反,如果一個(gè)人的性格不好,所有的技術(shù)優(yōu)勢(shì)經(jīng)驗(yàn)優(yōu)勢(shì)都發(fā)揮不出來(lái),甚至還會(huì)起到負(fù)作用,而且性格缺點(diǎn)很難改變。我一直談到實(shí)際工作所需要的是綜合性的能力,這種綜合能力的發(fā)揮中性格是至關(guān)重要的。項(xiàng)目中不止會(huì)遇到技術(shù)問(wèn)題,要涉及溝通、協(xié)調(diào),不同的人不同的部門既有合作又有磨擦,如何處理這些事情都需要一個(gè)良好的性格。可以說(shuō),在開發(fā)團(tuán)隊(duì)里讓你與眾不同的不是你從哪個(gè)學(xué)校畢業(yè),也不是你過(guò)去的經(jīng)驗(yàn),而是你的性格。
當(dāng)然,性格是一個(gè)復(fù)雜的東西,它包含了很多的方面,并非所有方面都是程序員面試所需要關(guān)注的。我的經(jīng)驗(yàn)是可以重點(diǎn)考察這些方面:
1) 態(tài)度積極還是消極。有的面試者在談吐中就會(huì)自然給你一種積極上進(jìn)的感覺,或者你可以在他的經(jīng)歷中發(fā)現(xiàn)他積極的因素,這些都不是太難看出來(lái)的。相反,有的面試者你能明顯感覺到他的消極情緒。積極性在工作中是十分重要的,積極的人能給團(tuán)隊(duì)帶來(lái)朝氣,也更易于合作?;旧希绻_定面試者屬于態(tài)度積極的,他通過(guò)我這一關(guān)的可能性就會(huì)大大增加;相反,如果確定屬于態(tài)度消極的,即使技術(shù)能力不錯(cuò)我也會(huì)十分謹(jǐn)慎。
2) IQ。我的經(jīng)驗(yàn)是,總體來(lái)看,聰明的人在工作中的表現(xiàn)更為優(yōu)秀。在面試中要考察一個(gè)人是否聰明并不一定要像Google和MS那樣找些專門測(cè)試IQ的智力題,其實(shí),你只需要看他討論問(wèn)題是不是很有邏輯性,思考和說(shuō)話是不是反應(yīng)敏捷就可以做出大致的判斷。另外,眼睛是人心靈的窗戶,一個(gè)人聰明與否,眼睛是會(huì)說(shuō)話的。不過(guò),聰明也不完全是優(yōu)點(diǎn),比如,當(dāng)公司或項(xiàng)目遇到困難時(shí),往往是聰明人先跑掉了,堅(jiān)守的往往是IQ一般的人。
3) 語(yǔ)言表達(dá)能力。語(yǔ)言表達(dá)能力也是程序員十分重要的一項(xiàng)素質(zhì),它關(guān)系到項(xiàng)目中的溝通是否順暢。面試官可以看看面試者能否用簡(jiǎn)明的語(yǔ)言介紹清楚曾經(jīng)做過(guò)的項(xiàng)目,能否抓住要點(diǎn),能否考慮到聽者的相關(guān)背景。一般來(lái)講,語(yǔ)言表達(dá)能力強(qiáng)的人綜合能力都不會(huì)太差。
4) 是否具有用戶意識(shí)。有人說(shuō)程序員是做研發(fā)的,哪來(lái)什么用戶?只有銷售、市場(chǎng)人員才會(huì)和用戶打交道。其實(shí),這是完完全全的錯(cuò)誤認(rèn)識(shí)。你寫一個(gè)模塊,甚至一個(gè)API,只要有別人用,他就是你的用戶。有的程序員設(shè)計(jì)一個(gè)模塊或是一個(gè)軟件總是習(xí)慣于從使用者的角度來(lái)考慮,盡量地方便使用者,這就是一種良好的用戶意識(shí)。具有良好的用戶意識(shí)的人更能考慮別人的感受和整體的需要,而不是單純地從自己和局部來(lái)思考問(wèn)題。當(dāng)面試者談及過(guò)去的項(xiàng)目經(jīng)驗(yàn)時(shí),面試官可以常常站在用戶的角度對(duì)其進(jìn)行提問(wèn),從這個(gè)過(guò)程中觀察其是否具有良好的用戶意識(shí)。
5) 如何應(yīng)對(duì)質(zhì)疑和壓力。面試官應(yīng)該對(duì)面試者的回答以及以往項(xiàng)目進(jìn)行合理的質(zhì)疑,看看他如何應(yīng)對(duì)。曾經(jīng)有一位面試者談到做游戲登錄服務(wù)器的經(jīng)歷,我就問(wèn):“如果登錄服務(wù)器掛了,怎么辦呢”?他說(shuō)原先雖然沒有考慮這個(gè)問(wèn)題,但是可以怎么怎么改進(jìn)。其實(shí),大家都理解項(xiàng)目中有各種不完美,這里面原因很多,只要面對(duì)質(zhì)疑和壓力能從容應(yīng)對(duì)努力往好的方向思考解決就可以了,不需要掩飾缺陷,更不應(yīng)該有情緒。我遇到過(guò)有的面試者,一旦你對(duì)其項(xiàng)目提出質(zhì)疑,他馬上產(chǎn)生反抗情緒,或不高興,或不承認(rèn)有問(wèn)題,這很容易一下子看出來(lái)他在工作中容不得質(zhì)疑和批評(píng),這種人要想合作就很困難。
6) 個(gè)性特點(diǎn)。許多面試者喜歡在簡(jiǎn)歷上寫“精通C++/Linux“,這些字眼看得人麻木,如果有人寫”喜歡C++/Linux“,我就會(huì)有一種眼前一亮的感覺。“精通”是沒有感情色彩的敘述,而“喜歡”包含了面試者的個(gè)性,我更愿意看到面試者的個(gè)性。我相信對(duì)某樣?xùn)|西真正的熱情遠(yuǎn)比你當(dāng)前對(duì)它的掌握程度更為重要。其實(shí),N年的經(jīng)歷告訴我們,同一個(gè)班的同學(xué),同一個(gè)項(xiàng)目組的同事,雖然每天所學(xué)的知識(shí),所接觸的工作都是相同的,但其實(shí)每個(gè)人的成績(jī)和表現(xiàn)差異是十分明顯的。那么,到底本質(zhì)的差異是什么呢?其實(shí),就是每個(gè)人的個(gè)性。是個(gè)性使得有的人業(yè)余時(shí)間去打球,有的人業(yè)余時(shí)間去看書,有的人喜歡Linux,有的人喜歡Mac。一個(gè)人在團(tuán)隊(duì)中扮演的角色也和他的個(gè)性有很大的關(guān)系。面試官應(yīng)該引導(dǎo)面試者展現(xiàn)自己的個(gè)性,并判斷其是否有益于團(tuán)隊(duì)。
總結(jié)
最后總結(jié)起來(lái),我的經(jīng)驗(yàn)是: 1) 面試官的目標(biāo)是找到”工作好“的人,一定要圍繞這個(gè)目標(biāo)來(lái)進(jìn)行面試,如果把面試當(dāng)成了算法或操作系統(tǒng)期末考試這就走入了誤區(qū);2) 面試過(guò)程是通過(guò)學(xué)歷、性格、基礎(chǔ)、經(jīng)驗(yàn)、算法等可以測(cè)試的因素去綜合判斷面試者“工作好”的概率;3) 在各種因素中,性格 > 經(jīng)驗(yàn) > 基礎(chǔ) > 算法。性格是最重要的,如果性格不好,所有技術(shù)能力都會(huì)大打折扣,而且技術(shù)缺陷容易彌補(bǔ),性格缺陷很難改變;經(jīng)驗(yàn)體現(xiàn)了一個(gè)人的綜合能力,你可以從面試者過(guò)去的經(jīng)歷中判斷他能從事哪種工作,不能從事哪種工作;基礎(chǔ)和算法則主要起到輔助參考的作用,基礎(chǔ)好的程序員一般適應(yīng)性比較強(qiáng),學(xué)新技術(shù)更快,但是切忌單純從基礎(chǔ)來(lái)判斷一個(gè)人的能力。