數據結構:哈哈哈,太形象了,老劉,我還記得你當時爲了考高程,用C語言把書上的習題都做了一遍,感覺如何啊?
我:非常酸爽!估計和現在大家刷LeetCode的感覺差不多吧!不過真是受益匪淺啊,雖然工作中設計數據結構的機會極少,但是確實培養了邏輯思維能力,必須得感謝你啊。
ASP :老劉老劉,可別忘了我, 我是帶著你入門做動態網頁的, 你還記得用我做了哪些網站不?
我:當然記得,我那時候抱微軟的大腿啊!用ASP來寫動態的Web界面,用COM組件來實現業務邏輯,這事兒我幹過不少,我花了很多時間學習COM,不信你看看雜物間最下層的書。唉,當時的ASP連MVC都沒有,頁面之間的跳轉鏈接都寫在頁面中,幸虧業務不複雜,要不然這意大利面條式的代碼怎麽讀啊!
ASP:那都是過去時了,微軟推出.NET戰略以後,我們現在都升級爲.NET了,MVC不在話下,可是你怎麽狠心抛棄了我們,跑著向Java大獻殷勤去了?
我:這個….
Java :這有什麽奇怪的,向我獻殷勤的又不止老劉一個,開放的Java是大勢所趨,封閉的.NET是比不上的。我那時候多火啊,Applet, JSP, Servlet , Tomcat, Struts,老劉一直悶著頭學,對了還有人氣爆棚的EJB, 老劉你說說,你花了多少時間在EJB上?
我:唉,每個晚上的時間都用來學習了,Session Bean , Entity Bean , JBoss, WebLogic…… 《精通EJB》,現在回頭看,真是浪費時間啊,這些東西也就Servlet和Tomcat還活著,其他的幾乎沒人用了!
Java:話不能這麽說,你處于那個時代,就得學習那個時代的東西,你不學,連工作都找不到。
Ruby :是啊是啊,我火爆那幾年,你不是也抱著兩本書狂啃嗎?《Programming Ruby》,《Agile Web Development with Rails》, 你還用RoR開發過小項目呢,現在怎麽不搭理我了?
我:這就冤枉我了,Ruby的語法我可是非常喜歡啊,我現在電腦裏還安裝著Ruby呢!
Ruby: 騙誰呢?!你不光安裝著Ruby ,還安裝著Java, Python,Rust, 還有ErLang這種沒人用的語言,我看你昨天還用Python寫了個小程序,幫你老婆處理Excel , 你怎麽不用我來寫呢?
我:這個……
Java : 還是我Java生態更加豐富,老劉你學了Struts,Hibernate以後,是不是看了一本叫做《J2EE Development without EJB》,開始轉向Spring? 還研究過Spring早期的源碼?
我:沒錯沒錯,我記得很清楚,大熱天的,沒有空調,我滿頭大汗,一行行地調試Spring源碼,在筆記本上畫圖記錄,真是行行皆辛苦啊 !Spring 發展了這麽多年,一直挺立在時代潮頭,對Spring的投資沒有白費,很值!
模式:讓開讓開,什麽COM, EJB, Ruby , JBoss, 你們太容易過時了 ! 信模式者得永生 !老劉你說說你花了多少時間在模式上?
我:嗯,還真不少,四人幫的《設計模式》讀了一遍,感覺迷迷糊糊,只記住了面向接口編程而不是面向實現編程, 發現變化並且封裝變化。還看了一本《Java與模式》,只記住了擊鼓傳花的責任鏈。真正對設計模式有深刻認識,還是閱讀了Jive的論壇源碼(裏邊簡直是設計模式大寶庫)之後,開始理解模式的妙處,然後正好在一個類似的項目中使用,這才有所體會。
模式:《企業應用架構模式》,《Head First設計模式》,《重構與模式》你難道忘了嗎?
我:怎麽可能忘記?還有《敏捷軟件開發:原則,模式與實踐》這都是我當年的最愛啊,不過時間長了我就發現,這些都是面向對象的設計,本質上對程序員的要求是“抽象的能力”, 這是軟件開發的內功啊,掌握了它才能無招勝有招啊。現在很多人都去追求高並發、大流量的系統設計和開發,但實際上,大部分時間還是在做面向業務的開發,OOD和抽象能力是非常重要的。
模式:沒錯,高並發、大流量的系統有時候還有章可循,但是把業務需求做出良好的抽象,就太考驗人了。
分布式系統:這麽說就是太瞧不起我們分布式系統了,老劉雖然主要做企業應用開發,但是花在我們身上的時間一點也不少啊,什麽負載均衡,數據複制,BASE,CAP,數據分片…… 哪一項都很厲害啊!
我:同意,這些都是內功啊!
操作系統:不不不,老劉,你不能這麽說,軟件開發的內功是我們這些計算機基礎知識啊,我,計算機網絡,數據庫,編譯原理,組成原理,上大學的時候你沒好好學,畢業了才去惡補,你想想你在我們身上投入了多少時間?
我:哈哈,我的老底都被你拆穿了,沒錯,萬丈高樓平地起,你們幾位是基石啊。畢業後看了不少書,像《深入理解計算機系統》,《現代操作系統》,《操作系統:設計與實現》,《計算機網絡》,《數據庫系統實現》,《編譯原理》,說實話,如果不和實踐結合,幹巴巴的理論學起來挺無趣的,所以我要寫碼農翻身公衆號,用有趣的故事講解計算機基礎知識。
操作系統:不過現在娛樂化嚴重,碎片化嚴重,真正想沉下心來看大部頭,學習基礎的人少了。
我:是啊,除非他切實感受到了基礎知識的重要性。我現在很後悔那些浪費的大學時光, 如果再讓我回到大學時代,我一定通過實踐去學習,自己去折騰個小的OS,簡單的數據庫,簡單的語言,Web服務器, 虛擬機。 我要在自己的操作系統上,運行自己的虛擬機,跑著自己的語言……
想到這裏,我不由地笑醒了……
回想一下自己十多年花大精力學習過的技術,很多都已經隨著時代的發展煙消雲散了,剩下的都是長久不變的東西,主要包括:
-
C語言
-
Linux
-
OOD和抽象
-
網絡和Web編程基礎
-
分布式的基礎知識
-
計算機基礎知識