張磊
天津中德職業技術學院
基于J2EE企業級開發方向的軟件行業現狀與現代軟件教學中的對比研究
張磊
天津中德職業技術學院
由于筆者過去在軟件公司做開發以及項目經理,并且一直是用Java這門語言做開發,加上現在轉行做了計算機方面的教師,通過在企業中的實際開發經驗與現在的教學經驗進行對比,發現了兩者之間有很多可以互相借鑒,互相彌補的方面。
首先,現在的軟件公司分為兩大類,一類是開發國內項目的軟件公司,一類是外包企業。外包企業大部分都是外企,工資待遇較高,對入門級程序員來說入門門檻較低,因為他們有完整的軟件工程模式。對這些職場新人而言好處是門檻低,工資高。壞處就是其實學不著什么東西,因為完全對著文檔寫永遠不會有自己的想法,想提升技術很難很難。而國內這些企業入門門檻較高,待遇也不高。但是很鍛煉人,為什么呢?就是因為這些國內企業的老總希望招一個什么都會的人,既會前臺美工,也會后臺編程,更會干DBA的那套活,會的越多人力成本越低,所以企業非常希望要一個人當三個人用的能人。
Java基礎知識——J2EE企業級架構開發——架構設計
以上3個階段我認為是一個0基礎的人到技術牛人的技術發展歷程。現代軟件開發的趨勢一般都是用B/S結構進行開發,C/S結構的相對較少。
這階段應該是在學校學習的,即需要老師把學生帶進編程的大門,需要讓學生產生編程的樂趣,讓他們喜歡編程,至少不厭煩它。這是至關重要的一個起步階段,我們國家學軟件的學生多如牛毛,而真正能學出來能干開發的人與學軟件的人相比那可是鳳毛麟角,為什么?我認為是在學校中的很多編程基礎把學生們的興趣扼殺在了搖籃里,很多教材中所出的題基本上都是在企業開發中絕對禁止的。歸根結底是因為考試需要出題考學生,看學生掌握的知識是否牢固是否清楚,會出各種讓人混淆的概念來考學生的知識掌握程度。而在企業軟件開發中,編程最基本的要求就是簡單易懂,用最簡單的代碼完成任務即可。
這階段需要學的技術有很多,首先,前臺:JSP,JQUERY,CSS, HTML,EL,AJAX,JS。后臺:Struts2,Spring,Hibernate,Ibatis架構級開發模式,面向接口編程,WebService。數據庫:SQL,HQL,視圖,觸發器,存儲過程,如何提高數據查詢性能,MYSQL,Oralce。系統部署:linux系統命令行,SSH Secure Shell,Tomcat,集群負載均衡,自動化部署。這階段是現在國內大部分軟件開發人員都在的階段,在這個階段的人有很多而且時間也是最長的,也是有很多開發人員在這個階段停滯不前。而這些技術也是阻擋剛畢業的學生進入這個行業的高山,其實也是阻擋很多開發人員繼續前進的高山。就是因為這些技術有很多,每個技術深入研究都是很難的,如果僅僅是在應用檔次那這些技術還是可觸及的。一般在這個階段6年左右,有想法的開發人員是可以往上面的架構師發展的。所以這個階段可以說是黃金階段,企業領導喜歡這個階段的人因為可以干活,而且有希望發展成更高的技術人才,帶領團隊開發。
到此階段的開發人員已經到達了大牛級別,靈活運用各種開發架構,了解各種先進的技術核心,可自己設計出適合本項目的架構。國內軟件公司這種階段的人屈指可數,如果有,基本已經到達技術經理級別。他可以帶領團隊開發項目,為項目初期策劃開發架構,輔導前兩階段開發人員開發項目,解決前兩階段開發人員無法解決的問題。想到此階段需要后天的努力以及一些天分。當你在第二階段開發時意識到為什么這樣寫是高效的,為什么我們需要這樣編程,這些架構師怎么寫出來的,我是不是也能寫出來的時候,你就可以說有向架構設計這個階段發展的意識了。否則一輩子只能是熟練的程序員。這個階段的待遇則是你有多大膽工資就有多大產,敢要領導就敢給。
我認為現代高校的學生在經過系統集中的訓練后到達第二階段完全沒有問題,但為什么結果卻大相徑庭,往往我們的學生不行呢。其實也包括大多數的本科生,也是無法畢業后就能去企業工作的。我在企業也面試過不少剛剛從學校畢業的本科生以及專科生,基本上都差不多。好一點的僅僅是基礎熟一點,差的就不提了。而且我接觸過很多剛剛從計算機專業畢業的學生跟我非常真誠的說過,畢了業之后只要不是干跟計算機相關的工作干什么都行。我聽完這句話之后心情很復雜,我能理解他們但又感慨我們的學校教育在3,4年的光景里教出的學生是多么的悲哀。
我們在企業中帶新人的時候是這樣的,包括我剛在企業干時也是如此。我們在招聘剛從學校畢業的學生時,對他們的水平是非常清楚的,計算機這個行業一個人技術的高低實在太透明了,做一個東西,立判高下。所以在招聘時招的是有一定基礎技能的即第一階段還可以的,能知道第二階段部分知識的,最重要的是能有快速自學的能力,比較聰明機靈,這是至關重要的,說白了就是著眼于未來。如果看當下除了有工作經驗的,剛畢業的學生一個也進不了企業做開發。按照這個標準招進來學生之后,一般企業都有1到3個月試用期,其實這個試用期是至關重要的,可以說真正的考驗是這個試用期。因為畢竟短短的十幾分鐘的面試能知道這個人的現在的技術水平但是很難看出這個孩子的未來發展是否有前景,所以在試用期中我會給他們一些開發任務,是在他們能力范圍之內的。在企業中沒有學校這樣的老師手把手教你怎么做,永遠伴隨你的老師就是谷歌和百度。當你精通了一門語言后,你會發現語言其實就是那么回事,最重要的是那種編程的思想。
哪種思想呢?其實就是“偷懶”的思想。任何語言上都是如此,我在上課時也在向學生們灌輸這種思想,即Write once,Run anywhere。寫代碼就寫一遍,寫好后把這個功能封裝起來,等到下次再用時直接拿來就用。久而久之,你會有自己的一套代碼庫,包羅萬象,沒準什么時候你就能用上。最后干編程的人最寶貴的財富就是他的代碼庫,那是他多年經驗的結晶。這樣才能有跳槽的資本,人可以隨便跳槽,到哪都比別人開發的既快又好。這才是所有軟件公司夢寐以求的人才。其實面向對象語言從根本上就是這么構成的,它的類庫,語言庫就是這么來的,這才是語言的精髓。