码农:编程指数10年没涨啊,我被严重低估了!码交所:我编制了新的学习方法,你们满意吗?

文| GentlemanTsao

前言:

对于刚接触编程的同学,通常有两个疑问:
有没有捷径可走?
答案是:没有。
有没有学习方法可参考?
答案是:很多。

有人不禁要问,既然没有捷径,那学习方法的作用又体现在哪里呢?我认为,学习方法本质上是一种思维模式(理念)和行为模式(习惯)。好的学习方法能够让我们轻松、有效的将学习坚持下来,从而随着时间的累积,得到巨大的学习成果。而不良的学习方法只会让我们倍感压力,在焦虑中把你劝退。

在编程上,我总结出了两种学习方法,分别称为“分裂学习法”和“螃蟹学习法”,对应的是学习初期和中后期。这些会在后文介绍。
在这里插入图片描述

在这里插入图片描述

思维导图可能害了你

我的观点是,一开始不要对着思维导图的知识技能树学习,这无异于抱着辞典学英文,不仅可能找不到北,更可能分分钟把你劝退。

主要原因在于,在学习初期,思维导图知识树的知识密度太高,极易导致“知识轰炸”,从而给你带来心理压力,这种压力给学习带来了阻力。要知道,屈原的一句“路曼曼其修远兮”,更多的是一种哀叹和迷惘,不然你以为他干嘛要跳江?

看看下面的Java core知识点吧:
在这里插入图片描述

循序渐进,日拱一卒是最佳策略

荀子云:骐骥一跃,不能十步;驽马十驾,功在不舍。学习的规律是循序渐进,把知识包分解为碎片,每天一小口,日积月累下来的成果会很惊人。

为了说明这一点,我们来听一个《小钟表的故事》:

在一家钟表制造工厂里,一只新组装好的小钟表刚刚出生,它惊喜地看着这个世界,却不知道自己的工作是什么,于是呢,它就去问两个已经工作了三年的老钟表:“师傅呀,我的工作是什么呀?你们能告诉我吗?”

第一个师傅望了望它说:“依我看,你这个小个子,一年要走完三千二百万次,恐怕你会吃不消。”“三千二百万次?”小钟表非常吃惊,“要走这么多次?看来我是办不到了。”

第二个师傅对小钟表说:“别信它说的话,这并不是什么难事,你只要每秒滴答摆一下就行了。”“这么容易?”小钟表将信将疑,“如果这样,我就试试吧。”

小钟表很轻松地每秒钟“滴答”摆一下,不知不觉中,一年过去了,它摆了三千二百万次。

接下来分享我总结的两种学习方法。

1.分裂学习法

在入门阶段,比较合适的学习方法,我称之为“分裂学习法”。这一方法的灵感来自生物发育的过程——从一个单细胞不断分裂,细化成组织,最终形成有机的整体。

分裂学习法的知识派生是一种树状结构。
在这里插入图片描述

分裂学习法举例

我们不妨从“面向对象”这一概念开始。面向对象这一知识点涵盖了从基本概念,到开发方法,和设计方法。面向对象的基本概念又可以继续分裂出多个知识点,抓住其中一个概念:“类”,又可以继续分裂,像下面这样:
在这里插入图片描述

如果我们顺着继承,继续分裂,不断深入挖掘下去,将得到下面的知识链:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分裂学习法采用层层递进的方式,每一层抓住一个主要知识点向下挖掘。

带着问题逐层挖掘

以上述面向对象为例,我们以提问的方式,挖掘下一层的知识点。
图一:
Q1:什么是面向对象?
A1:基本概念:事物抽象成对象,关系抽象成类
开发方法: 例如UML
设计方法:例如模块化,高度抽象,信息封装,低耦合高内聚

Q2:类有什么特性?
A2:封装、继承、多态。

图二:
Q3:什么是继承?分类?
A3:使用现有类建立子类,子类具有父类的特征和行为。
分为单继承和多继承。Java是单继承。

Q4:如何实现继承?
A4:使用 extends 和 implements 这两个关键字来实现继承。
extends只能继承一个类。
implements可以实现多个接口(变相多继承)。

Q5:extends相关的关键字有:final,this,super,static。使用final有什么效果?
A5:final可以修饰类、方法、变量;
被final修饰的类无法继承,其方法默认也是final(无法覆盖),final类的方法执行速度更快。

