為什么碼農(nóng)不應該在面試中同意進行編程測試
當今的軟件工程訪談經(jīng)常涉及某種編碼測試或編程練習,我認為這是一件很糟糕的事情。下面我說一下為什么。
懶惰的人
可以很容易地事先記住要求軟件工程師執(zhí)行特定任務,例如編寫算法以生成階乘(非常常見的一種)或?qū)單]鏈表進行排序,并且除了候選人的能力外,不提供任何對候選人技能的見解。死記硬背。您也可以詢問字符" A"的ASCII碼。
許多此類練習的詳細解決方案可在各種參考資料中在線獲得,在許多情況下,在包含針對所有常見采訪編碼問題的算法和特定程序語言實現(xiàn)的書中。
在一家公司工作時,我正在與一位同事討論他們與一家大型對沖基金合作進行的詳細面試過程。他們要求他掌握的所有技術知識均已從廣泛可用的面試題和答案書中認真記住,當前員工已將其作為所有面試題的來源。幸運的是,他是一名熟練的工程師,但同意接受這一坦率單調(diào)且平常的鍛煉以確保姿勢。他不應該這樣做-不僅浪費了他寶貴的時間,而且也沒有在確定他的能力方面給招聘公司任何東西。一年后,他離開了,無論如何,他們對技術水平低下感到厭倦。雇用和持續(xù)無效的項目管理實踐的標準…
記憶的使用
用特定的編程語言對算法進行編碼也具有相同的理由。沒有某種語法檢查輔助工具(例如編輯器的內(nèi)置代碼完成功能),沒有參考一些技術文檔或沒有復制預先實現(xiàn)的解決方案,在現(xiàn)實世界中工作的軟件工程師不會編寫一段代碼。適用時。重新發(fā)明輪子沒有意義。
我敢打賭,運行當今世界上許多系統(tǒng)的代碼起源于Stack Overflow。
實際上,使用特定編程語言的語法來自使用和熟悉。面試官可能認為測試候選人的特定語言的語法細微程度是他們理解程度的衡量標準,例如,我可以斷言,盡管我使用C語言已有30年了,但我仍會定期語法錯誤。
實際上,隨著我的軟件工程事業(yè)的發(fā)展以及我對自己感興趣的語言的熟悉,我經(jīng)常對C和C ++或Objective-C等語法上的細微差別感到困惑。這并不是因為我是一位糟糕的軟件工程師(盡管有些人可能會不同意……),而是因為只有太多的知識可以讓您牢牢記住,并且可以隨時回想起。
優(yōu)秀的軟件工程師常常不知道特定問題的答案,但一定會知道在哪里可以找到答案。也許考慮問一個最佳地點以找到諸如面試問題之類的信息?
常見任務
我在前面簡要談到的一件事是不重新發(fā)明輪子。例如,如果您使用C語言工作,并且需要一個串行端口例程,那么除非情況特別需要,否則您不必從頭開始重寫它。也許您需要一個JSON解析器,這是一個非常普遍的要求-除非您是在資源有限的嵌入式板上,對地靜止軌道上的衛(wèi)星上或在Malbolg中進行編碼,否則也許只應該從庫中提取預先編寫的代碼即可。它可能已經(jīng)使用了很長時間,已經(jīng)過全面測試,并且具有詳細(正確)的文檔。固體。
在現(xiàn)代軟件工程中,不太可能遇到一項常見任務,即該任務尚未在預先編寫的庫中實現(xiàn)自動化,或者其實現(xiàn)無法以算法形式廣泛使用。
如果您像我一樣,并且在游戲中主要是由于對主題的熱愛,那么您可能會積極尋找那些您正在實施以前實現(xiàn)的角色的角色。尋找陌生的,新的世界,新的生活,新的文明……
實際上,在不遠的將來,軟件工程師的概念已被代碼考古學家比作了不止一次,他們主要重用現(xiàn)有代碼,而花費較少的時間來設計和編碼新的和新穎的算法。
討論討論討論
我完全贊成找出正在面試的人是否"知道他們的東西",但是我認為使用上述任何方法都是毫無價值的。照原樣說。
例如,關于現(xiàn)代軟件工程中使用的編碼范例的簡單討論,是特定語言是否是特定實現(xiàn)的理想選擇,還是特定軟件工程方法論(我在看著您,敏捷)與之相關的是更多有意義且令人發(fā)指的話題。
引導討論突出一般領域,看看候選人對新問題有什么見識,也許還有其他新穎的方法可以解決老問題。他們?nèi)绾慰创挛锏陌l(fā)展,如何開始解決問題。保持開放狀態(tài),遠離細節(jié)和細節(jié)。
關鍵是討論。確定價值不僅僅只是在復選框上打勾,而且不斷讓我感到驚訝的是,許多被認為是"崛起"和"領域領導者"的公司仍然落伍于過時,單調(diào)且完全可預測的雇用方式,在衡量方面幾乎沒有價值實際技術敏銳度。
人們常說,受訪者應與公司面試一樣多地采訪公司。我完全支持這個。
接受具有一系列確切技術問題的人員的采訪幾乎總是一個危險信號,尤其是當他們不想延長任何一點的討論時。它通常表明,面試官可能無法完全理解他們的要求,并且任何與他們的腳本所寫內(nèi)容不完全匹配的答案都將被歸類為錯誤。
底線
一些公司已經(jīng)改變?yōu)楦玫姆椒ǎ渌緞t遠遠沒有達到目標。在這里,我敦促軟件工程師同仁不要與那些遵循過時的招聘慣例并堅持編程測試和練習的公司合作,尤其是長時間的測試和練習!
我聽說過一些公司要求在候選人的時間上完成項目的故事,通常需要幾天的時間。
其他人則針對特定語言進行通用的"能力測試",有多種選擇,其中在有限的分配時間內(nèi)出現(xiàn)一團大腦迷霧就等于游戲結(jié)束了!
如果您是游戲新手,那么也許您無法拒絕采訪,我完全理解這一點,但是一定要把它看作是一種學習經(jīng)驗。進行動作,獲得經(jīng)驗,盡可能多地學習,如果工作確實令人失望,那就繼續(xù)前進。隨著您的前進,您的信心會隨著您的知識和經(jīng)驗而增長。畢竟,公司從您那里受益,所以您也必須從公司中同樣受益。
如果你像我一樣是年紀較大的人,那么請雇用公司-跟我說話。我到過各地,看到過的事情和做過的事情,所有的資格都在墻上和簡歷上,我很討厭被一些通用的招聘渠道吸引,并反復測試我的能力。
如果您認為自己是一個體面的雇主,并且不明白為什么看似優(yōu)秀的候選人會繼續(xù)退出,那么您應該對自己的雇用作法有個很長的了解。
原文鏈接:
https://medium.com/swlh/why-you-should-never-consent-to-a-coding-test-in-an-interview-8e22f5078c7f