逆向学习法

来源:互联网 发布:免费征婚软件 编辑:程序博客网 时间:2024/04/29 10:10
第一次听说逆向学习法是在上大学时,一次上网看英语学习的网站,有人提出了逆向学习英语的方法宗旨就是听写,也就是直接听录音,然后写下录音中的句子,之后再学习句子。
到现在自己也一直在学习,更在不断的探寻学习的最佳方法,现在回望自己的学习之路,总结了下发现很多的学习效果不明显,效率低下,因为都是先去看书学习一门技术,然后再找机会去实践,很多时候要么半途而止,要么没有去实践,而导致了过了一段时间就遗忘了。最近因为一直都在用Vim作为开发编辑工具,于是就恶补下Vim发现学的东西都能记住,最重要的是因为在使用Vim,所以学习的东西都能有所用,发挥其价值,而且效率要高出以前的学习,因为我知道我需要哪些命令,可以直接去找那些命令如何使用。
总结了下便有了这个逆向学习法,总的原则就是需求驱动学习。
它有以下优点:
1.有的放矢,效率高,直取所需,可以直接学习所需要的,不会做无用功
2.效果好,因为有需求,可以实践,它的优点多多
3.一举二得,既完成了你的需要,又学到了东西
最典型的例子就是考试,如果你已经知道考试题目再去看书学习的话,我相信所有的人都能考取好的成绩。
我们在学校的时光都是在正向的学习,也就是说先学习编程语言,开发工具等等,然后在结束后有考试,有课程设计等等。很多时候都会出现这样的情况,就是到考试时还要复习当初学习的东西,课程设计时还要把书拿出来翻几遍。特别是做课程设计时,或实习的时候,你会发现以前的课都白上了,以前学习的成果为0,还要再学习。要么就是课程设计用到的东西以前没有学到,还要再补充。
很多人都会比较学校里的学习与工作以后的学习的区别,更有人说工作中学习的三个月比大学时半年学的东西要多。其实就单单论学习累计量来讲都一样,区别就在于一个是逆向的学习,一个是正向的学习。在大学里学的东西虽然多,但由于你不知道它们有什么用,能用来干什么,没有机会去实践,学的自然不扎实,很快就会忘记。在工作中就不一样了,你明确知道你需要什么知识,比如你在做短信相关的应用,需要恶补SMS相关的协议,你的需要非常明确,你学习的目的也非常明确,更重要的是因为工作需要你知道SMS协议,所以你有机会实践和检验你的学习成果,为了能把工作完成,你必须完全掌握协议原理。这就是逆向学习的效果和好处。
再比如你的项目当中需要Git作为版本控制工具,你没有学习过Git,所以你需要学习,但是你仅需要日常的签出和签入,添加和删除等常用的操作对于其他的什么管理员配置方面的命令等,你完全不需要知道,因为你用不到。这就给你的学习定下了非常明确的范围不致于你迷失方向和浪费时光。因为每一个技术都是很庞大的,要想掌握必须要花费一定的时间与精力,但是常规的使用也就只能使用其20%左右。具体需要掌握到什么程度依你的需要而定,这也说明逆向法率先知道需求的好处。拿著名的Vim来讲,掌握所有的命令需要几年时间,但是有些离你很远的命令,或是那些一辈都不会用到的命令你是没有必要花费时间去学习的。
逆向学习的重中之重是先确定需求,也就是知道你想要干什么!需求常常从项目中来,这里的项目是广义上的,比如写一本,参加一个竞赛,一次旅行等等都算是项目,当然软件项目更是项目了。目标和梦想也是能确定出需求的。
当然挖掘需求也绝非易事。对大多数来讲最难回答的问题就是我到底想要什么?我每天是为了什么而活着?这个世界上百分之八十的人都是没有明确生活目标的(包括我在内),而那些成功的人都是知道自己想要什么,有自己明确的目标!所以他们都有明确的方向,不会迷失更不会浪费时光!他们都是逆向学习的大师!
逆向学习同样可以解释为什么学校的学生和有工作经验人的知识量,学生学的虽然多,但是却肤浅,都是了解性的;但是有工作经验的人就不一样,毕竟他们天天实战,所以知识的成熟度和牢固度要好的多。
同样,对于所学习的技术,有相关项目经验的和没有相关项目经验的也是有较大区别的,所以为什么项目经验那么被人所看重!
回到软件开发的学习,最佳的方式就是通过项目来学习,在项目中实战是效率最高的学习方式,特别是通过参与开源项目,源代码是丰富的教材。

(开源)项目-------->恶补学习------->完成项目------->总结出经验------->与别人分享(代码,教程和文档)

这里有关于如何利用开源软件学习的详细讨论,以及为什么借助开源软件学习是最有效果的!