图三:
Q6:为什么final方法效率更高?
A6:JVM会对final关键字优化(编译时加载)。——(引出JVM)

图n:
Q7~Qn:
什么是JVM?
JVM的架构?
什么是运行数据区,包含哪些?
什么是堆区,如何配置,GC是在堆区吗?
GC怎样判断和回收?
垃圾回收算法有哪些?
什么叫分代收集算法?
什么叫新生代,包含哪些部分?
Survivor区为什么有两个?
Full GC和Minor GC的区别?
对象的年龄怎么计算?
An:…!!!
在这里插入图片描述
到哪一层该返回呢?这点取决于我们自己。由于知识的深度是无穷的(同样广度也是),所以自己感觉合适了就可以了。

那么,分裂学习法有什么好处呢?

好处1:系统性学习

由于移动互联时代的时间趋向于碎片化,随之的结果是知识也呈现碎片化。知识碎片化的问题在于,知识没有形成体系,即使知识量很丰富,也无法融会贯通。这就好比你只拥有了一堆手机零件,却没有一只完整的手机,当然也就不具备手机的功能。

而在分裂学习法中,由于下一层的知识点是由上一层知识点派生出来的,联系十分紧密,这样学习到的知识天然的构成一个体系。这种方法学到的知识不需要再重新整理了。

好处2:由浅入深,符合认知规律

分裂学习法从基本概念出发,逐步深入下去,这符合人类认知事物的一般规律。

好处3:适合自我学习

自我学习不同于集中学习,接触全新的知识领域会感到茫然。而分裂学习法是从已知不断延申到未知,奠定了新知识的基础。

不利之处:

分裂学习法也有不利的地方,它容易使你迷失在知识的深度中,而忘了学习的初衷,打乱了学习节奏。所以我认为,适可而止就好。

分裂学习法用于面试

面试常见的一个套路是,从某个基本知识点触发,逐步深入下去。这和分裂学习法的学习方式不谋而合。所以,分裂学习法可以用于测试知识的深度。

但是,现实常会出现用力过猛的情况。提问的深度明显超出了岗位的需要。假如面试一个厨师岗位,提问“刀有哪些种类,怎么使用”是合理的。但是有的面试官喜欢深入挖掘诸如“刀的钢材特性”乃至“钢铁是怎样炼成的”这样的知识,明显超出了实际需要。

这就是常见的“面试造火箭,工作拧螺丝”。我认为造成这个现象的原因有几个方面:

  1. 面试官通过知识深度来提高入职门槛,彰显公司和自身实力。
  2. 一定程度打击求职者信心,进而压低薪资期望。
  3. 面试官对岗位需求理解不到位。

分裂学习方法总结:

方式:
从某个基本知识点出发,不断向下层挖掘新的相关知识点,进而形成一个知识体系。

特点:
树状知识结构。
对比后面介绍的“螃蟹学习法”,你会发现,分裂学习法是点到点的一维学习方法。适合学习初期。而到了学习的中后期,我们需要从更高的维度规划学习。

好处:
系统性学习;
由浅入深,符合学习规律;
适合自学;

注意点:
学习深度应适可而止。

2.螃蟹学习法

玩游戏的同学肯定知道,一个游戏通常分为前期和后期,玩法也迥然不同,有时一个游戏的前期和后期甚至像是两种游戏。在学习方法上,也是如此。分裂学习法适合学习的入门阶段,目标是构建出一套知识体系。但到了学习的后期,有了一定知识体系后,这套方法就不适用了。

主要原因在于,分裂学习法是一种点到点的学习方式,是一维的(微观),在学习的后期,我们需要从更高的维度(宏观)去规划学习方向。

对于这个阶段,我总结了另一套学习方法,称为“螃蟹学习法”。
在这里插入图片描述

螃蟹学习法命名的灵感来源于螃蟹的身体结构:两只大鳌用于捕猎和战斗;另外八条腿用于支撑身体和行走。在学习的中后期,知识结构应该像一只螃蟹:
有两项擅长的知识领域(两只大鳌);
在多个相关领域有一定研究(八条腿);

To be continue…
不要走开,马上回来。

推荐阅读:

Java并发和多线程教程2020版

猜你喜欢

转载自blog.csdn.net/GentelmanTsao/article/details/106992622