程序员每天都在学习,但是好像还是有很多都不懂,貌似学不完的知识,每天都有种焦虑感。前段时间看到一些文章,感觉到知识管理的重要性,下面从现在知识特点、学什么、如何学几个方面介绍。
现在知识的特点
知识旋涡
自己被各种技术,工具包围,项目上的旧技术/旧框架还在服役,新的技术/工具/语言/框架又在迅速的出现,有些昙花一现,迅速被新的后来者取代,有的留下来了,不过也都在不断的演化,改变(不兼容的API,不同的版本等等随处可见)。仅仅从学习的速度上来讲,我们已经远远无法跟上科技演化的节奏了,这是人类自身的一种限制。
知识的陷阱
假设你在一个Ruby项目上,学习了Rails/ActiveRecord/RSpec/MySQL。如果下一个项目还是Ruby,同样的技术站,你会觉得这是一种重复,因为除了业务逻辑、业务对象变化了之外,并没有新的内容,还是同样的技术。如果下一个项目是Python,技术栈变成了Django/nose/PostgreSQL,你可能会觉得有所提升,因为学到了不同的技术,框架,共建工具,测试工具等等,其实仔细观察,这还是一种重复,古人云:“换汤不换药”者,是也。
过载的信息
微信,微博,内容聚合类的各种应用,每天推送各种消息,身处这样的信息过载环境,我们很难不为自己对信息的缺乏而感到不安,担心自己错过了什么重要的信息,这种担心和焦虑会促使我们进一步将时间消耗在对信息的获取上,从而更无暇思考什么是真正重要的。
那我们应该到底学什么,如何学?
学什么
知识符合以下几种规则:
1 知识符合枣核原理
,底层(语言,算法,数据结构,http,tcp……)和高层(分层,组件,概念,理论,模式,经验,思想,平衡)最稳定,两端向中间越来越不稳定,中间层如果不在工作或生活中使用,只需知其设计思想、原理、优缺点以及使用场景,不需知其详细使用和实现,主要目的还是丰富和实践底层以及高层知识体系。
2 网状联结结构
,是指计算机的技术没有一个线性的学习路线,所有的知识和技术都是一个网状中的节点,之间相互连接(这也是为什么刚入行的人很纠结的原因,东西太多,不知道学什么,与校园中的熟悉的明确的线性学习路径不一样),这就造成了一开始学东西很难很慢,越学越快的原因,因为之后大部分新技术的学习只是与自己的知识网中的其他已知节点之间建立关联即可。所以在工作中无论从“网”的哪个点开始学习,都是正确的,不要把时间浪费到选择什么样的技术上。
3 书分为两种,一种是提供资讯/信息(known)的,一种是帮助你理解(understand)信息的。相对于理解来讲,资讯本身其实并不那么重要。我们大部分人目前采用的碎片化的阅读方式无法提供给我们足够的“理解力”。我们都有这样的体验,有些书特别耗费脑力,读起来很累,而另一些书则非常轻松,易于消费。碎片话的阅读方式易于消费,只需要很少的思考就可以读懂,但是危害严重,它们并不会让帮助你提升理解力。
但是直觉上我们会选择容易的事情来做,虽然这种浅层次的阅读只对扩展信息/资讯有帮助,对提升理解力则几乎无用。而我们在处理日常工作中的问题时,能真正帮助的,只有理解了的那部分知识。
如何学
解决知识旋涡,我们只需符合枣核原理学习法
解决知识的陷阱,我们需要建立自己完整的知识图谱,类似的东西不要深入学习,只需了解即可。后面我会尝试建立自己的知识图谱(偏向于程序员大数据,github地址:https://github.com/jacksu/awesome,还在持续摸索整理中)
解决过载的信息,提供资讯/信息的,只对扩展信息/资讯有帮助,对提升理解力则几乎无用,读不读都可以,多读经典。
-
学习过程,很多人多有讲,每个人都需要摸索自己的方法。我自己的方法为:
1)使用网络云笔记(比如印象笔记、简书)积累知识
2)利用碎片时间进行整理归档,方便后面查询
3)实践:不一定必须在工作和生活中使用,可以写博客、做分享,一边实际自己的知识,一边也可以作为自己学习的动力。
4)思考创新,每天预留一点儿时间来仰望星空,联系自己已有知识产生新的idea