
概述
本文希望幫助 Mentor 在指導實習生和新員工時,建立一些基本的共識和準則。本文主要討論的是技術類的崗位。
我們?yōu)槭裁匆袑嵙暽蛻獙蒙?/h2>
猿題庫在招實習生上,向來是非常大方的。那么,我們?yōu)槭裁匆ù髢r錢,招那些可能都沒有任何實習經(jīng)驗和工程經(jīng)驗的學生?我們是為了讓他們做一些簡單低級的事情,還是想培養(yǎng)有潛力的學生?相信大家都能明白是后者。
那么,我們?yōu)槭裁聪肱囵B(yǎng)有潛力的學生?因為,找到一個靠譜的同事不容易,我們希望幫助這些有潛力的學生成長,在他們在成長的同時,最終能夠喜歡上這里,最后能夠成為正式員工。所以,為了吸引最優(yōu)秀的實習生,我們開出來非常高的實習工資和有挑戰(zhàn)的工作內(nèi)容。
對待應屆生也是一樣,我們非??粗厮膶W校,成績,數(shù)據(jù)結構和算法知識,興趣,這也是為潛力買單。
但是,我們做的這些,得到的只是有潛力的實習生和應屆生。他們離一個優(yōu)秀的員工還有很大的差距,所以 Mentor 對他們的指導非常重要。如果把他們比做一個好樹苗的話,Mentor 就是幫助他們最終成長成參天大樹的人。相信大家都能明白,培養(yǎng)人其實比招人難得多。
那么,作為 Mentor,我們應該如何指導這些新人呢?
建立友誼
好的老師和學生的關系有些時候更像朋友。大家不但會交流技術,也會一起吃飯聊天,扯淡八卦?;ヂ?lián)網(wǎng)公司推崇平等,朋友式的關系更適合討論技術。
如何建立友誼呢?作為 Mentor,應該在新同事剛剛入職時,帶他熟悉公司環(huán)境和同事,陪他一起吃飯。平常休息的時候,聊聊工作之外的話題。有些時候,大方一點,請他吃吃飯。
良好的私人友誼,對于新人融入團隊是非常重要的,遇到困難時,他會更加主動地向你尋求幫助。等他成長起來后,你們會成為很好的同事。即使以后你和他不在一個項目組,甚至不在一家公司了,但是你們的友誼會使得你們相互尊重并欣賞,誰知道你們以后不會再次合作呢?
努力培養(yǎng)新人
如果說建立友誼算是鋪墊的話,那么努力培養(yǎng)新人才算是正題。
雖然大家都懂道理,但是就我觀察,很多人都沒有意識到培養(yǎng)新人的重要性,當項目太忙,自己精力不夠時,就忽略了這方面的工作。而這方面的工作又沒有實際明確的標準,就很容易做得不好。
所以,我想了一個評判培養(yǎng)新人重要程度的標準:培養(yǎng)新人的重要程度應該高于所有線上的功能開發(fā),僅僅低于線上的緊急 Bug 修復。如果你手頭有重要的開發(fā)工作,同時有重要的新人需要培養(yǎng),那么你應該優(yōu)先把培養(yǎng)新人的事情做了,再做重要的開發(fā)工作。
為什么這么說呢?因為,培養(yǎng)新人是「一次性」的投資,假如一個新人成長起來所需要的指導時間是 20 個小時,那么你盡早的完成這 20 個小時的指導,新人就可以盡早地產(chǎn)出有質(zhì)量的工作。而如果你因為項目緊張而忽略了這件事情,那么新人可能會養(yǎng)成一些不好的編程習慣或做事方式,之后,你可能需要更多的時間來糾正他。
具體來說,努力培養(yǎng)新人要做好的事情包括:
- 定期主動和新人討論他遇到的問題。
- 開始的幾周 Code Review,非常詳細地審核,保證代碼風格達成一致,一些不好的編程習慣得到立即糾正。
- 教會新人一些正確的學習方式,例如 Google,Github,Stackoverflow。
- 推薦一些深入的學習資料給新人。并且發(fā)現(xiàn)他在某方面沒有提高時,持續(xù) PUSH 他看相關的書籍。
定期主動和新人討論他遇到的問題
建議新人在入職的頭一兩周可以使用這個辦法。比如每天晚上 6 點半,在吃飯前用半小時,讓新人把當天學習積累的問題和你討論。
固定時間做固定的事情,一來使得你被他打斷地次數(shù)減少,二來也使得他有機會把任何疑問都提出來。
Code Review
基本上剛入職的新人都會有 Code Style 的問題,剛開始的幾次 Code Review,我們要首先解決 Code Style 問題。如果新人犯錯,可以提供相關的 wiki 或代碼風格資料給他,甚至和他進行代碼風格的一些討論,分享一些故事,讓他對代碼風格產(chǎn)生重視。一個合格的 Mentor 應該讓新人在最多三次 Code Review 之后,就能夠改正掉幾乎所有的代碼風格問題。
如果新人對代碼風格有不同意見,可以組織一些學習討論會,也可以在吃飯的時候叫上幾個資深一些的同事一起分享這方面的經(jīng)驗。切忌不能只是用強力糾正,而沒有讓新人產(chǎn)生真正重視代碼風格的意識。
在 Code Style 保證的同時,我們還需要讓新人了解我們的各種編碼約定,例如接口如何定義,目錄如何安排,注釋的原則,Commit Log 的約定等等。這方面也需要有 wiki 供新人學習。
Code Review 的最難部分,我們需要審核新人的架構和邏輯是否有問題,這方面花費的精力將非常多。對于有問題的架構,和新人的討論也將花費大量時間。但是這就是新人成長的過程,對于他來說是非常重要的經(jīng)歷。
另外,讓新人同時 Review 自己的代碼,是一個非常好的學習方式,新人可以模仿和學習到一些好的架構和代碼風格習慣。
正確的學習方式
部分新人可能對于使用英文查找資料,使用 Google 存在一些障礙。我們應該需要糾正他們不使用百度,不使用中文來進行資料查找,否則對他們知識獲取將會有很大的影響。
我們還應該分享一些自己常常學習和提高的方式,推薦一些博客、論壇和社區(qū)給新人,讓新人學會我們的學習方式。
推薦學習資料
在培養(yǎng)一段時間后,你可能就會發(fā)現(xiàn)新人在某一些方面的知識有所欠缺,但是顯示我們把這些知識系統(tǒng)地講一遍是不太現(xiàn)實的。我們應該推薦一些相關的書籍給他們,鼓勵他們用閑暇的時間來閱讀。時不時問問他們學習的進度,或者讓他們分享一些學習的體會,都是不錯的 PUSH 他們提高的技巧。
授權
當你發(fā)現(xiàn)新人已經(jīng)成長起來后,可以嘗試將自己熟悉的,同時重要的功能交給他來完成,而你自己做一些其它工作(根據(jù)實際情況,可以是更簡單的工作,或者是更難的工作)。
這樣做的好處是:
- 新人可以借此得到更大的鍛煉。
- 你因為對相關功能很熟悉,所以也能有效地進行指導和監(jiān)督,控制代碼質(zhì)量和風險。
將自己熟悉并且重要的工作交給別人,通常是比較難受的,因為一般人都希望保證效率,而自己因為熟悉,所以效率肯定是最高的。但是長遠來看,對于 Mentor 來說,自己也需要成長,將自己擅長的事情交給別人,可以讓自己跳出舒適區(qū),嘗試更難的事情。這么來看,對 Mentor 自己也是非常有利的。
回顧
不管如何用心,剛開始指導新人的時候,總還是會有一些做得不盡人意的地方。Mentor 應該對自己的指導過程有一些總結和回顧,然后總結一些心得,這樣在指導下一個新同事的時候,就會做得更加出色。
總結
在和新人建立良好友誼的基礎上,我們需要努力培養(yǎng)他們,并且把這件事情當作最高優(yōu)先級的事情。具體要做的事情包括:
- 定期主動和新人討論他遇到的問題
- Code Review
- 教會他正確的學習方式
- 推薦學習資料
- 授權給他有挑戰(zhàn)的,并且自己熟悉的工作
- 帶完一個新人后,回顧一下自己的工作,看看有哪些值得改進的地方