開發團隊尋找優秀程序員的六個測試技巧
過去我參加過許多場編程測試。我喜歡參加這些活動,因為總是能夠看到不同的程序員在設計時會遇到哪些挑戰。但不幸的是,這些測試都不是非常棒。下文將列出某些有助于提高程序員測試質量的建議:
Programming passion(from techcareertips.com)
1.保持關聯性
許多測試存在的問題是,內容與該職業并不相關。編程測試背后的想法是確保就職者擁有勝任職位的能力。所以,不應該詢問你認為“優秀程序員”應該具備的主觀問題。并不是說你不應該測試基礎知識,因為程序員確實需要了解這些。重點在于,你不能只單純為了某些概念來進行測試。
C++中的“friends”便是***的例證。幾乎每個我參加過的編程測試都會詢問此類問題。到現在位置,我的編程經驗已經有5年之多,但是我只用過它們兩次。***次是在大學的時候,第二次就是在參加編程測試的時候。我詢問過其他一些高級程序員,他們也都沒有用過。為什么要詢問與他們所要開展的工作無關的問題呢?我知道肯定有些人使用過,但是如果你團隊中的多數程序員都從未碰過,那么為什么新程序員需要掌握這些內容呢?如果新程序員確實會使用這些內容的話,有可能帶來的好處是在解決相同的問題時提出不同的解決方案。
當然,理想狀況是能夠雇傭到知道所有編程相關內容的程序員。但是現實情況并非如此。因而,重點在于確保他們所掌握的知識與你所需要的相符。詢問不相關的問題不會幫助你找到合適的程序員,只會幫你找到那些深知如何通過編程測試的人。
2.不要詢問愚蠢的問題
為何要浪費時間去詢問寫在紙上的代碼編譯錯誤這些問題呢?現在,編譯器挑出錯誤的速度要比人工快得多。測試程序員能夠找到這些簡單的錯誤就像是讓一位英語教授去尋找拼寫錯誤而不是矯正句子結構。應該讓程序員去找出代碼中的邏輯錯誤。讓他們根據代碼邏輯來尋找問題。
而且,不要向程序員提某些帶有花招的問題。花招式的問題需要大量的時間才能找得出來,而當你已經見過這個問題時,你會很迅速地找出來。簡單地說,花招式的問題測試的是程序員以前是否被提過這個問題,而不是這個程序員有多棒。
3.在詢問優化問題時應當謹慎
編譯器和平臺的變化非常迅速,尤其是在數年時間內便會出現全新硬件的游戲行業。出于這些原因,你必須在讓程序員優化代碼時異常謹慎。即便是數年前堪稱精湛的優化技術現在可能也已經落伍了。
比如,某些現代CPU(游戲邦注:尤其是主機上的CPU)在執行branches時非常緩慢。使用緩存的查找表格來作常規優化可能不一定是最快的優化方式。更為重要的是,詢問優化的普遍概念。
如果他們能夠解釋出某些***的做法,那么這就是你要尋找的人。
如果你的工作并沒有明確與優化相關,那么我會提出某些具體的問題。在游戲中,代碼優化非常重要,所以這樣做是很有必要的。但還是要提醒的是,詢問某些更高層次的概念問題,而不是給出具體的代碼然后讓他們去編寫出最快的代碼。最棒的求職者可能會說,在未知具體硬件和簡況的情況下,他們會選擇編寫相對簡潔的代碼而不是他們所認為的優化代碼。
4.根據團隊的編程來編寫測試
如果你對需要在測試中提出的問題舉棋不定,那么最實用的方法是冷靜下來,查看或與團隊成員交談他們正在執行的任務。詢問團隊,他們將多數時間花在哪里。隨后,你可以根據耗費時間最多的任務來編寫測試。
這也能夠保持測試的相關性,防止你提出不必要的優化問題。我發現80%的工作時間都在做相似的任務,所以掌握可用于這些任務技能的求職者正是你所需要的雇員。很顯然,如果你正在尋找的是特別職位的人選,這種方法可能并不奏效,但是當你尋找的是普通程序員,這樣做確實能夠提供好處。
5.保持測試的簡單化
我發現,許多測試中的問題都過于復雜。你完全能夠明白他們要詢問的問題,但是他們卻使用了大量復雜的例子來提出這個問題,而不是簡單地直接提出問題。為何不直接向參加測試的人直接提出問題,而要讓他們花數分鐘的時間去探索問題呢?
應該復雜的不是問題,而是答案。盡管你要的不只是教科書上的答案,但***在面試前提供健全復雜的答案。
6.使用面試來判斷思考過程
編程測試能夠清除出那些根本無法編程的程序員,但是無法體現出程序員在解決問題時的思考過程。嘗試通過書面測試來實現這個目標不太實際,應將這個過程留到面試中。
我喜歡詢問簡單的問題,程序員必須在白板上解決編程問題。這種做法的主要目的在于發現程序員在解決問題中的思考過程。作為程序員,你知道解決問題的正確方法,你會很快判斷出該程序員是否明白他們要解決什么問題。而且,你也有可能因為他人提出你從未想到過的有趣解決方案而感到驚奇。無論出于何種情況,他們編寫的代碼都不重要,重要的是他們解決問題的方式。讓他們在解決問題時大聲說出他們的想法。你需要考慮的是,這些想法是否會令問題加劇,該程序員是否是團隊所需的合適人選。
結論
這些是編寫優秀編程測試的簡單技巧。我希望能夠看到更多能夠找到優秀程序員的測試,而不是嘗試去尋找某種特殊程序員。
原文鏈接:http://gamerboom.com/archives/35862
【編輯推薦】