像Swing這種已經不太用的技術,大學還在教,到底要不要學?

一直以來,寫平常問題、前沿技術和架構思考類的文章比較多,今天爲何忽然來講說Swing這個陳年老技術呢?html

由於在CSDN上看到了這樣的一篇文章:前端

能夠看到做者對於學Swing仍是挺憤怒的,不過確實Swing如今不多用了。但個人觀點還不是那麼絕對,由於從我的成長來講,Swing的學習確實給到了很多收穫。開始也沒打算專門來寫篇文章說說見解,而後上了一下掘金,竟然就又看到了這篇文章(強大的推薦機制):數據庫

開始看標題格式還覺得是同一篇,仔細看才知道原來是駁前面那篇的,對於後面那篇的很多觀點,我的仍是比較認同的。編程

同時也由於做者的觀點,聯想到常常有讀者跟我聊遇到職業瓶頸的問題,與我給出的建議有不少不謀而合的認識,因此仍是想寫一篇文章來講說。設計模式

首先,我尊重每一個人對技術學習的觀點,這裏不評論到底誰對誰錯,我就結合本身的學習和成長路徑,談談這個問題的見解吧。若是屏幕前的你是正在讀書的學生或是遇到瓶頸的在職者,強烈推薦看完本文!緩存

Swing對個人最大收穫

Swing,這個算是Java領域裏很是古老的一個技術點了,主要用來作客戶端程序的界面。前端框架

記得上大學那會兒,Java課的大做業、暑期實踐和後來研究生時期的實踐項目都有所涉及。還清晰的記得,當時跟宿舍小夥伴,一塊兒作的是模仿當時MSN的掃雷對戰遊戲實現的一個支持聯網的客戶端小遊戲,界面部分就是用Swing來實現的。網絡

在這個時期,我以爲最大的收穫就是在學完了Java以後,經過Swing能夠實現一個看得見的,讓本身頗有成就感的做品了,這樣的學習反饋其實對學習者來講,是很是棒的,也是感覺編程樂趣的重要開始。這個時候實際上是會有一些驕傲的,由於在實現的過程當中,碰到了不少問題,也不斷的嘗試着去解決了不少問題。對於編程的思惟模式是一次很棒的鍛鍊。架構

在驕傲以後,隨着後續課程的跟進,立刻就會迎來一次打臉和進步的課,就是設計模式!這個時候就會發現以前的實現有多糟糕,記得開始最多碰到的問題就是各個Panel之間的操做聯動,因爲開始沒有學過設計模式,不知道觀察者模式等高級設計,一股腦的搞了不少靜態變量,以實現各類聯動,最後致使的就是程序耦合性很是高。併發

再以後,也是用Swing作了不過很多東西,好比:矢量圖的畫板,無服務的聊天室。進一步學到了狀態模式的應用,網絡相關的編程等。

也許有讀者會說,那你不會直接學Spring Boot + Vue來搞不是不少也都能實現麼?我以爲這二者之間就學習上來講最大的衝突並非未來會不會用,而是Swing應用的技術是很是純粹的,只要你學了Java,你就能立刻上手。而對於Spring Boot這樣已經封裝上幾層的框架,加上Vue這樣的前端框架,已經創建在了太多基礎內容之上,可能跟着教程去作,能夠完成一些固定的東西,但要去深刻理解這些技術的本質和更爲重要的編程思惟,幫助就沒那麼大了,並且從編程啓蒙、進階、深刻的認知過程來講,初期我並不太建議把技術棧搞的太雜,反而容易以爲亂,不利於學習和培養興趣。

大學時期咱們學的Swing,雖然最後在工做中並無給到我任何直接的幫助。但在學習的過程當中,對於鍛鍊基礎的編程思惟做用是很是大的,尤爲對於設計模式的應用,做爲來學習Spring MVC也好,Vue也好,不少設計思想上都是共同的。經過一個足夠單純的技術內容,對思惟模式的理解更容易上手,掌握以後再去類比着學習其餘的就會很是快。

