一直以來,寫日常問題、前沿技術和架構思考類的文章比較多,今天為什么突然來說說Swing這個陳年老技術呢?
因為在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,分享其他地方看不到的知識與思考
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286915.html
標籤:其他
上一篇:【坎坷求職路】:選擇大于努力!一名六次反復經歷失敗的應屆生,最后一刻躋身阿里如愿以償
下一篇:如何系統的學習單片機?
