Eisen's Blog

© 2023. All rights reserved.

对于学习的一些想法

March 13, 2013

刚刚看了 js 类继承这部分的东西。其实,这不是我第一次看类继承这个内容了,一次又一次的看,一次又一次的忘,最主要的问题是从来没有在实际的代码中用过...在 backbone 中是有使用这个内容的,但是每次就是直接使用人家封装好的方法罢了,对于内部的实现并不关心。其实我一直觉得学习和那种比较流行的 TDD 的开发方式一致也挺好的。那种测试驱动开发的方式强调每次你要做的就是让你的代码通过测试。那么,不论我用什么方式,我就是让你通过测试我就算是编码完成了。但是我的测试会不断的进化,越发的复杂,每次测试添加了新的逻辑,那么代码就需要跟进,让你的代码可以通过更复杂的测试,并最终在测试的促进下完成整个项目。而整个测试就是对于需求的体现,这样就是让自己的代码保持与测试高度的一致,一方面保证了需求的达成,另一方面保证测试是高覆盖的。

学习经常接触的东西所延伸的领域

而学习我其实也比较倾向于类似的方法论。就是什么时候用,什么时候学,而不是说在完全没有应用环境的时候盲目的学习,这样学习的效率并不高,很快就会忘记。虽然我说过,其实以前学过的东西永远都是有意义的,但是当我隔很久时间用到这些知识的时候发现只知道个大概、甚至只是看到书上各种图画的痕迹却一直怀疑自己从来没有看过这些内容的时候还是会觉得沮丧。后来想了想,这种没有效率的学习通常都是因为比较盲目的学习一些没有背景的知识造成的。我觉得学习应该是在自己已经熟识的领域自然的延伸会比较有效率,比如我做前端,那么对 http 请求的了解是比较自然的。如果我突然觉得 C++ 比较有意思,自己去写,那么除非说我有什么实际的项目要使用这个技能以推动我,那么,我想这部分技能的提升是非常困难的。

我记得以前看过一些讲帮助提升记忆效果的东西,大多是说要把需要记忆的东西尽量和已经熟悉的东西建立关联,关联越多那么记忆的效果就越好,那么这种延伸式的学习也算是有利用这个点吧。

我觉得比较理想的情况就是当我做东西需要某部分知识的时候,我就抽出一些时间快速的熟悉这部分内容并在实际的开发中使用之。我想这样的效果应该是最好的。

可是,用也不一定是最好的学习

使用才会驱动你去学习,但是如果仅仅是为了临时的项目,遇到问题仓促的 google stackoverflow 然后暴力遍历所有解决方法解决之后头也不回的走了,那么再次遇到类似的问题依然还是要重新走类似的流程。有的时候实际的项目并不一定可以帮助我们快速的成长,没有对知识进行良好的消化吸收,那么这个经历的意义就小了很多。

不知道是不是我的心态不太好,每次做项目都很有压力,希望尽快的做完,做完了才安心。那么,当遇到问题之后,我就会先用 google + stackoverflow 的方法迅速解决之,然后快速推进。但是这会失去一个消化吸收的机会。虽然事后想起来会去进一步学习,但是那个时候与当即遇到问题当即学习的感觉是不大一样的。

有的时候感觉这就是像是打红白机的对打游戏。尽量用这些熟悉的招数,而不敢在对打过程中去尝试的招数,因为这是有成本的,随便尝试招数很有可能被对手快速打爆。反而是没人对打的时候自己偷偷去练习一下才会有很好的提高。

其实我的理想是可以不紧不慢的按照自己的安排去学习。但是我后来觉得,人,是很难靠自觉去生活的。就像政府是很难靠自觉去抵制腐败一样。人都有一个向着懒惰的趋势。如果没有比较强硬的措施加以阻止是很难控制的。给国家立法或者是给自己外界压力才会保证自己不停的努力。总是把自己放在最舒适的地方希望靠自律是完全不靠谱的。