领域知识的不同层级分析

写在前面

俗话说,“活到老学到老”。对程序员而言,尤其如此;或者说的严重一点,程序员唯有此一条路。然而,无论是职场新人还是职场老手,能够坚持学习的人却凤毛麟角。一方面是因为坚持学习需要很强的毅力,而人有偷懒的劣根在;另一方面则是因为学习目标模糊,不知道该学什么,也不知道该怎么学。

如果把坚持学习看做一个习惯,如何培养这个习惯本文不做讨论,大家可以先自行思考;本文只尝试分析知识的层级,从而便于我们认清自己应该学习什么以及应该怎么学习

知识的不同层级

假设任何领域的知识分为不同的层级。


(↑实践)
############################################################
L3 (domain knowlege)     | L3-1 | L3-2  |  |  L3-3 | L3-4 | 
#########################|##############|##|##############|#
L2 (practice knowledge)  |    L2-1      |  |     L2-2     | 
############################################################
L1 (general knowlege)
###################################
L0(low-level knowledge)
###########################
(↓理论)

(某个领域的知识等级图)

L0 代表底层基础层,表示那些比较少涉及到的知识;L1 代表通用知识层,表示只要涉及当前领域的工作就需要掌握的基础知识;L2 代表实践层,这个层级的知识开始出现领域上的初步分化;L3 代表领域层,包含更为专业的领域知识。越往下面越偏向理论,越往上面越偏向实践。直白地理解,越往下越接近课堂里学习到的知识,越往上越接近工作中用到的知识。

作为一名编码者,理想情况下需要从 L0 到 L3 逐一训练自己的能力。但是在精力限制以及时间限制的情况下,无法顾全所有,只能有选择性地进行学习。

自己应该学习什么

在讨论知识的时候,庄子曾讲“吾生也有涯,而知也无涯”,那么多知识根本学习不完;这对于学习者来说算是一个坏消息。但是并不意味着放弃学习是一件睿智的选择(其实放弃学习是很愚蠢的选择),因为还有一个事实,解决工作上的实际问题并不需要所有的知识,有时候解决一个问题只需要掌握一小块知识就足够了;这对于学习者来说算是一个好消息

自己应该学习什么?如果目前工作中需要某个技能,但是自己不具备这个技能,投入时间精力学习吧!如果自己未来的工作中(工作转型)需要某个技能,但是自己目前不具备这个技能,也投入时间学习吧!

如果自己不知道当前的工作需要哪个技能,也不知道自己未来的工作需要哪个技能,说明自己处于迷茫阶段,不妨尝试一些别的事情。对于非 IT 领域的同学,可以尝试学习一门编程语言;对于已经是 IT 领域的同学,可以尝试通读一下某个编程语言的手册文档;等等。

知识的分类(应该怎么学)

根据我的学习经历及工作经验,我发现基本上可以把知识分成下面几类:

这四类里面,死记硬背型的知识点需要花费时间进行记忆,如果记忆力比较好短时间可以掌握;系统理论型的知识点主要凭借逻辑思维能力进行学习,如果理解能力好也可以短时间内掌握。但是接下来的领域栈知识和经验知识都需要时间上的打磨,尤其经验,没有时间上的积累几乎是不可能有成绩的。

如果读者朋友已结束学生时代并步入社会,或许已经意识到:很多聪明的小孩子认为凭借自己的聪明才智可以很容易地收获知识,从而不付出努力进行学习,这是一件愚蠢的行为。有的知识本就是耗精力耗时的性质,没有捷径真正掌握它。

如果确认了自己应该学习的领域栈,不遗余力地学习这个领域栈的知识点,然后想尽一切办法实践这些知识点吧

小结

本文属于理论上的罗列,希望读者反思自己学习的过程,理解为何有的知识学起来简单而有的知识学起来那么难,同时希望读者反思所学内容对自己职业生涯的意义。