当在学习较为基础的知识的时候,不容易碰到难点,这个时候能够尽快吸收,每分钟的阅读效率更高。这是一个很朴素的道理,只是由于许多现实原因导致许多开发者没有很好的学习基础知识:计算机科学概论、编程语言入门、离散数学、数据结构与算法等等。
易学难精
在应用层的基础知识其实并不难,尤其是编程语言方面,也有一些同学很重视基础学习,但就是学的不够好,这里就涉及到学习编程的一个难点,即易学难精,对于面向对象语言而言,需要掌握的东西相对来讲是很少的,归根结底就是条件控制、循环、封装、继承、多态、多线程、语法等诸如此类,现在有许多的少儿编程培训班也可以佐证编程语言是易于学习的,难于精通在于这些基础知识本身就具有相当高的抽象层级,最早的计算机就是一个巨型的计算器,要使用计算器是简单的,但是一个问题为何要如此计算却可以是无比复杂的。适合0基础学习Java的教学视频
学习编程可以类比学习数学,那么如何才能学的更好,除了先学习基础知识外,在学习其上的内容的时候,还要时刻思考基础知识,这有点像马斯克提出的第一性原理,时刻剥开事物的表象,看到里面的本质,然后再从本质一层层往上走,数学学的好的人并不是靠死记硬背记公式,而是自己有能力推导出公式,同样编程学的好的人也并不是靠背 sdk,他们自己就可以设计出 sdk,那么当我们在学习 sdk、框架、技术工具的时候都可以进行逆向思考,jdk、spring 框架为何如此设计,它们是如何运用面向对象的三大特性?为何这三大特性可以演化出如此多的设计模式?看完一本基础理论书籍后不应该将其束之高阁,而是应当反复咀嚼,时刻保持思考,直至豁然开朗、融会贯通。
像产品迭代一样更新学习方法
学习的时候同时要不断更新「学习的方法」,使自己的学习方式得到迭代升级、提升效率,关于学习的书也有很多,比如《如何阅读一本书》、《学会提问》、《像加勒比海盗一样学习》、《思维导图》、《快速阅读》、《把时间当作朋友》等等,这些书让我们掌握更多学习方法论的同时也扩展了知识网络,正所谓磨刀不误砍柴工、万变不离其宗,多从不同的角度思考学习编程这件事情,提升学习能力并非一蹴而就,而是一件需要沉淀和积累的事情。
学习方向
有了金字塔这一基础的学习模型后,相对来讲不太容易走弯路,但技术道路千千万,还是要有一定的方向,否则容易在技术的道路上迷失。学习的方向跟个人兴趣关系也很大 基础知识领域是非常广阔的,这里面也有纷繁复杂的问题,当碰到难懂的知识点时需要去补充更多的基础知识以便进行下一步学习,就像玩游戏一样,当你的等级还打不赢一个 boss 的时候就不要硬打,先去打打小怪补充点经验。
以上内容不需要全部学完才开始下一阶段,有了一定的基础之后可以开始学习应用层的知识,具体什么时候开始,这个就看基础知识的掌握程度,多从时间成本的角度思考,当学习效率不足的时候考虑去补充更多的基础理论知识。
再次说明,以上仅是简单的列举了一些学习点,关键还是围绕着自底向上这一思想进行学习,但并非把所有的底都铺好再往上学习,而是根据不同的领域,打不同区块的地基,在不同区块上垒高墙。
阅读经典
学习方向并非三言两语可以讲清楚的,因为这个方向本身在学习的过程中很容易产生变化,阅读的书籍会改变人的思维,其重要性不言而喻,市面上的书多如牛毛,伏尔泰说过图书馆是真理和谬误的宝库,如果读错了书,那不仅没有提升,还可能令自己退步,如何甄选好书其实不难,优先选择经典一般不会有错。现在是一个知识付费的时代,拥有知识比以往更容易变现,这衍生出一个问题,就是知识市场上存在质量参差不齐的「产品」,也存在大量的同质化,这些内容一般追求尽快见效,是不适合从 0 到 1 这个阶段的,经典则经过时间的考验,是最优质的知识来源。
学习方式
很多人不读经典,一部分原因是一些经典的书比较难以阅读,还有一些是因为通过其他方式学习更加轻松,比如看教学视频,看视频学习的节奏比较慢,头脑可以处在一个比较轻松的状态下去接收知识,不光要接收知识,还需要接收很多无用的信息,比如讲课老师的长时间停顿、演示等等,这些无形中消耗了时间成本。看视频学习需要视情况而定,即在学习艰深难懂的知识时才需要通过他人来讲解,我们最开始都是通过老师讲课来学习知识的,在读大学的时候应该已经能够形成较强的自学能力,在许多知识领域的学习上都不再需要他人教授。
根据所学知识的困难程度,选择适合自己的学习方式,优先读经典书籍,不要因为惰性而选择低效的学习方式。
学习质量
采用适当的学习方式是为了提升学习效率,但不要陷入一味追求速度的误区,在从 0 到 1 的阶段许多书都需要通读而非挑读,对书中的细节也不能忽略,经典的基础理论书籍需要慢慢阅读,而非快速阅读,在阅读的时候要辅以练习提升学习质量。
编程实战
在编程方面,遇见较难学习的知识点的时候,一个解决办法是去补充更多的基础知识,另一个方法是进行编程练习,可以找一些自己感兴趣的小项目进行实践,比如学到面向对象的时候,可以写一个简单的小游戏,定义游戏里面人物、怪物的对象模型,揣摩为何会由过程式编程转变为面向对象编程,这些自我实践在早期是非常重要的,可以加深学习理解,令自己不需要死记硬背。
兴趣是最好的老师
找自己感兴趣的项目也可以提升个人的编程兴趣,兴趣是最好的老师,当你兴趣越来越浓之时,苦学编程就变成了一种享受,当你写出一个网站、写出一个小游戏的时候,成就感会促使你继续学习,甚至激发你的潜能。