像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,分享其余地方看不到的知识与思考