大學專業課程對個人最大收穫

其實不光Swing,不少大學裏的專業課程,在咱們將來的職業生涯中每每都不會直接用到。

好比:

  • 咱們學了操做系統原理,就要去作操做系統嗎?
  • 咱們學了計算機網絡,就要去作網絡設備嗎?
  • 咱們學了數據庫系統原理,就要去作數據庫產品嗎?

既然咱們將來都沒有去作這些基礎設施的工做,那咱們還學了幹嗎?乾脆別學了?書扔了算了?大學期間,我雖然順利的完成了這些課程的學習,但之前我也有過這些極端的想法,咱們未來都去作業務應用了,這些東西有個鬼用!

然而,在不斷的實踐和挑戰中,我發現對於框架知識的掌握程度能幫到咱們的範圍很是有限,而真正讓我可以突破上升瓶頸的偏偏是這些當初以爲不那麼重要的課程所帶來的認識。由於這些內容裏所蘊含的設計思想和思惟模式是將來指導我思考問題尋找解決方案的重要源泉!好比:不少就操做系統這一門課來講,其中設計到的各類併發場景解決方案緩存加速設計等重要思想,都能對應到現在咱們常常遇到的高併發、分佈式場景下的各類問題。由於有這些基礎認識的加持(方法論),你在思考難題和設計解決方案的時候,會更有想法,更容易找到好的辦法!

在實際的工做過程當中,對於開發童鞋在解決難題時候的一個特色。一些在大學裏對這些基礎課程掌握紮實的,每每只須要給他們直接講一遍設計思路,基本上立刻就能get到要點,由於他有了這些設計思想的基礎,經過類比的方式去理解就會很是容易。而對於這些經典內容或者基礎知識掌握欠缺的童鞋,每每你就得講的更加細緻一些,給他一步步介紹爲何要這樣,他才能理解這麼作的緣由。

因此,若是你是專業科班的學生,那我強烈建議你這些基礎課程必定要好好上,不要以爲未來用不到,就不用心學,甚至不學!若是你是培訓班出生,同樣強烈建議把我上面說的三個基礎課程好好本身補一下,由於培訓班基本不會教你這些,他們只管教會你一些企業在用的東西,讓你能快速的上手成爲一個CRUD開發者

後記

我認爲在必定程度上,對於基礎知識的掌握決定了你在技術生涯這條路上的上限

「知其然,更要知其因此然」。只有瞭解了本質原理,這樣不論問題如何變,咱們都能靈活的去解決它。就像我對不少想作架構的讀者建議的,架構的本質必定要理解,一些基本原則要爛熟於胸,這些基礎方法論是將來指導你實踐最核心的內功心法。

切勿沉迷你過去的某一個成功經驗來指導你將來的全部工做。架構工做最怕生搬硬套,學了微服務,到哪裏都推微服務,學了中臺,管他多大團隊就幹中臺。最後,不但本身失敗,還給團隊和企業帶來巨大的損失!這樣的例子,這幾年太多了,相信你們也都碰到過,以前我也寫過一些很差的案例。究其緣由,就是設計者對基礎、對本質的理解不到位,一味求表面,趕新潮框架,追熱點架構所致使的。

那麼最後,你以爲大學裏的這些過期的、將來不會用的基礎知識重要嗎?有必要花大力氣學嗎?留言說說你的見解吧!

一直尋思着交一些在校的學生朋友,但苦於長期接觸的都是在職的小夥伴。也許這篇文章學生讀者會多一些,順手建了個在校Java初學者羣,你們對於Java方向的技術學習或者將來職業認知和規劃上有什麼疑問均可以在這裏提,工做快10年的我能夠給你們一些或許有用的建議,少走彎路從加羣(點擊加入沖沖衝)開始吧!

歡迎關注個人公衆號:程序猿DD,分享其餘地方看不到的知識與思考