Categories
程式開發

什麼樣的軟件面試算合理的?


從產品戰略到招聘流程的指導原則,分享我們的理念和實踐

在Qualified,我們幫助客戶評估和僱用軟件工程師,為他們提供從僱用開發人員到產品戰略所需的工具和流程。作為軟件公司的我們自己,同樣面臨與客戶相同的挑戰,我們也需要雇用優秀的軟件工程師!

我們必須直接面對客戶的挑戰,這會導致不斷的自省-我們正在開發的產品的確是評估軟件工程師的最佳方法嗎?我們是否提倡遵循自己的招聘方式?用什麼來指導我們作為雇主的招聘行為?

儘管每家公司都是獨一無二的,但我們認為將自己的想法、信念和理念用在聘用軟件工程師上很重要,因為這份文件積累了我們的經驗,這些是指導我們的行為和共同標準。

哲學

人才招聘和主管之間的過分緊張情況已得到充分證明,克服這種緊張情況是指導我們開發和僱用實踐理念的核心。最好的指導思想如下:

要確定優秀的開發人才,需要對開發人員的工作和生活有深刻的了解,這樣公司與開發人員之間的會相互尊重。我們開發的產品希望將用作招聘開發候選者,因為這些工具展示我們的最佳工作情況。

我們的招聘信念和行為方式

絕對不要當場開發

當您看到開發人員認為問題出在眼前時,請不要用批判的眼神盯著開發人員,因為這確實令人毛骨悚然。

白板或結對編程訪問會要求開發人員編寫代碼,而其他人則實時查看,這是一個壞習慣。如果您正在與候選人共同合作以了解他們的工作風格,或者要求引導他們閱讀他們已經編寫的代碼,那麼結對編程方式可能會非常有用。但是把它們當場並要求他們按需編寫代碼嗎?不要做

您要做的只會增加候選人的焦慮感,並限制他們進一步展示自己能做什麼的潛在能力。

什麼樣的軟件面試算合理的? 1

工作經驗是工作績效的最佳預測指標

從心理學的角度來看,相關的工作樣本已被證明是在職績效的最佳預測指標之一。忘了只針對算法技能進行探索的通用編碼測試,而選擇一種針對其在招聘渠道階段和所要擔任的角色進行了真正優化的評估。評估應設計為測試實際的在職任務,一旦被雇用,將要求開發人員使用技術棧和框架。

公平的招聘過程基於證據和優點

您的工程團隊可能已經將應聘者推薦給了您的公司,或者您可能會根據他們在Facebook或Uber的經驗而聘請開發人員。不要陷入這些陷阱,就我們的經驗而言,最好的開發人員通常不是擁有出色簡歷和大公司經驗的開發人員。

良好的評估和良好的招聘流程可以僅根據人才和應用技能來評判工程師,消除所有其他形式的偏見。這就是為什麼我們在評估平台中內置了“盲評”之類的功能,從代碼提交中刪除了任何識別信息,反過來又迫使您的團隊僅根據所展示的技能和所提交工作樣本的質量來進行基於證據的招聘。

讓開發人員在舒適的開發環境中工作

您不會要求畢加索用剛剛從垃圾箱取出來的破舊的Crayola紙袋來交付下一個傑作吧,為什麼您要讓開發人員在對他們來說陌生的編碼環境中完成編碼測試?

採訪軟件開發人員的整個過程應集中於一個單一的目標,即使開發人員具有在現實世界中有效地為您的代碼庫做出貢獻的技能。您想給他們一切機會展示他們最好的作品,首先要讓他們在適合他們的開發環境中執行。

我們致力於為開發人員提供高度靈活且可配置的IDE,並積極致力於使開發人員能夠使用自己的開發環境來完成合格評估。

將評估過程限制為30分鐘或3個小時

不要要求求職者在求職面試中花8個小時來編寫軟件,這真是一團糟,要尊重求職者的時間。

通常,在招聘渠道進行的預篩選評估限制為30分鐘。將這些評估的最長時間設置為45-60分鐘是有道理的,這樣考生就不會覺得挑戰像是定時炸彈,而是設計預篩選評估,以便平均可以在30分鐘內完成評估。

較詳細和涉及的後期編碼項目應以大約3個小時為上限。這些只是粗略的基準,我們認為這些基準表示尊重求職者的時間,同時仍然為您的公司提供了大量評估工作人員技能的工作樣本。

