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