【IT觀察】程序員培養(yǎng)新人的方法論
原創(chuàng)【51CTO.com原創(chuàng)稿件】有讀者向我抱怨所在公司是“技術(shù)保密”型的,每個有經(jīng)驗的程序員都生怕新人學(xué)到了自己的技術(shù)后取代自己,所以他感覺自己成長很慢。其實在團(tuán)隊里培養(yǎng)新人,既能讓新人分擔(dān)簡單、重復(fù)、繁瑣的初級工作(比如“個人中心”模塊,難度不高,對耐心要求高),又能加深自己對不常見的問題的解決辦法,是有利無害的做法。培養(yǎng)新人不能靠填鴨式的說教,而是要講究一定的方法和步驟,就是所謂的“方法論”。
制定學(xué)習(xí)計劃
剛?cè)胄械腎T新人大多是在校學(xué)生、應(yīng)屆畢業(yè)生或半路出家的傳統(tǒng)行業(yè)改行人,想成為一個合格的IT工程師必須經(jīng)過一個循序漸進(jìn)的成長過程,我們可以依照我們?nèi)胄袝r候的學(xué)習(xí)順序幫助他們制定一個學(xué)習(xí)路線圖(這些方案是有例可援的,51CTO出品了最全I(xiàn)T知識體系圖)。同時IT行業(yè)是一個瞬息萬變的行業(yè),曾經(jīng)如日中天的Flash和J2ME兩個技術(shù)領(lǐng)域早已成為了昨日黃花,我們也有責(zé)任幫助新人少走彎路。
小剛是大四上學(xué)期的時候成為我的實習(xí)生的,盡管毫無實踐經(jīng)驗,但好在他是科班出身、基礎(chǔ)扎實并且聰明記性好,更難得可貴的是他對Android有濃厚的興趣和鉆研精神。我先把我的幾本Android書籍借給他看,然后又依照51CTO出品的Android知識體系圖(去年的Android知識體系圖內(nèi)容較目前版本略少,缺少Kotlin等內(nèi)容)給他制定了一個學(xué)習(xí)計劃。我還給他指出了Android學(xué)習(xí)中的幾個大坑,比如eclipse已經(jīng)過時了、Google Map不適合在國內(nèi)使用等,避免他在書上的某些不合時宜的章節(jié)浪費時間。
手把手做示范
新人入門之后,肯定急于表現(xiàn)自己,畢竟***次拿錘子的人看什么都像釘子。他們眼高手低的樣子像極了當(dāng)年的自己,我們除了讓他們自己寫幾個demo練手外,還可以把項目中簡單且不重要的部分交給他們,然后逐漸提高難度和復(fù)雜度。重要項目是不能交給剛?cè)腴T的新人的,上一個沒學(xué)會走先被派去跑的人叫馬謖。把簡單、重復(fù)但手生就容易出錯的工作交給新人去做,有助于新人夯實基礎(chǔ),同時自己也能騰出時間研究一些進(jìn)階技術(shù),是一個一舉兩得之舉。
小剛看了幾天書,我又讓把SVN的地址給他,讓他熟悉熟悉代碼。我盡量交給他一些簡單的工作,比如看著UI圖畫布局、新建Activity或Fragment以及在AndroidMainfest里聲明permission和activity,畢竟我也是從分不清layout_gravity和gravity的區(qū)別鬧出過笑話、訪問不了網(wǎng)絡(luò)急得滿頭大汗到頭來發(fā)現(xiàn)忘記聲明權(quán)限的時候走過來的。做項目***天他就向我提出了一個問題:我綁定控件的方法怎么和書上的不一樣?我就向他介紹了用ButterKnife替代findViewById的好處。
及時溝通交流和review
新人就像種子,播種下去后不施肥除草就等于讓他們自生自滅,所以及時與新人進(jìn)行溝通和交流是很有必要的。溝通和交流可不僅僅是回答他們的問題,解決他們的困難;還要幫助他們溫故知新,還要傳授他們一些零散的知識點,還要review他們的代碼——畢竟誰都不是一開始就能寫出高性能、高可讀性、高可維護(hù)性的代碼的。
小剛每天上班時和我一起做項目,遇到問題及時向我請教,我總是在解決了他的疑惑后傳授他幾個解決問題的小竅門。下班后我倆經(jīng)常學(xué)習(xí)一些新的知識,有時候幫他review他的代碼,這時候能發(fā)現(xiàn)他的好多問題,比如“***Activity”呀、莫名其妙的文字跑馬燈控件呀、還有用Timer寫的倒計時之類的,我就給他講解了MVP架構(gòu)、“android:ellipsize="marquee"”和Android倒計時類CountDownTimer等知識。
放手讓他獨當(dāng)一面
車總是要上路的,新人有了項目經(jīng)驗后,就完全有能力獨立完成任務(wù)了,這時候要放手讓他獨立負(fù)責(zé)一個項目的整個生命周期。在實戰(zhàn)中不但可以檢驗學(xué)習(xí)成果,還可以讓他看到自己有哪方面的欠缺。
小剛在我的指導(dǎo)下,進(jìn)步的速度就像雨后春筍,每天都看得見成長。很快我就放手讓他獨立完成一個完整的項目(當(dāng)時微信小程序尚未問世,再簡單的業(yè)務(wù)想要從移動互聯(lián)網(wǎng)領(lǐng)域分一杯羹都要做一個App,現(xiàn)在應(yīng)該再也不會有那么簡單的應(yīng)用了),他拿到項目的需求、素材、接口文檔等資料后,就展開了工作,因為有了前面幾個項目的經(jīng)驗,這個項目獨立完成起來也十分順利。
代碼之外
IT行業(yè)更新?lián)Q代速度如梭似箭,做一名僅會寫一種語言的程序員是一條死胡同,程序員真正的競爭力在代碼之外。首先我們要用我們自身遇到的瓶頸向已經(jīng)完成入門的新人灌輸職場危機的觀念,然后才能提升他們在代碼以外的能力,比如解決疑難問題的決心、無私分享的開源精神、硅谷名企的企業(yè)文化等。
小剛的技術(shù)水平很快就從毫無經(jīng)驗的實習(xí)生水平成長為半年經(jīng)驗的初級工程師水平了,我在對他的進(jìn)步表示肯定和鼓勵的同時也沒忘了向他傳授一些代碼以外的東西。首先我告訴他不要拘泥于Android乃至移動互聯(lián)網(wǎng)這個領(lǐng)域,要放眼整個IT行業(yè),于是把他拉入了51CTO開發(fā)者交流群③群參與每天的IT話題討論;然后我推薦他給51CTO MDSA頻道投稿,向廣大同行分享自己的工作經(jīng)歷、職場感悟和技術(shù)干貨不但可以踐行程序員必須具備的開源精神,而且還可以獲取不菲的稿費收入。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】