最好的是,通過限制候選人花在編碼練習上的時間,您可以看到每個開發人員在分配的時間可以取得多大的進步,並可以使用交互式會話公開討論他們的位置以及他們可能做什麼接下來,如果他們繼續該項目。

聘請高級工程師時進行周密的預篩選工作

當高級開發人員被要求完成預篩選編碼評估時,他們通常會很警惕:“我是一位經驗豐富的高級工程師,為什麼您要我在這個簡單的編碼任務上浪費我的時間?”

這種觀點是完全合理的,但我們也很感激桌子那邊的員工。聘請高級工程師時,我們親身經歷了以下問題:

  1. 高級工程職位得到初級工程師的大量應用。
  2. 許多看起來很出色的開發人員甚至無法為基本任務編寫優雅的代碼。
  3. 查看存在的老代碼示例(通常在僱用高級工程師時被建議作為解決方案)非常耗時,,並且很難驗證候選人是否確實編寫了代碼。

因此,我們提倡與高級工程師一起使用預篩選評估,但“高級”並不意味著評估應該是真正深入,困難或冗長的編碼評估。取而代之的是,使用簡短的預篩選程序來簡單地驗證申請人是否可以執行基本的編碼任務-這是招聘程序中有用的第一步,是真正的高級工程師可以在幾分鐘之內完成的工作。這對雙方都公平。

最後,不要失去你的業務目標的視線,如果你僱用一個關鍵任務發展中的作用,並有申請人的數量較少,你總是可以跳過預過濾篩選,以增加申請流程和評估推遲技術能力,直到後來在招聘渠道中。

對中高級軟件人才,使用基於項目的編碼挑戰來進行評估

雖然在屏幕前溝通是一個有用的工具,一旦編碼能力的基本水平證明你應該集中在招聘過程的其餘部分的評估,你會期望高層開發人員擁有的技能超出編碼能力,他能提供真正的幫助解決辦法。

創建一個基於項目的編碼評估,該評估可以直接反映開發人員被雇用時預期將完成的工作內容,並確保提供一些開放性,使求職者能夠展示自己的優勢。這可能需要開發人員pull現有代碼庫,收集需求,與您的團隊溝通他們想要push的請求,或者在合併到生產之前已經提交的代碼的詳細說明。這些實踐活動將您的評估過程擴展到了代碼之外,從而揭示了候選人實際想要工作的方式。

完善的代碼審查流程可以帶來3倍的價值

在基於項目的代碼評估時,請不要僅僅依靠自動評分,您的開發人員始終會審核代碼,而正確的審核過程只需幾分鐘(而不是一個小時或更長時間)。使用自動評分來處理審閱過程中最耗時的部分,使審閱者可以只關注真正值得他們注意的部分代碼。

自動計分可以幫助您回答“應聘者可以完成工作嗎?”的問題,但是簡短的代碼審查才能真正洞察應聘者是否可以提供優質的工作價值。另外,不要錯過與候選人討論過去工作的機會,以討論不同的方法、技術以及諸如在添加新需求如何擴展的解決方案事情。

一旦提交代碼以合併到生產環境中,您的工程團隊就有可能執行代碼審查工作。為什麼在招聘過程中提交的工作樣本做不同的事情?您還可以觀看簡短的代碼回放剪輯,或與候選人進行配對編程會議以討論他們的代碼提交。無論您選擇哪種方式,此過程每次審核應花費5到15分鐘,而不是花一個小時或更長時間觀看某人的過程直播,然後再寫反饋。

這樣的三管齊下的評審方法是使高級人才浮出水面的關鍵,而孤立地進行自動評分是無法實現的。

應聘者應該知道他們在招聘過程中的狀態

如果您要求工程師花費大量時間應聘公司的職位,那麼他們應該得到有關他們在招聘過程中所處位置的及時反饋。沒有什麼比被“漠視”更糟糕的了!

毫無疑問,您如何對待申請人直接反映了公司的文化。在招聘過程中過五關斬六將的候選人表明您正在高效地進行工作,您讓不會繼續下一輪面試候選人及時了解他們的狀況,這表示尊重和考慮他們的時間。這樣做不僅是正確的事,而且將候選人留下很好的口碑,避免對公司有不好的認識。

我們在建立我們想要的世界

這些準則聽起來很簡單,但是實際使用中可以幫助您的公司打開新的擴張招聘渠道,在開發人員中建立信譽,並在整個招聘過程中留下深刻的印象。簡而言之,我們正在建立開發人員招聘經驗的未來,我們希望以軟件工程師的身份參與其中。

原文鏈接:

the qualified manifesto on hiring software developers