關於研發崗位怎樣做新人培訓
引子
面對茫茫多的代碼,開始進行逆向分析;
問老員工,老員工也是一堆一知半解的;
需要耗費大量的時間,才能稍微捋順當前的開發內容;
各種「術語」,聽不懂他們在說什麼,隔了一個公司好像隔了一個世界;
devops造就了茫茫多的系統,而且很多都是低頻的東西,用了過段時間就會忘記;
你是否也有碰到這些問題呢?希望本文能拋磚引玉,歡迎探討。
背景
在萬事都講究「理論指導實踐」的今天,筆者發現自己經歷的以及通過別人了解到的公司,居然沒有聽說一家公司有專門針對研發人員展開科學的新人培訓的,深感奇怪。
現在的各行各業都有標準化的流程,比如殺豬盤也有專門的 《話術本》,而對於大多數軟件公司的崗位,做的工作其實也是標準流水化作業,與以前的勞工也沒有什麼本質區別。那麼,既然存在「流水線」,那麼,是不是應該都有一個標準的生產說明書呢?
一、新員工生命周期
當新員工進入公司的時候,面臨的是新鮮,恐懼,迷茫。
- hr帶你辦理入職手續;
- 然後讓部門人員領走;
- 將你放到一個角落裡,好的情況下,幫你裝各種環境,差的則讓你自己裝(裝環境也很多坑);
- 然後領着你去認識一下別人;
- 給你一堆文檔,讓你自己看;
- 或者直接打開項目讓你自己」逆向分析「;
- 嘗試完成一次功能開發的生命周期,各種系統,各種權限,讓人目不暇接;
- 公司組織新員工培訓,講一些規章制度,講一些公司文化;
- 回到工位,可能有一個」師傅「帶你,但是他也忙得不可開交;他教的很好,但是不成體系,只有個人意志,你想知道更多,他就無能為力了;
。。。 - 三個月了,怎麼報銷發票?一問都不知道
- 支付模塊出問題了,以前沒做過呀,都被魔改一年了,怎麼入手呢?
。。。 - 離職,怎麼提離職申請呢?
二、問題所在
新人: 指剛進入公司的人,業界大牛進入新公司,也是新人,應屆生也是新人;
額外工作: 指除了開發意外的工作,比如考勤、請假,外部部門溝通等等;
一般的企業培訓,都是公司層面的,統一安排新人進行企業文化、制度等相關培訓。但是放入項目組後,基本上就「自生自滅」了。
新人需要什麼呢?我們通過「5w2h」方法來分析一下開發人員需要什麼:
- WHAT——我這個崗位需要做什麼?我需要跟誰去對接什麼事情?我怎麼開始我的工作?
- WHY——這個地方為什麼要這麼做?我怎麼看不懂?有沒有更好的思路來縷清我的工作?
- WHO——who can help me?找誰呀?
- WHEN——項目周期怎麼安排的?什麼時候做完?
- WHERE——我怎麼下手呢?一團亂麻!
- HOW ——怎麼做?如何提高效率?如何實施?方法是什麼?
- HOW MUCH——我是不是要加班才能做完呢?要怎麼估算時間?怎麼安排加班呢?
上面可能看起來有些多,說白了:
新人對當前的狀況一籌莫展;
新人需要一個「師傅」,手把手的指導他怎麼進入開發狀態;可是,「師傅」也是帶着業務的,經常很忙;
新人無法描述自己的狀況,甚至於不知道怎麼去問;很多時候,「師傅」也不清楚問題的原因;
研發人員的勞動屬於腦力勞動,表現形式區別於以前的一切體力勞動:
比如理髮師,在a店與b店剪頭髮的技術沒有任何區別,並且形式(手工操作)也是一致的;
比如搬磚,民工用的工具鉗,怎麼背,只要行為一致,產出也是一致的;
比如種地,「莊稼活兒,不用學,人家咋做咱咋做」;
但程序員的工作,a廠與b廠的「技術」差別就很大,這種差別來源於軟件架構者針對於某種業務場景的抽象描述的不一致;
並且,代碼在研發者手裡,主要是個人思路的表達,面對同一個功能,兩個程序員做出來的東西也是不一樣的;
研發人員面對業務場景,表達出來的代碼「千奇百怪」:
比如各種《傳奇遊戲》公司,他們雖然底層軟件大多數都是從別的項目進行拷貝,但是上層業務邏輯會面向c端,進行各種各樣的開發;
我們看到網絡上的各種web網站,前端代碼能夠復用的數量也微乎其微(當然,比如框架層的東西除外,比如vue,react這些);
那怎樣才能讓研發人員快速找到狀態呢?
三、怎麼解決
翻遍中文互聯網,各個專業的論文網站,針對新員工培訓的方式都是企業層面的;
而在業務組內部的培訓,幾乎很少提及,並沒有站在「新人」(其實也是我們個人)的角度來闡述怎麼進行新人培訓。
首先明確,新人需要什麼:
- 我想快速的進入開發過程;
- 我想知道底層的實現原理,方便我面對不同的場景時候,可以快速適用;
- 專註於工作本身,盡量隔離額外的工作;
- 我想證明自己,可以勝任我的工作;
- 我很棒!!!
一般公司採用的都是「學徒制」,老人帶新人,效果感覺一般。因為老人的水平參差不齊,老人的身上都帶着工作量,無法分出太多時間進行指導。
個人認為,解決這些問題的癥結,在於文檔與mvp(最小可執行項目Minimum Viable Product,區別於產品的mvp,切記!!!)——雖然這非常難,不過也不是不能做。
對大多數人來說,他們看到的只有自己周邊的一些事物。老員工也有很多看不到的地方,不懂的地方。
這裡,受限於個人水平,只想到了對於研發一線崗位應該怎麼做:
- 整理軟件說明書,包括wiki,工作流(git 或者其他),工具,開發原則,各種規範,整個軟件生命周期的各個主要節點;
- 對於常用 「額外工作」,出產文檔,方便快速解決;
- 創建當前軟件的mvp項目,並且擁有一個簡潔的上層業務功能模塊模板;
- 讓新人在當前mvp上進行簡單模塊開發,熟悉怎麼開發模塊;
- 每個主要模塊,都要有一個設計文檔,按照一個模板進行編寫,多使用UML以及其他圖例;
- 嘗試做一些與外部部門結合的功能,大致了解溝通流程;
- 整個新人周期都要補充以前的文檔;
- 摸魚期間多多專研項目mvp,理解底層邏輯;
文檔原則:
- 能用圖解釋的,盡量用圖;
- 能用抽象語言解釋的,盡量用抽象語言,如設計模式;
- 語言盡量通用,公司用語與行業用語統一;
MVP原則:
- 最少依賴別的模塊;
- 最少有上層業務模塊;
- 最少依賴外界;
企業文化對於一線員工來說無關痛癢,一線員工感受的企業文化其實只是小組leader的個人情感,其次是同事之間的氛圍。
參考資料:
- 《高質量學徒制:G20願景與中國行動研究》
- 《軟件外包公司新入職員工培訓研究》工程碩士生: 韓 琳
- 《中小企業新員工入職培訓問題研究 — 從深圳市X企業為例》宋艷
- 《一份有價值的學徒制度調研報告》 臧志軍
- 5w2h
6.《MVP是什麼》 //www.zhihu.com/question/47489768
圖片從百度搜索的,侵權刪。