去年就想抽時間寫這篇博客了,記得當時的初衷是:看了博客園中的幾篇關於求職招聘方面的博文,也結合自身的工作感受,想談下從我的角度對程序員面試HR應該考量和看重的地方;這兩天正好有點兒時間,就把這篇博客給結束。
無論是剛畢業,還是已經有幾年工作經驗的程序員,可能在面試時都不可避免的會被問到一些"純技術"卻沒有什么技術含量的問題,比較常見的像:請寫出多個表級聯查詢的SQL語句?如何實現XML文件的讀寫?如何用Ajax返回Json格式數據?...,這種類似的問題有很多,之所以說這些問題沒有什么技術含量,是因為這些問題在網上都可以很快搜索到答案,更關鍵的是它們都只能算是實現某些功能的工具,就像上面提到的幾個問題,它們的答案都比較固定,像一個模版,只要你會了,基本上都是一成不變的解決套路。當然,在這里,我不否認作為一個有經驗或有能力的程序員,這些應該是爛熟於胸的基本技能;如果你這些都很熟練,就能僅憑這衡量你的能力嗎?!就好像是一個修車的,扳手等工具都用的很嫻熟,但卻解決不了一個汽車的故障,所以,也回到我本文要談的重點:有一成不變的技術,沒有一成不變的思想!
從上面的論述來說,程序員面試HR你該看重什么?——不是跟上面提到的類似的tool skill(工具技能),而是學習、分析解決問題、快速適應環境和創新(打破常規)能力。這樣簡單一說,可能並不會讓你感到信服,接下來,我會逐一說明!
1.分析解決問題的能力,這是做程序員應該具備的基本能力。那這種能力有什么衡量之處呢?!在我們的周圍會遇到一些程序員,因為自身經驗缺乏及"惰性"因素的影響,遇到問題,都會習慣性的在第一時間或略作思考后就找他人幫忙解決;而有些人則會靜下來去思考,更重要的是:他具有分析問題的能力,他能夠順藤摸瓜比較快的鎖定問題源,定位的出現問題的原因。比如:對於一個ajax請求響應失敗或錯誤的問題,前一種類型的程序員會感覺我的代碼應該沒問題,現在出了問題,只能找高人來幫忙了;后一種類型的程序員可能會先檢查代碼,再在可能會出現問題的代碼處加上像alert類型的調試代碼,以確定問題的原因!
2.快速適應環境的能力(其中可能包括:團隊合作、溝通能力),如果此能力比較弱,他會需要更長的時間去跟同事磨合,可能會傾向於'單打獨斗'的做項目,將會影響團隊項目開發的進度和質量!
3.學習能力,這種能力在各種行業中都是非常重要,你當前所具有的能力都是有限的,通過學習才能得到提升;正是由於這種能力的個人差異,可能剛從學校畢業時能力不分上下的兩個人,在工作一段時間后,能力會相差很大,待遇等方面更是不可同日而語。作為一個學習能力比較強的程序員,他(她)能夠比較快的熟悉公司或其它開源的架構,對於新技術更是可以在幾天內就有個比較全面的了解和掌握。
4.創新(打破常規)能力,這種能力可以讓你更優秀,也更容易在很多人當中脫穎而出。對於第三方等開源的框架或工具,普通的程序員可能只會去熟悉怎么使用,而有創新能力的程序員會盡可能的了解其內部實現,在實際使用中發現了不方便或其中有可以改進優化的地方,會努力的去完善它,讓其能更好的滿足當前的使用!
以上,只是比較粗略的對這四種能力做了個"蜻蜓點水"的說明,用一句話概括本文的總體意思:面試程序員,HR請不要只關心他(她)的基本tool skill(工具技能)是否熟練,更應該關心和看重的是上面提到的四種能力——它決定了他(她)以后可以提升的潛力,也是為公司能真正帶來價值的Good employee,簡稱:最有價值的員工(MVE)!