站长论系统化学习
备注:本文修订于2022年5月4日。
前言
系统化学习是人生的主路线,无论是学习Web,还是做大数据开发,还是搞机器学习和人工智能,离开系统化学习将会事倍功半。
系统化学习推而广之是系统化思维,除了应用于学习和工作,在创业、在决策等生活实践中依然起到很大的作用。
第一节:仅仅解决工作中的问题,这种成长不叫成长
在我看来,仅仅解决工作中的问题,这种成长不叫成长,只有系统化的学习知识,由量变到质变,才是真正的成长。
在工作中,很多情况下,我们碰到的问题都是工程类型的问题,例如:软件版本兼容问题,类库引用问题,配置参数问题。这种工程类的问题占据了我们大量的时间,虽然此类问题看似紧急,但是并不重要,对知识的积累往往不会产生多大的价值,试问哪个面试官会考察软件的安装,调试,升级呢?
很多人工作了三年、五年,过得很充实,一直待在原地不敢换工作,因为他心里清楚,自身的知识体系其实还是很不完善、很欠缺的;也有很多人工作了五年、十年,也是加班,也很努力,但是职业之路是越走越窄,因为工作就是工作,学习就是学习,这是两码事。老板追求的商业利润的最大化,不是花钱来让你进修提升自我技术的。
解决工作中的问题,可以促进成长,但是不能本末倒置,真正的成长只能依靠系统化的学习。
系统化学习简单的来说,就是看书并多看书。看书和多看书,这就是一个事务,缺一不可。
第二节:应急式的学习,学的越多越焦虑,需要系统化深入的学习
上节提到了:仅仅解决工作中的问题,这种成长不叫成长,只有系统化的学习知识,才是真正的成长。人们开始转头搞系统化学习了,但是很多学习都是应急式。
工作中需要学习大量的新东西以完成任务,这些学习都是应急性质的,学完即用。其实,这种应急的学习方式,往往属于自顶向下的,学的越多,反而越零碎,内心越焦虑。
软件开发分为:自顶向下和自底向上,学习亦是类似。自顶而下来看,要学的东西太多了:Java基础,虚拟机JVM,微服务,数据库,缓存,算法,数据结构…,这么多的东西都需要学习,能不焦虑吗?这时候需要换一下思维方式:切入一点,深入进去,自底向上,以点带面。
以我的学习经验来说,例如以SQL的学习切入,向上可以延伸到MyBatis内容,向下可以挖掘到数据结构知识(索引,二分法,红黑树,B树,B+树),向右可以延伸到Spring内容(Spring的核心在于IOC,而其事务部分源自于数据库的事务),向左可以延伸到多线程与并发内容(表锁,行锁,事务的隔离,悲观锁,乐观锁,索引的建立和优化)。如此以来,将多个领域的知识用一根主线串联,犹如多个科目汇总成一个科目,那需要学习的东西还很多吗?
很多人没有用动态和发展的眼光看问题,他只看到了简单,不屑于去学习,没有深入进去,没有以点带面,不能领略到以小见大的情景。
说到本节,系统化学习已经包括了两点:(1)看书并多看书。看书和多看书,这就是一个事务,缺一不可。
(2)用动态和发展的眼光看问题,不要只看到了简单,而不屑于去学习,要深入进去,做到以点带面,领略以小见大。
第三节:看源码,只是断章取义,本末倒置,不是系统化学习之道
阅读源码,本身没有问题,但是你要明白,自己到底走到那步了,框架都没有搞清楚怎么用,就开始读源码,这违背系统化学习的道理。系统化学习倡导的学习过程是:
第一步:好好的阅读框架的使用文档
第二步:结合文档,系统化、全面化的把框架的用法操练一边
第三步:有时间,有余力,有兴趣的话,再看看其源码的底层实现
某些机构把读源码当做噱头,那是处于商业目的来的,但是并不代表,读源码就是最正确的学习方法,甚至还是一种误导。
田忌赛马的道理,大家应该都知道吧,所以:一定要注意做事的顺序。请记住,做事情的顺序非常重要,不要随意的颠倒次序。
小结
我觉得,那把这三节的内容看懂,运用到学习和工作中,系统化学习就算是掌握了。
世界不是均匀分布的,从人生哲理的角度来看,有众人常说的二八定理,从客观科学角度来说,有被称为高斯最大贡献的正态分布。把这三节内容掌握了,那么系统化学习的大部分内涵就能学到家了。
我是MyBatis中文官网站长,我对以上内容负责。
学习了
学习了
SQL确实是好的切入点
感觉自己并不孤独啊,我正在走的路好多人早就走过了,现在要做的就是尽量少走点弯路
点赞
感谢站长,这篇文章的每句话都说到心坎上了。
看了站长写的话,基本都是实话,没有花里胡哨的,很有用,谢谢
为什么没有点赞的功能呢,我要点赞!!
非常赞同站长的观点,系统化的学习才是真学习,要从收益最大化的角度安排学习的主次。
受益匪浅