学习态度
学习不是努力读更多的书,盲目追求阅读的速度和数量,这会让人产生低层次的勤奋和成长 的感觉,这只是在使蛮力。要思辨,要践行,要总结和归纳,否则,你只是在机械地重复某件事, 而不会有质的成长的
学习不是努力读更多的书,盲目追求阅读的速度和数量,这会让人产生低层次的勤奋和成长 的感觉,这只是在使蛮力。要思辨,要践行,要总结和归纳,否则,你只是在机械地重复某件事, 而不会有质的成长的
他们在想方设法地用一些手段推出各种代读、领读和听读类产品,让人们可以在短时间内体会到轻松获取知识的快感,并产生勤奋好学和成长的幻觉。但是无法让你有更深层次的思考和把知识转换成自己的技能的有效路径
学习的三个步骤
知识采集。信息源是非常重要的,获取信息源头、破解表面信息的内在本质、多方数据印证,是这个步骤的关键。
知识缝合。所谓缝合就是把信息组织起来,成为结构体的知识。这里,连接记忆,逻辑推理,知识梳理是很重要的三部分。
技能转换。通过举一反三、实践和练习,以及传授教导,把知识转化成自己的技能。这种技能可以让你进入更高的阶层。
构建知识体系
选择信息源
(1)信息源应该尽量选择第一手资料,或者我觉得别人理解后输出的资料也是可以汲取的,不过要对方对比,找到源头,自己思考,而不能够一味的采纳和接受。
(2)我们所选择的信息源是需要有佐证的,而不是毫无根据的猜测或臆想。
完善知识体系
(1)注重基础知识和原理上的学习,而不是一直在上层的上层学习搬砖。
(2)学习不是为了记住更多的知识点,而是为了不断完善自己的知识体系,丰富自己的知识生态,让自己遇到未知问题时候通过自己的自己体系去解决它。如果学习到了一个新的知识,它也不应该是一个离散的点,而应该和自己所已经构建的知识树做一个链接,挂到合适的分支上去,让它成为自己知识体系的一部分。
如何高效学习
系统学习
首先是系统的学习,学习一个东西的时候不能是毫无章法的学习,看完之后也没有什么成效。针对一种新技术或者对于我们个人而言是新事物的东西,我们可以用一个“模板”来学习:技术出现的背景是什么,它的出现是为了解决什么问题,为什么之前的技术没有解决这个问题?这个技术的优势和劣势是什么?它所试用的场景是什么?这个技术有哪些组件部分和关键点是值得我们去注意的?它的实现思路是什么,和之前其他技术对比它的实现有什么新奇的东西,它的设计能够带给我们什么启发?
举一反三
举一反山应该是大家从小听到大的道理,但是如何做到举一反三呢?
分解一下大家是三种基本能力:
1.联想。不停的思考与之相同或不同的事物。
2.抽象。将解决的问题进行抽象,找到通用的解决模型。
3.自省。对于同一个场景,制造不不同的问题让自己尝试解决;对于同一个问题,尽量思考多种解决方式,并比较不同方式的优劣;对于同一个解法,寻找各种边界条件,使解法更加健壮。
归纳总结
何时总结
总结不是我们一开始学习的时候就去做的,因为开始的阶段我们对于问题的认知还不深刻,对于问题的判断还不准确,因此这个时候应该保持对知识的开放心态。当看到的资料足够多,进行思辨足够充分,对整个知识的理解深刻,站的位置更高之后才能够做到对于知识的有效总结,这个时候不是简单的摘抄笔记或者零星写下自己的见解,而是在复习的过程中对于所学习的内容进行回顾和重组。
总结的方法论
我们既然要进行总结归纳,那么什么样的总结是好的总结呢?有一些好的样例能供我们学习吗?这个时候我们可以多去阅读一些经典的方法论图书,学习别人是怎么进行总结的。另外我们需要将自己总结的知识开放出来,接受大家的评论和建议,让自己成长的更快。
实践出真知
实干兴邦,空谈误国。对于我们本人来说学习技术也是如此的。我们需要的不断的实践自己所学到的,然后不断的尝试寻找新的答案,反复探索,而是封闭自己已有的认识。
如何读代码
读书还是读代码?
如果想要了解思想、方法、原理,那么更应该去读书。因为很多的思维模式,优劣讨论,更多的是在书里会进行讨论,这些会让我们对于技术的把握能力更强,而只看代码是很难达到这种程度的。但是如果说你想了解具体的实现细节,某个算法或者模块的实现,那当然还是应该去阅读代码。
如何阅读代码?
如果我们决定去阅读代码的话,那么应该如何入手呢?首先是需要具备语言和相关技术的基础知识了,然后是要了解代码的功能是什么,看看有没有用户手册或者相关文档可以供我们参考的,如果能够对于代码组织结构的介绍那么再好不过了。
如果代码的设计是优秀的,那么一般可以按照这样的模式进行阅读(如果代码很乱很糟糕的话,如果不是工作中避不开的祖传代码,尽量不要去碰它):
(1)自顶向下,先弄清楚业务逻辑,搞清楚数据之间的传递和流动,可以画时序图和流程图来记录
(2)看看代码有哪些接口或抽象定义,理清楚它们之间的关系
(3)注意中间件、回调、代理委托、依赖注入等模块粘合技术,因为它们打乱了代码的顺序结构
(4)分清楚代码业务逻辑和控制逻辑。处理业务逻辑的是和公司业务相关的,控制逻辑是控制代码流转的,线程、异步、通讯等都是控制逻辑。
(5)梳理代码逻辑时候可以摒弃掉处理错误,因为错误处理可能占了很大的一部分。
(6)注意数据处理。因为很多时候很多代码都是在进行数据格式的转化,这并不是代码核心逻辑,可以先不理会。
(7)核心算法,往往是代码里最难读的部分,但对于我们来说也是最有价值的部分。
如何学习海量的知识
你感到枯燥的知识一般是你不感兴趣的,你不感兴趣的知识一般是你不知道它有什么用。所以学习一门知识可以先去看下它的应用场景是什么。
知识的存量是海量的,知识的增长也是海量的,掌握所有的知识是没有必要的,更不要去记忆,更应该掌握的是推导知识的方法。
学以致用,教学相长。实践所学到的知识,在会在遇到的细节问题中更细致的了解知识,促使你重新思考,深化学习。而将自己学到的知识进行分享,在给别人的讲解或别人的提问中发现自己还有所欠缺的地方,及时弥补。