昨天一位开发者通过在行约我聊找工作的事情,他提到一个很典型的现象:
自己对很多编程方面的知识都有了解,比如设计模式、多线程等,看书时都知道怎么回事儿,可面试时别人问到它们怎么用,却说不上来。而且,在实际编写代码时,也想不到要用它们,始终没用起来。
这其实是知识的内化问题:怎样把书本上的知识,内化为自己的能力,让自己遇到合适的场景不假思索就能用起来,始终是个问题。
我特意回顾了自己学习编程的经验,认真思考了这个问题,找到一个将知识内化为能力的实践规律,分享给大家。
有这么4个步骤:
1. 记住知识点,尤其是它的适用场景、可以解决什么问题、能带来什么价值。 比如设计模式中的工厂模式,你就要知道,它是用来解决对象创建问题的,能够把散布在代码中的对象创建代码收归一处,方便对象类别的新增、修改、扩展,也方便具体对象的创建,最终可以构建出耦合度更低的代码。
2. 带着知识点,观察别人怎么用它。 比如你可以带着抽象工厂模式,到你的工作代码中、到开源项目中、到知名开发框架中去找它们的影子,看看别人怎么用的。
3. 有意识地去找或者创造可以使用知识点的典型场景,有意识地去用。 哪怕用得很生硬,也要用,比如代码中只有一种对象要创建,也可以为了练习而引入抽象工厂模式。我们要告诉自己:我要用这个,我要用这个,我要用这个。反复重复1~3步,尤其是第3步,目的是为了在头脑中建立“知识-->场景”的映射。
4. 在开始新工作时,有意识地询问自己,哪里可以应用某个知识点,争取去用它。 反复如此,争取每周都可以应用那么两三次,持续一个月,就可以建立从“场景-->知识”的映射。
经历了这 4 个步骤后,书上学来的知识就会内化,你一看到某个知识点的适用场景,无需思考,就可以用这个知识点来解决问题。这个状态,我称之为“一触即发”。
特意画了一张简单的图给大家参考:
其实不单是编程知识,其他的,也一样。比如你学习RIA读书法,那就:
1. 先记住RIA的用法。
2. 看别人怎么用RIA拆书。
3. 给自己一个月时间,专门练习RIA拆书,严格遵照RIA的做法,用四色便签纸,一步一步来做。拆过20本书,你就能按照固定流程拆书了。
4. 一读书就问自己,是不是可以用RIA读书法。持续一个月。
这么下来,你肯定很快会用RIA来读书。
还有很多知识,都可以参考类似的方法。
这个方法的核心,就是反复实践,提升反应速度,当我们通过反复的、持续的、有意识的练习,做到“场景出现,不假思索,即刻应用”这种一触即发的境界,就可以说,自己把某个知识点内化了,就可以说,我们把知识变成了自己的能力。
也只有到这个时候,我们才能真正把知识用来解决问题。