天天看點

java技術大牛修煉記1-大牛真實曆程

打個比方吧,這位牛人23歲畢業,做了兩年嵌入式C程式設計,25歲時,突然對Java的優雅設計情有獨鐘,而正好這時,公司有個Java項目,Java技術之旅開始了。 

1、最開始三個月,開始接觸Java,比如接口、繼承、封裝等,買了本《Think in Java》天天啃,并且同時做項目實踐。猛學了三個月後,對面向對象程式設計OOP熟悉了,原來腳本式思維和對象思維确實有差别。 

2、三個月後,開始啃《Core Java》,《Effective Java》,對Java有了更深入的了解,回調的概念也有了,逐漸接觸到更高的層次,面向對象設計OOD,這時又看了一本書《Head First Design Patterns》,感覺設計模式特别有趣。再寫代碼,已經不是面向實作程式設計,而是面向設計程式設計。感覺寫Java代碼太簡單了。 因為每天還有Java的Web項目開發,逐漸了解了WebWork等Web架構的使用。 

3、六個月過去了,Java瘾越來越大,逐漸開始往更高層次攀登,這時,又看到兩本書《企業應用架構模式》、《UML和模式應用:面向對象分析與設計導論》,已經開始從設計往面向對象分析OOA、架構攀登了。 因為大半年的Java企業開發,hibernate已經比較熟悉了,了解Hibernate背後的持久化技術、spring背後的IoC容器、組裝技術原理。 

4、一年後,他逐漸脫離了Java語言,開始看這類書《面向模式的軟體體系結構 卷1》。這個階段持續了一年,并且對以前的學過的設計模式,如指令模式、觀察家模式有一個更深入的了解。 因為兩年的企業應用開發,他已經熟悉了Java EE的十來種規範,對Web容器和Servlet規範的關系有很深的了解,對JDBC規範和資料庫驅動程式的關系也很了解。 

他正在經曆Java開發的快速上升期,對應于曲線的一年時間點。 

5、兩年後,他突然發現,他學的很多東西都沒用,都是紙上談兵,比如,在自己的企業應用開發中,Command模式、Template從來沒有用過。 他還發現,本來100行寫的一個功能,花了1000行,就是為了所謂的設計優雅性:可擴充。而實際上,還沒有等到擴充,該系統就已經廢掉了。 他發現原來設計模式主要用在系統架構開發,而不是應用開發,一般開發人員不用,隻需要了解。 他還發現,他認真學過的JMS、JCA、JTA、EJB像是從來沒有用過。突然他想通了,JMS、JTA可能是一種無奈的選擇:處理遺留系統。 

當他開始對自己兩年學到的知識進行檢討、批駁時,他已經有了技術辨識能力,知道技術推廣也不是那麼純潔,也有商業炒作。 知道Java雖然是Sun公司發明的,但Sun公司沒有賺到錢,IBM卻賺得盆滿缽滿,最後Sun公司竟然賣給了技術商人Ellison所創立的Oracle了,Java之父James Gosling也混得并不好,從Sun公司到Oracle,最後還不歡離開了。 

這時候,他已經不限于Java了,開始了解C#,Ruby,發現Java可能并不太适合網際網路開發,PHP可能更适合,ROR開發更快但需要在牛人的手裡。兩年後的這個時候,他才開始真正駕馭Java,他已經不再限于Java,而是企業應用。 

這個時候,技術提升的速度越來越慢了(曲線的三年分界點),因為不知道還可以學習什麼新技術。因為他發現,原來這些東西,最深層次的,都是幾十年前的技術概念:消息系統、異步通訊、事件機制等等.... 

6、三年過去後,他已經不再限于企業應用,而是解決方案,技術隻是一種解決問題的方式,比如企業資訊化成功的關鍵,恐怕不是技術,而是企業本身的業務流程成熟度;企業資訊化成功的關鍵,不是處理好了技術,而是處理好了幾位企業高官的利益。 這時候,對IT行業新聞,逐漸有判斷力和免疫力。 

他突然發現,技術的力量很有限,商業才是最大的驅動力量。而此時,他已經不再鑽研技術細節,比如JVM的垃圾回收機制,如果他在一個技術研發型公司,比如普元,可能還會深入挖掘技術。如果他在東軟這類行業應用開發企業,這類企業的口号是Beyond Technology,這時候他再執迷于技術而輕業務,恐怕不太受歡迎。 

這個時候,技術的提升,就會進入一個平台期,也就是曲線的水準部分。再平穩發展,技術大牛就開始煉成了。