很多事情做决定总是要平衡。
一个人工作中需要接触全新领域,需要先了解掌握多少知识?不至于占用过多时间,同时又能比较顺利掌握所需这个领域的知识经验来工作。
纳瓦尔评价这个时代不在于你掌握了多少知识,在于你能多快掌握你需要的新知识。掌握原本你不熟悉的领域的知识。
这个问题是最近比较困扰的。不过这个问题整明白了,如果你同样受这个问题困扰,可以看下去。
因为编程需要学到涉及很多分支,一个分支扎下去系统的做学习了解就是小半年的时间。
那么问题就来了,这样的时间精力投入是不是必要的?
如果花了很多时间来系统的深入学习,后来发现其实用处很小,那么这半年时间就浪费了。
而且这样的选择可能要经常面对,每次都做这样的投入尝试,时间上能不能担负的起,值得不值得。
而且因为时间跨度大,又没用使用来增强记忆,按照艾宾浩斯遗忘曲线,一个月以后,上个月学的东西可能已经忘的差不多了。
和同样正在学编程的frank交流了这个问题。
frank也被这个问题困扰,他咨询了其他程序员,给他的建议是项目驱动制,做项目用到什么再去学什么。这样的好处是小步快跑,拿来主义。
但是这样的方法也有它的问题,对于编程这样的技能学习,
知识点和技能有着很强的联系脉络和相关性。相互关系是一环套一环的。
做一个稍微复杂度高一点的项目,隐性知识很多,看别人的代码,案例,对其中用到的知识最多能到一个know what的程度。至于为什么know why,怎么用 know how 、在哪用 know where,很难真正理解。
这个程序如何被拆解成这么几个函数
为什么一开始声明了这几个变量
别人为什么要实现这个函数
这个函数为什么这样写
这个指令为什么要用这个方法
为什么要导入这个库?
这里有很多隐性知识。
而隐性知识更多是区分专业与否的一个重要分水岭。
这个事情有点像看菜谱做菜一样,比如做一条鱼,
显性知识是菜谱,菜谱只告诉你,有哪些步骤,用哪些材料
什么是隐性知识
那么选择什么样的鱼,为什么使用这样的步骤,如果改变一下步骤或者口味,
怎么做的快一点,如果某种材料欠缺怎么用其他材料替换
这些依靠经验和深度系统理解积累的知识是隐性知识。
如果对这个领域的知识掌握是零散不系统的,从0到1去架构1个程序不大可能,连抄的方向都没有。
那如果全部都系统的去延伸,去系统花时间貌似也不太显示。
怎么搞??
昨天冥想的时候构想出来一个方案。
如何 满足“既要。。。又要。。。”
系统的了解还是要的,节省时间也是要的
我想的方法是
第一步、先快速找一个媒介,教材也好,视频教程也好。
重要的是内容系统、初学者友好、有逻辑结构和知识脉络。
第二步、快速浏览一遍这个,把这个领域的内容主干和支线理出来,
这样对这个领域就有了一个从宏观到微观建立了一个系统的初步印象,不会迷失在细节的丛林里。
把最基本的概念和元知识掌握了,对于这些最重要的基础概念,把四个W掌握,what,where、why和how,通常最基本的概念和元知识并不太多,对应也不会用太多时间。
这一步重要的是用思维导图之类的工具写出自己理解的知识结构和脉络
重要的是把这个知识网络的结构搭建起来。
第三步、做项目遇到知识点再回来按图索骥。
遇到的问题可以回来在之前的知识网络里寻找对应的分支,进行比之前更细致的研究。
然后把这次的经验理解补充上。
这样可以通过项目验证对这些知识点的了解和掌握,同时把网络丰富补充。
这个是第一版的一个解决方案,
目的要兼顾结果和过程,效率和质量,显性知识和隐性知识。
先用这个方案来实验在JavaScript的编程。验证一下效果。