劉晨,1996年進入IT業,從程序員干起。1999年,在“群情激憤、血氣方剛”之下開始與朋友一起創業,建立技術團隊,擔任技術負責人,規劃產品線,并獲得兩輪海外融資。現在公司已經小有規模,但身為老技術員的他經歷幾次招聘之后,發現現在的程序員水平堪憂,于是他想告訴大家——程序員如何鋪就職業坦途。
三大原因阻礙進步
一、不扎扎實實地鉆研理論,打好基礎。雖然很多程序員也讀書,但讀的大多是比較熱門的所謂“技術”書,業界炒什么“單詞”,他就讀什么,但理論基礎不牢、功底太淺的缺點卻不去修正。例如,一些程序員和大學生成天讀.NET、J2EE、Ajax之類的書籍,但關于數據庫原理、數據結構與算法等基礎理論,卻一竅不通。甚至有些學生不好好學習學校規定的課程,卻到外面參加培訓機構培訓。
二、敬業精神差,程序漏洞百出。很多程序員工作帶身不帶腦,邊寫代碼邊上網聊天,程序漏洞百出。很少考慮程序問題給用戶造成的損失,給公司帶來的負面影響,很少去研究自己寫的代碼能否進一步優化,總認為代碼只要通過編譯就OK了。
三、過于頻繁地跳槽,沒有長期規劃。剛踏入社會,就成天想著房子和車子,由此抱怨工資太低、待遇太差、老板太小氣、房價太高。由于行業發展迅速,這些程序員就會頻繁跳槽,他們很少結合自己的實際能力和水平衡量自身的“價值”,更缺乏通過一個長期規劃不斷提升自身價值的意識。
三個結合鋪就坦途
把知識學習與企業需求相結合。大多數程序員都是科班出身,但大學教育是普及教育,教給學生的只是知識,而企業對學生的需求是技能。當雙方都不愿意承擔“銜接”的作用時,就需要學生自己想辦法。目前,企業對軟件工程流程越來越重視,所以,適應企業的需要就要學會規范的文檔,然后才是技術。東軟的副總、CTO方發和這樣描述他對IT專業學生的要求:“我們要求學生注重4方面的能力:眼界、學習的方法、技能和規范。要學習如何與別人合作,比如在代碼風格上統一。雖然只是一名程序員,但仍需要站在項目經理的層面上看自己的工作,這樣才能更好地融入到團隊中?!笨梢?,不斷積累能夠和企業順利接軌的素質與能力是迅速發展的基礎。
將技術提升與行業相結合。程序員首先要在技術上做得比較深入,成為技術專家。無論是Java還是.NET,還是數據庫領域,都要成為行家里手。要想出頭,必須提高系統設計能力。2000年以后,軟件業的編程思維和模式、方法發生了翻天覆地的轉變,軟件工程流程的普及,使得對程序員的基礎要求降低了,但對系統設計的要求提高了。然而,系統設計能力是要與行業結合的,也就是說,要從一個行業應用軟件設計的角度來看待程序員的工作,這不僅能夠幫助工作,還為以后的“進階”提供了保障。
把發展方向與自身性格相結合。已經工作兩年以上的程序員有幾種基本的職業規劃:技術專家、軟件架構師、實施顧問或銷售。最主要的發展方向是技術專家,但技術專家再往上就比較困難,架構師總是只有那么幾個。所以,程序員應該根據自己的情況,決定自己做軟件架構師還是高級的顧問銷售,或者走向行政管理。實施顧問和銷售比較偏向市場,除了一定的技術能力外,需要掌握很多IT以外的知識。這些發展方向對于從其他專業轉入IT的人員更為適合。比如煙草行業,一定要了解大的趨勢、煙草行業的產業政策是什么、直接導致需求是什么等,這些信息對于職業發展很重要。IBM的一些顧問都是行業內的資深專家,他們的發展就非常具有代表性。
TIPS程序員應具備的7個核心能力
1.團隊精神和協作能力;2.文檔習慣;3.規范化,標準化的代碼編寫習慣;4.需求理解能力;5.復用性,模塊化思維能力;6.測試習慣;7.學習和總結的能力。