我的学习方法论v0.1
要想称为一名优秀的程序猿,持续学习是必不可少的。在信息洪流的时代,琳琅满目的技术和代码,如何保持专注显得格外重要。学习了这么多年,如今回顾和总结下自己的学习方法论,标题为何要加个版本号v0.1,主要是关于学习方法能扯的非常多,作为一个智商一般的人学习了32年没点积累也是说不过去的,今天只是个开始,主要捋一捋:
- 知识是什么?知识对你意味着什么?
- 学习是什么?
- 学习的最佳策略:入门、熟练、精通?
- 学习的方法?
- 知识可以碎片化吗?
知识是什么?
关于知识改变命运之类的说辞直接跳过,在我的世界里面,知识就是放在自己脑子里面的有用的信息。放在你家书架上的,存在世界某个服务器角落的,Google出来的那些算知识吗?当然算,但那是别人的知识,对你来说只是信息而已。所以这里的关键字是“自己的”、“有用的”、“信息”。
在自己脑子里面的知识分两种:一种是能说得出来,写在纸面上的,叫显性知识;另一种是很难说得清道得明的,叫隐性知识,说白了就是你的经验和直觉。为啥大神都非常值钱,就是因为经验和直觉,遇到难题,大神看一眼就能发现症结所在,普通人盯着看到眼睛发黑死活没辙的情况多了去。去年10月份生了一场病,天天发高烧,跑了三四个医院,抗生素吃了吊针也打了,甚至超级难喝的中药也吃上了,结果没什么卵用,继续高烧不断,加上某些三流医生说的可怕,一度以为自己是得了啥不治之症了。最后,听说华山医院感染科比较牛逼,跑过去挂了个特需专家,只是描述了一下病情,医生断定为病毒感染,开了两盒药,回家吃了一次烧就退下了。我当时心里好好慰问了一下前面几位的大爷,折腾死我了。所以我认为:长期积累的经验和直觉,才是你最大的竞争力。这个时代一万个臭皮匠都顶不上一个诸葛亮。
学习是什么?
明白了隐性和显性知识,那么我认为:学习就是把别人的显性知识,想办法转换为自己的知识。 隐性的经验和直觉,是没办法通过别人的知识获得的,需要自己的思考和大量重复的实践。
一个更实用的知识分类
再说一个更加实用的知识分类,这个分类决定了不同的学习方式。根据知识的用法划分,一种是理论性知识,一种是实践性知识。理论知识是我们认识这个世界的工具,帮我们理清事物的运作和原理,比如:哲学、数学、物理、化学等基础学科、xxx的原理、xxx的理论研究等;实践性知识则是给我们提供改造世界的工具,需要运用起来才会有意义,比如:编程语言、xxx的方法、xxx工具等。做个有类比:理论和实践、科学和技术、世界观和方法论。 这两种不同类型的知识学习方法是有所不同的,理论性的偏重于大量思考,实践性的偏重于大量实际使用。注意,我这里用的是“偏重”二字,学习中思考和实践都是非常重要的,有道是“知行合一”,“学以致用”。
学习的最佳策略:入门?熟练?精通?
“弱水三千,只取一瓢”。如今已不可行,一瓢水一不小心打翻,你是会被渴死的。就拿游戏开发来说,引擎繁多:Unity、Cocos、UE4、H5的又是一堆,神马物理引擎、2D的、3D的、商业的、开源的。万不可在一棵树上吊死,技术在不断发展,关键他妈的发展速度还贼快,一不小心自己一直玩的就被淘汰了,比如玩Flash的同学,你们如今还好吗?
就一个游戏开发,都能拎出来这么多主题的知识。该如何是好?需要各个主题都精通吗?还是雨露均沾点皮毛?这也是游戏前端同学最大困境,一个技术好不容易玩转,换种语言和技术继续,折腾个几次,妈蛋干脆转行把,结果又发现除了代码啥都不会。
我认为,知识广度决定了未来的无限可能、知识的深度决定了当前的处境。学习的最佳策略是:当前工作需要的知识不断精进,熟悉和当前工作相关联的,不相关的应快速入门!。试想一下,当前工作需要的知识,入门意味这你是一个新手,熟练了也就是个好用的帮手,而精通的同学想不是骨干或核心都难。遇到一些难题时,熟练和精通的差别立马就出来了,熟练意味着你可以重复做一些类似的事情,遇到未知或超出自己知识范围的东西,立马缴枪。入门——熟练——精通,是一个越来越难的过程,精通一个主题需要大量的刻意练习,往往精通自己当前工作的某一项都是不错的。C++用了十几年了,整体自评为熟练,标准库STL可以大言不惭说精通。前天看了个笑话,某位同学简历上写了精通C++后被面试官问的开始怀疑人生,模板、编译器实现对比、各种刁钻语法等等。可见,精通一个主题几乎是个无底洞,人的时间和精力有限,不可能所有知识都精通,对于和自己工作有关联的熟悉一下也是有好处的,比如一个做游戏程前端的同学,熟悉一下后端开发就能站着后端同学的立场思考问题了,熟悉一下游戏设计和策划沟通起来也会变的顺畅起来。不相关的知识多了去,若要扩展自己的知识广度,就必须找准主题,快速入门,万一那天用到了。通过上面的描述,可以看出,这是一条非常功利性的策略,时间精力足够,兴趣驱使的,无论什么主题都可以往精了玩。
学习的方法?
之前我提过 快速学习是非常关键的技能之一,今天特别明确下,“快速学习=快速入门”,熟练和精通从来都是没法快的。21天精通系列,可以滚了,换个名字我觉得可以接受,21天入门系列。
快速入门
要扩展自己的知识广度,必须要学会快速入门任何一个知识主题。对此只有两条建议:
- 最小知识集:这个概念来自敏捷里面的“最小可用软件”,找到当前主题最核心的几条,理解它们。
- 快速用起来:广大程序员接触的知识大多为实践性的,有了最小知识集,就可以上手实操了。千万不要等,等上十天半个月,你会发现他妈的一直站着知识的大门口,入门都变成很难的一件事情。
以骑摩托为例,跨都没跨上去,花大量时间,各种理论,各种视频,各种原理,结果没任何卵用,试一下还不照样熄火。反过来,先了解下最小的知识集合:油门、刹车、离合、加速、减速、直行、简单过弯,操练一个下午就入门了,马路上随意溜。
切忌:入门阶段陷入分析瘫痪,一头扎进各种细节。
不断精进
若所有知识都只是入门,蜻蜓点水,那也就只能整天吹吹牛逼,遇到问题要解决时大眼瞪小眼了。选一个和工作相关的或者兴趣使然的主题,刻意练习,不断精进,遇到问题时深入到细节,要有不弄明白誓不罢休的气势。
在学习这件事上,我经常把自己比作一只蜘蛛,在织一张知识的大网,我的网越大捕获猎物机会就越多,我的网眼越密能捕捉的猎物种类就越多。当发现一只比较小的BUG从我的网眼里面漏掉时,我就会爬到相应的网眼,把它织的更密一些,这样小的BUG也难逃我网。
知识可以碎片化吗?
最后,再补充一条。现在动不动就碎片化,上厕所,等公交,都不让你歇着。知识可以碎片化吗?答案是NO!碎片化的是你的时间,知识从来都是体系化的,我们脑子的知识应该是一个网络或者是一个树状结构,各个概念之间相互关联的。
有些人遇到问题,这看一片水贴,哪儿看一片水贴,尼玛最后发现都是抄的某某书上面的内容。这些零零散散的信息,我们需要把它们整合在自己的那一张张知识网络里面,这样大脑用的时候也方便,一个概念抽出一堆内容来,解决问题时思路也会开阔一些。
利用碎片化的时间,去为体系化的知识大厦添砖加瓦,这招我看行!!
欢迎订阅