把TDD用到招聘中來
題記
測試驅動開發不管是在理論上還是在實際當中都是一個很好的實踐。
從 Jan Jorgensen 的 《招聘流程就這麼亂,那你的技術團隊水平能高嗎?》理解到的,特做此記錄,以提升後續在招聘時的效率以及精準
引言
一個好的 TDD 流程包括
在開始編碼之前定義好驗收標準。
為測試做好準備。
找出邊界情況。
像TDD一樣,處理招聘
定義驗收標準
TDD、BDD 或敏捷的起點都是一樣的:在動手實現之前先把事情想清楚。
- 要招怎樣的人:在招聘資訊中列出期望
與團隊充分溝通,討論,當前缺少怎樣的人,需要怎樣的技能
想想你最喜歡和最不喜歡的同事。他們身上有哪些不足?哪些優點又吸引到了你?– 貌似這個只能感覺
同時,不能夠忽略你不喜歡但是對團隊很重要的同事。
能為團隊帶來作用的人,有哪些特點。
好的測試並不是要最大化測試的通過率,而是要測出程式碼的行為是否符合預期。
為測試做好準備
測試用例,面試資料,問題準備
如果希望候選人能夠馬上上手工作,面試會不會使用真實的開發工具和相關的技能知識。
如果希望學習能力強的候選人,面試學習新技術的能力。
簡歷篩選
直接忽略簡歷中只描述了掌握的工具和學習的知識的候選人,
需要通過候選人的工作經歷,來檢驗是否符合期望面試過程
不需要驗證與候選人不是很相關的事情
找到期望,並驗證它的可行性
在定義好期望輸出(合格候選人應該要具備的特徵)後,需要驗證它的可行性。電話面試
可以深入探討某方面的問題,或者問一些簡單的演算法題,類似於單元測試,有明確的答案現場技術面試
讓他們寫程式碼,不出在實際工作中不會碰到的演算法題,
可以給出最近遇到的問題,或者團隊中無法解決的問題
總之,用真實的問題來測試
邊界情況:其他能力
除了一般性的問題,還需要測試團隊或公司所獨有的問題。
心裡素質,超出預期,學習能力,面對挑戰
如果工作崗位要求候選人具備良好的心理素質,在面試中就要測試他們的心理承受能力。
即使候選人可能不知道如何完美地解決問題,還是能看出他在工作是如何面對挑戰的。
如何測試候選人能夠表現得“超出預期”。對於一個畢業生來說,可以看他的實習經歷和參與過的編外專案。
對於一個工作過一段時間的候選人,可以看她對開源社群的貢獻情況,或者在他的本職工作之外還做過些什麼。
如果希望候選人能夠超出職位的預期,並且能夠快速地自我成長,那麼就可以找那些在過去就曾表現得超出預期的候選人。
培養面試官
與有招聘經驗的老手結成對,然後再讓他們獨自主導面試。
這不僅僅是關於用“正確的方式”做事,這種習慣也會影響到團隊的運作。
新人會從中瞭解團隊的文化和團隊對他們的期望。
讓新人蔘與到面試流程中會把那些倍感被信任的候選人吸引到團隊中來。