當一個java程式設計師到底有多難

技術小能手發表於2018-10-09

當你下定決心要當一名程式設計師,特別是java程式設計師,你可能並不知道你將要面對的是什麼。也許僅僅是因為興趣,或許是歪打正著的入了這一行,又或者以為這個一個高收入的行業(毫無疑問,你悲催了)。

那,一個標準的java程式設計師到底要了解什麼?擅長什麼?精通什麼?

首當其衝,你需要學習java語言(廢話),於是你開始買個各種書籍,例如,Thinking in JavaCore Javajava 資料結構設計模式(java版);上各種培訓班,各種網站以及論壇。當然,你會發現你根本不知道書裡所說的什麼物件導向程式設計,工廠模式這些狗屁不通的東西,你也不知道論壇上各種大神在爭論不休的HashMap的實現方法,SSH的框架原理。但,沒關係。無論如何你已經入行了,讓我們看看,接下來你需要做什麼……

半年之後,你終於對java有一些基本瞭解了,也寫了一些自己的類,或者介面,雖然,它們只實現的了一個功能:Hello World. 你也瞭解了javac命令,classpath的載入規則,於是你不甘於只是在後臺寫寫Hello World這樣的程式碼,你希望能全方位的使自己的才華得到體現,於是你的噩夢開始了……

你聽人說,現在流行的是B/S三層架構,無論是大神還是無名小卒,都在張開雙臂,擁抱B/S三層架構,那,就它了,於是你開始瞭解三層架構,當你在度娘上搜尋這個詞彙的時候,你發現了SSH這個詞出現的頻率很高,於是,你要以SSH作為突破口,開始研究三層架構,不出意外的話,3個月後,你就分別學習了Struts,SrpingHibernate

你又發現了Struts是負責前端的展現,進而你又發現了JSP,JSF,Servlet,Spring MVC這些東西都是類似的功能,於是你又分別學習上述的幾個名詞,在分別使用了上述的前端以後,你發現,它們雖然設計理念很好,有的還是MVC的設計理念,但它們有一個共同的特點,醜。所以,為了讓你的前端介面能漂亮一點,你又開始瞭解前端UI,於是你又開始了JQuery,Ext,Dojo的學習,你把它們和你的Struts或者Spring MVC整合起來,你長吁一口,終於看起來像那麼回事了,為了儘快實現功能,你迫不亟待的要開始研究資料持久化了……

Hibernate是你的切入點,隨即你又發現了它的替代品,包括iBatisJPA,它們功能重合而又各有優缺,有官方的,有民間的,但它們的作用對你來講只有一個就是GRUD(增刪改查),你對它們的瞭解也就到此為止了……

於是,你又繼續往下一層走,你發現了你還需要掌握資料庫知識,因為它們才是真正的資料載體,於是,你開始學習,Oracle,Sql Server,My Sql甚至是DB2,你還學會了SQL的基本語法,可以自己寫查詢指令碼,甚至是儲存過程;你發現它們和你當年學的的Access是何等的相似,但體積卻打了無數倍,因為增加了太多你這輩子都不會用到的功能,當你慶幸自己終於是關係型資料庫一知半解的時候,突然發現自己處在了資料庫革命前夜,隨著facebook,twitter這個社交網站的風靡,越來越多的程式設計師開始使用NO-SQLNEW-SQL,它們像海嘯一樣撲面而來,你還是由於是否要加入它們的時候,發現自己早已經被它們包圍,於是,你不得不再一次的學習,Redis,MongoDB,Cassandra,Neo4j ……這些雖然都是非關係型資料庫,但卻是完全不同的設計理念和操作方法,這也就意味著,你要分別學習它們,What`s the f@#k.但,終於,在歷經了另外3個月的磨難後,你終於瞭解它們了……

現在,你終於進入了SSH框架最核心的那個S了,Spring。多麼喜人的名字,充滿了生機。你瞭解到當年它的出現就是為了推翻EJB專政,所以,為了更好的瞭解它的對手,你一邊學習Spring,一邊學習EJB,你發現了它們是多麼的類似,如今的Spring越來越臃腫,而當年的EJB如今卻煥發著青春,於是,你迷茫了,在你學完了Spring的核心框架Spring-Core,安全框架Spring-Security,Web框架Spring-MVCWebFlow,快速開發框架Spring-Roo。

當你終於從前端到資料庫走了一遍,開始寫程式碼的時候,Spring告訴你,你一定要面向介面程式設計,這樣我就可以更好的使用我的依賴注入了,於是你有意識的按照規範約定來寫程式碼,定義配置檔案,宣告和使用註解。當然,這還不後,你還需要管理好你的程式碼,於是你又開始學習版本管理工具,VSS,CVS,以及SVN,最後讓你發現SVN是最適合你的工具,你把自己的程式碼和文件轉入SVN之後,你突然發現,當下最流行的是GitHub,你又一次落在了潮流之後;隨後,為了更高效的管理和編譯你的程式碼,你開始學習Ant,這個Apache基金會的開源專案,當你發現它給你帶來的益處並決定好好研究一番的時候,Apache已經開始全力推Maven了,甚至還建立了專門的jar的資料庫,來方便他的使用者維護自己的jar檔案,在巨大的誘惑之下,你轉入了Maven陣營,在學完了Maven之後,你繼續發掘其他的自動化工具,於是你找到了JUnit,它大大簡化了你的測試流程,在你寫好了合理的測試用例之後,而且Maven在編譯打包你的應用的時候,甚至可以自動找你的測試類,並自動測試,簡直就是火力全開,你跟高興……

終於,在Maven的幫助下,你打好了自己第一個應用的war包,現在將它部署到應用伺服器上的時候了,這時候,選擇題又來了,到底是選用哪個應用伺服器,有著選擇綜合症的你,果斷的把WebLogic,Tomcat,GlassFish,WebSphere……都學習了一遍,當你發現Tomcat這個小巧玲瓏的容器更適合你的時候,你終於開始了自己的釋出流程,在輸入了http://localhost:8080/yourapp之後,你終於看到了自己的應用…… 沒有出來,因為,報錯了,跟隨著Tomcat的日誌,你發現了問題所在,是JNDI的配置問題,你通過查資料,學會了JNDI的配置,糾正了錯誤。這件事讓你也意識到了日誌是個有用的東西,於是你開始學習Log4j,並把自己的應用中都加入了日誌。

當你看著自己的應用終於釋出成功,你意識到,你可以接活了……

隨後你就發現,你的客戶遠比你的電腦要複雜的多

它們要求,與其他系統整合,於是你開始學習Web Service;

它們要求,系統的冗餘性,於是你開始學習Tomcat叢集和Apache負載均衡;

它們要求,呼叫本地應用,於是你開始學習JNI和JNA;

它們要求,文件列印,於是你開始學習iText和POI;

它們要求,Linux做伺服器,於是你研究Linux下的配置和部署;

它們要求,任務派發,於是你學習工作流;

……

於是,你才發現,當一個程式設計師不難,難的是一個有勇氣面對客戶需求的程式設計師。


原文釋出時間為:2018-10-8

本文來自雲棲社群合作伙伴“Java程式設計師聯盟”,瞭解相關資訊可以關注“Java程式設計師聯盟”。


相關文章