当前位置: 首页 > news >正文

逆向学习法

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

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

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

相关文章:

  • 一个Python程序员的进化
  • 【游戏人生】一个游戏程序员的学习资料
  • AJAX入门---五步使用XMLHttpRequest对象
  • AJAX入门---AJAX操作HTML
  • AJAX入门--- XMLHttpRequest对象的属性和方法
  • mysql查询今天,昨天,近7天,近30天,本月,上一月数据
  • html中使用map标签,coords值怎么精确定位gif上的链接
  • host 配置不生效的解决办法
  • 淘宝rubygem镜像
  • Struts2 S2-020补丁绕过漏洞
  • Discuz爆破无视验证码
  • Codeigniter 利用加密Key(密钥)的对象注入漏洞
  • 内网渗透案例
  • Fckeditor漏洞利用总结
  • 彻底删除Web路径下所有”.svn”遗留文件
  • [LeetCode] Wiggle Sort
  • iOS 颜色设置看我就够了
  • JS变量作用域
  • MySQL几个简单SQL的优化
  • MySQL用户中的%到底包不包括localhost?
  • PHP的类修饰符与访问修饰符
  • REST架构的思考
  • Spring-boot 启动时碰到的错误
  • springMvc学习笔记(2)
  • VUE es6技巧写法(持续更新中~~~)
  • vue的全局变量和全局拦截请求器
  • 从0实现一个tiny react(三)生命周期
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前嗅ForeSpider教程:创建模板
  • 如何进阶一名有竞争力的程序员?
  • 通过git安装npm私有模块
  • 主流的CSS水平和垂直居中技术大全
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​flutter 代码混淆
  • # 数据结构
  • #define,static,const,三种常量的区别
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (9)目标检测_SSD的原理
  • (搬运以学习)flask 上下文的实现
  • (二)pulsar安装在独立的docker中,python测试
  • (论文阅读40-45)图像描述1
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转载)Linux网络编程入门
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NetCore项目nginx发布
  • .net的socket示例
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @RunWith注解作用
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [AIGC] Redis基础命令集详细介绍