前言
“怎么学习”这个问题,从上幼儿园开始就在接触,到现在工作,也是一直在学习,子也曾经曰:学而时习之。
我对学习的看法就两个,第一个是态度,第二个是方法。换言之,就是世界观和方法论。世界观这个东西很大,很虚,一言以蔽之,就是不论做哪一行,尤其是程序员,要保持住终身学习的态度。其次方法论,用对方法确实事半功倍。
昨天公司部门的技术大佬分享一个学习方法的帖子,我觉得有几分道理,但是由于是图片的形式,而且压缩很严重,所以我根据图中的内容,整理了一下相内容,我个人在基础上稍加改动。
为什么
把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入。
学什么
以数据结构和算法为例,大家阅读一下。Java的BitSet的源码,里面有大量的移位操作,移位运算掌握的好,看这份源码就没问题。Java同步工具类AQS用到了双向链表,链表知识不过关,肯定搞不懂它的原理。互联网大厂都喜欢考算法,为了通过面试也要精通算法。
以Java工程师应该掌握的知识为例,按重要程度排出六个梯度: 第一梯度:计算机组成原理、数据结构和算法、网络通信原理操作系统原理; 第二梯度:Java基础、JVM内存模型和GC算法、JVM性能调优、JDK工具、设计模式; 第三梯度:Spring系列、Mybatis、Dubbo等主流框架的运用和原理; 第四梯度:MySQL(含SQL编程)、RabbitMQ/RocketMQ/Kafka、ZooKeeper、Redis等数据库或者中 间件的运用和原理; 第五梯度:CAP理论、BASE理论、Paxos和Raft算法等其他分布式理论; 第六梯度:容器化、大数据、AI、区块链等等前沿技术理论; 有同学认为第五梯度应该移到第一梯度。其实很多小公司的日活犹如古天乐一样平平无奇,离大型分布式架构还远得很。学习框架和中间件的时候,顺手掌握分布式理论,效果更好。
怎么学
用起来
准备PPT和演讲内容,给同事来一场技术分享。不光复习知识,还锻炼口才。曾经有个同事说话又快又急,口头禅也多,比如“对吧、是不是”,别人经常听不清,但是他本人不以为然。领导让他做了几次技术分享,听众的反应可想而知,他才彻底认清缺点。 坚持写技术博客,别在意你写的东西在网上已经重复千百遍。当自己动手的时候,才会意识到眼高手低。让文章读起来流畅清晰,需要呕心沥血的删改。写作是对大脑的长期考验,想不到肯定写不出,想不清楚肯定写不清楚。
后记
老话说的话,穷学it富学金融,技术是个吃饭的工具,你可以一辈子的喜欢这个工具,但是不能靠这个工具生存一辈子。
路漫漫其修远兮,我是马拉松程序员,可不止于代码。