我如何招聘程序員?
很早以前就想寫壹篇采訪相關的文章。今天在網上看到壹篇關於如何面試程序員的英文文章,發現裏面有很多我喜歡的東西,於是模仿它的標題和自己的經歷寫了這篇文章。工作這麽多年,我嘗試過面對面,面試過別人。對於程序員,我經歷過非常好的面試,非常專業的面試,也有壹些BT和不愉快的面試。我個人認為,對於壹個好的面試來說,面試官是非常重要的。所以本文想從“面試官”的角度來解釋。所以有了下面這篇文章,希望這篇文章對妳的職業經歷有用,尤其是對那些正在招聘面試程序員的朋友。我覺得這篇文章對大家會有很多啟發。除此之外,作為被面試者,妳可以看看其他與程序員相關的文章,比如其他程序員如何看妳的簡歷,程序員需要的基本功,優秀程序員的十個習慣。對於招聘方來說,在招聘程序員的時候,我估計面試應聘者的時候,主要想了解以下三點:這個程序員夠聰明嗎?這個程序員能把事情做好嗎?這個程序員能和我的團隊壹起工作嗎?我相信,這是所有團隊經理在招人時都要考慮的三個問題,所有的問題基本都圍繞這三個問題展開。有時候,妳可能認為程序員的技術技能可以同時解決這三個問題。壹個技術過硬的人,壹定是壹個能把事情做好的聰明人,當然也能和團隊合作。是的,感覺是這樣,但不是這樣。有些人真的很聰明,但是在工作中處理不好事情。這樣的人應該是妳的朋友和顧問,但不應該是妳的員工。有些人人很好,和團隊裏的每個人都相處得很好,但是不是很聰明,但是很努力。這樣的人可以成為妳的下屬,比如壹個下屬骨幹的助理,或者整個團隊的助理。如果有人不能和團隊合作,妳就不應該和他合作,不管他有多聰明,解決問題的能力有多強。大家都認為團隊和諧是壹切的前提。對於傳統的面試招聘流程,基本是這樣的:看應聘者的簡歷,讓應聘者自我介紹。以問答的形式問壹些比較難,非常詳細的技術問題。給面試官壹些和幾個編程問題。(比如壹些詭異的算術題)我個人覺得這種面試方式很可笑,很糟糕,尤其是後面兩點。壹般來說,這樣的面試只會讓妳去面試壹些“書呆子”或者壹些“科技癮君子”。我來逐壹分析壹下這幾項的缺點。妳很難從壹個人的簡歷或者自我介紹去了解他。因為這些都是當事人自己寫的或者自己闡述的。所以,這不是很準確。通過簡歷只能知道很簡單的東西,對於能否入團還不夠。面試壹開始,讓應聘者自我介紹,只會讓面試官以壹種非常正式的態度面對整個面試。壹旦面試過程非常正式和嚴肅,就會讓人非常有拘無束。其實這不是我們想要的。我要的是申請人真實自然的表現,這樣我們才能學到最真實的東西。問幾個技術問題。比如:我親身經歷——“PS的-a參數是什麽意思?”,“在vi中刪除換行符的命令是什麽?”,“C++的關鍵字explict,mutable有什麽用?”等等等等。我之前作為申請人,非常討厭這種問題,因為妳查手冊就知道了。他要招的是詞典手冊嗎?不是壹個人?在這方面,重要的不是知識,而是它發現知識的能力。給考生壹個或幾個比較難的算法題,十幾分鐘,然後讓面試官寫下偽代碼或代碼。這太荒謬了。我們無法討論和核對信息,讓人在有壓力的狀態下回答。這完全不是實際工作中的狀態,我們的面試也成了問題。(我最變態的壹次經歷是,我把寫在兩頁紙上的代碼交上去的時候,面試官把它交給我旁邊的程序員,讓他輸出給電腦進行驗證。結果程序員說有編譯錯誤。於是,面試官說:“對不起,可能妳沒寫過多少程序吧”,這就相當可笑了。對於這壹點,重要的不是問題的答案,而是解決問題的思路和方法。之前經歷過很多面試。技術人員來找我面試的時候,我發現“技術人員的思維”對某些人來說是分不清面試和考試的。潛意識裏,他們不是在面試這個人,而是在刁難這個人展示他們的技能。我個人認為我是壹個優秀的程序員,但是我可以告訴妳,我過不了那個面試,因為那個面試是給他們自己的,不是給應聘者的。那麽,我是怎麽去面試的呢?首先,確認妳的簡歷。首先,看別人的簡歷很有必要。從簡歷,工作經歷,項目經歷,技術技能,這三樣東西妳都需要知道。壹般來說,妳可以先通過電話確認他的工作經歷、項目經歷、技術技能,然後,如果他符合妳需要的人的要求,妳就可以給公司打電話進行面談。不要叫別人,妳說妳的經驗和我們的工作有差距。(我曾經有過壹次面試經歷。公司我就不說了。反正是公司聲稱需要良好的溝通。它面試了我大概9次,從總程序員,PM,經理到總經理,最後壹次直接告訴我,我之前的經歷跟他們的要求差太遠了。我不禁要問,之前的采訪他們都在幹嘛?)二、面試開了。其次,邀請人來公司面試很重要,應聘者來公司面試。那就是妳壹定要讓整個面試過程非常隨意輕松,就像普通朋友之間的普通聊天交流壹樣。只有這樣,考生才能放松下來,展現自己的真實面貌來和妳說話聊天,妳也能在短時間內學到更多。讓應聘者放下心理負擔,讓他舉止自然,這是招聘方的責任。永遠不要說別人太緊張打不好。有時候,招聘人員要考慮自己的問題。面試開始的時候,千萬不要讓應聘者自我介紹,因為應聘者已經給妳發了簡歷,妳已經給他打過電話了。另外,考生通常對這種面試練習準備得非常充分。另壹方面會讓整個面試過程過於正式和嚴肅。所以,妳為什麽不問問候選人他是怎麽來的?最近怎麽樣?也可以和考生聊壹個熱門話題,比如什麽體育、音樂、電影、社會熱點等。,而且不板著臉,有說有笑,試圖讓大家放松。另外,通過這些聊天,妳可以知道他/她的人際交往能力和壹些性格。另外,不要把桌子放在妳和應聘者之間,讓環境更隨意。第三,讓候選人說說他的經歷。接下來,如果妳想感覺這個候選人是壹個解決問題的人,是壹個能把事情做好的人,不要問他/她會做什麽,只要問他/她做過什麽就可以了。妳做了什麽?壹個好的程序員很難想象,他沒有相關的實踐,即使妳在大學,妳也應該有所作為。如果妳有解決問題的能力,那麽,顯然,妳今天應該已經解決了很多問題,解決了很多事情。聽申請人談論他的事情。(不要用問答的方式,讓考生多說,而是多聽多思考。)當他談到自己的項目時,壹般來說,妳要註意以下幾點:溝通表達能力。申請人能解釋清楚壹件事嗎?如果這個人聰明,他能用最簡單的語言把壹件復雜的事情解釋清楚。而且,這是壹個優秀程序員最基本的能力。而且妳在描述候選人的經歷時,可以和候選人進行壹些很好的來回對話,這樣可以了解他的溝通能力和溝通風格,從而了解他的性格。角色和職位。可能他參與了壹個很大的項目,但是只做了壹個很簡單的模塊。因此,了解其在項目中的作用和地位是非常必要的。考生在談到“我們”或“大家”之類的詞語時,壹定要詳細、明確下來。做出的貢獻和解決了什麽問題。這壹點非常重要。了解這壹點,妳就能知道面試官是否聰明,是否有解決問題的能力,是否有良好的技術基礎。示範。如果可能的話,妳可以讓應聘者展示壹些他寫的代碼和設計,或者直接給妳看他寫的程序的演示。妳可以學到很多關於設計、代碼風格、可重用性和可維護性的知識。了解這個項目中考生使用的技術的壹些基礎知識,比如通過整個過程,可以問壹些網絡、語言、對象、系統的基礎知識。基礎知識很重要,直接關系到他的能力。流程和工具。了解候選人熟悉的項目流程(銀彈、瀑布、敏捷、...),以及過程中的壹些工件(如需求文檔、設計文檔、測試文件等。),以及開發過程中使用的工具(內存測試、代碼檢查、BUG報告、版本維護、開發和調試...)(關於程序員的基本功,可以參考——《程序員需要》是的,確實可以。但是,別忘了,壹個謊言的背後,還需要更多的謊言,所以妳不用擔心這個問題。只要妳把候選人描述中的問題逐步提煉、細化,就知道候選人是不是在編故事。記住以下幾點:談話的風格要隨意自然,不要拘泥於形式。在知道候選人之前做過什麽的情況下,不要太投入。因為招聘人員也是技術人員,有時候,招聘人員會被應聘者正在做的項目中的技術所吸引。要註意引導考生。相信我,十個程序員中有八個分不清自己以前是幹什麽的。因為他們直接跳過項目的背景和要解決什麽樣的問題,直接進入具體的實施。不要壹問壹答,讓考生多說,從而全方位了解壹個人。知道壹個人的過去,知道他做過什麽,比知道他會做什麽更重要。了解壹個人的性格、思想、思維、行為,比了解他的技術技能更重要。溝通、表達、語言組織、理解等能力關系到妳能否與人共事。基礎知識比點滴知識重要得多。妳可能不知道C++的關鍵詞,但妳應該知道C++的繼承性和多態性。雖然技能很重要,但比技能更重要的是人獲取知識的能力。在計算機這樣快速變化的行業,學習能力是必須的。能不能培養,比掌握的技能更重要。第四,實際參與這壹步可能很難實現。因為,這需要壹些申請者付出壹定的時間。如果是畢業生,沒有問題。先讓他們練習壹段時間。但是別人有工作就不好了。也許妳會說,這就是緩刑的用處。然而,我個人認為妳必須尊重申請人。人們辭掉那裏的工作來這裏工作。三個月試用期,原則上沒問題的話,作為招聘人員就反悔,挺不好的。如果發現這樣的事情,那只能是招聘方自己的問題。在面試過程中,有的招聘人員會讓應聘者壹起玩壹個遊戲,或者舉辦辯論賽,或者組隊現場做壹件簡單的事情。有的甚至要求應聘者請假壹天,在自己的公司和自己的團隊壹起工作,完成壹些事情(甚至給他們設定壹個截止日期),通過這些來考量應聘者的實際參與能力。是的,如果妳們沒有壹起工作過,也沒有發生什麽實際的事情,僅僅通過幾個小時的采訪是很難了解壹個人的。招聘方設置這些面試環節,在最短的時間內了解應聘者的壹切,無可厚非。而且有時候還能收到不錯的效果。在這裏,我只想提壹點。有時候這個周期很長,讓申請人付出很多,反過來又會讓申請人感到厭惡和厭煩。從某種意義上來說,這確實是對申請人的不尊重。對此我壹直持懷疑態度,所以後面打了兩個問號。說實話,我個人的看法是適可而止,因為時間太短,無論做什麽都不能完全理解。如果不能理解完整,那就獲取妳最需要的,也就是本文開頭的三個問題和上面提到的“第三點”(了解申請人的過往經歷)。也許這篇文章裏有壹些妳不認同的觀點。沒問題,歡迎批評。如果妳有更好的辦法,我倒想聽聽。妳不妨在這裏留言,如果不想留言也可以發郵件給我。