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