学不进去,程序员该怎么学习?

Posted Big sai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学不进去,程序员该怎么学习?相关的知识,希望对你有一定的参考价值。

大家好,我是菜饼。

相信各位小伙伴在以往的学习过程中都遇到过一些困惑。

比如总觉得自己效率低下,学起习来三天打鱼两天晒网。

看一会儿书就摸起手机。

屯了一堆电子书却从没打开过。

总而言之,也不是不想学,就总感觉学不进去。

为什么知识它就是不进脑子呢?

其实这个时候往往是因为陷入了一些误区。

有的人误打误撞走了出来,有的人则一直蒙在鼓里,今天我们就来聊聊这个话题。

结合MIT教授 Meredith Thompson 的理论以及我过往的踩坑经验,

我总结了五个策略,去解决学什么,为什么学,怎样学三个问题。

0x01 学什么?

很多人都有这样的体验,在学生时代,学某个科目,怎么都学不好,浪费了很多时间,也伤害了自己的自信心。对这样的内容,请果断放弃。放弃不是让你“不学”,而是“知道这是什么,可以用来干嘛,什么时候会用到它”就可以了。

到了真的要用到的时候,再来学。相信我,到时候学习的效果会完全不一样。

举个例子,我以前大学的时候就犯过一个错误。当时我学什么都希望可以彻底的弄懂,比如刚开始学电子电路,我就希望可以把来龙去脉全部掌握,可是越挖越深,越来越无力。碰到啃不动的内容伤害了自己脆弱的自信心,也浪费了很多时间。

后来偶然的机会我要参加一个比赛,里面需要有一些电路控制机械和灯的变化效果。当时只有两天的时间,我在淘宝上看各种电子设备的说明书了解了不同电路能实现的功能,把它们组合起来,焊接了电路板搞定了任务。在这之后,才进一步学了比较系统的电路设计知识。

假如我一开始学习电路原理能知道“不求甚解”,就不会纠结一些细节,事实上不懂那些细节也不影响我后来用它来解决实际问题。大多数情况下,“知道这是什么,可以用来干嘛,什么时候会用到它”已经足够了。

现在是知识外包的时代,很多知识都直接在网上搜索,还有一些知识可以问别人。存在互联网上,和存在别人脑子里的知识,也是你的知识,只要你有迅速准确获取它们的能力。(比如在我的例子里,我知道淘宝上会有一些现成的电子元件,可以去看它们的功能说明书从而了解什么样的电路能实现我要的功能。对我来说,花费大量的时间去"钻研电子电路知识”,是非常没有投资回报率的做法。)

学什么,不学什么。精通什么,略懂什么。

这是一个你根据对自己“知识版图”的规划,和学习这些知识的“回报率”来分配自己时间,最大化“收益”的策略性问题。很多人会有学生思维,觉得非要跟自己学不懂的东西杠上了,花了九牛二虎之力弄懂了一些问同学、问前辈一秒钟就能得到答案的问题,还获得了“战胜自己”的成就感。其实这是浪费自己的时间!

那么,怎么知道自己该“学什么,不学什么。精通什么,略懂什么”呢?

很简单,抓主要矛盾。

你学知识的目的是什么?

想通过面试?想应付作业?还是想切切实实提升自己的技术能力?

战术上的勤奋不能掩盖战略上的懒惰

在纸上画出你希望自己达到的“知识之树”,也就是你希望自己达到的“知识版图”。主干部分就是你需要精通的,树枝部分是你需要熟悉的,小树枝是你可以略懂的,而具体的叶子则是你可以完全去网上搜索的。

对于绝大部分人来说,把时间花在拓宽主干上,是回报率更高的做法,而不是花在添加叶子上。因为叶子多一片,少一片,并不会影响你的格局。主干拓宽已经够你跨界做出新东西了。添加叶子,也就是“弄懂弄透一些小知识”,可以放到做具体项目的时候按需要临时去学习。

学习要有取舍。画出自己希望达到的知识版图,把时间用在拓宽主干上回报率才高!

0x02 为什么学

根据Situated Learning Theory(情境学习理论), 在限定时间内解决一个“既有挑战又能带给你成就感的”具体问题的过程中, “顺便”去学习某个知识,效果是最好的

这时候,学习有了明确的目的。学这块知识,就是为了解决这个问题。

例如,如果你想学英语,要搞清楚,为什么要学?不是因为别人学了所以我也要学,而是因为,我想马上做成的某件事,需要“用英语”才能做。比如我想在两个月内翻译完某部美剧的第一季,就自然要去查某些词了。我想在半年内跟老外做成一笔生意,那就不得不学习商务英语了。又比如今晚想去跟老外约会,就得学习谈恋爱的英语了。为了解决不同问题,需要不同的学习内容和目标。

我们常常听说“学以致用”,其实不是“把学的东西用起来",而是"为了用而学"!

记住这句话

永远不要把学习本身作为目标,学习只是你为了达到想做的某件事,而顺便做的。

找一个“具体”的既有挑战又能带给你成就感的目标,限定时间完成,学习只是达到目标的手段。

举个例子。如果你现在为了考试不得不学地理,怎么办呢?

可以给自己一个很酷的任务,如编一张特别的地图做成礼物送给朋友,或者做一份以某些地理知识为线索的旅行计划发到网上(因为需要一些激励)等。以此类推,如果不得不学一些科目,可以给自己“设计一些有趣或有回报的任务”,让学习变成你完成这些任务的手段,而非目的。

更高阶的一些同学,因为立志解决某些问题,而产生了强大的驱动力,主动去学习各种知识。比如我有个朋友立志解决非洲饮用水的过滤问题,他从陶器的多孔性里看到用陶器来过滤水的可能,于是就研究起了这个。为了克服饮用水里的细菌问题,他有充足的动力去学习微生物学的知识。

中国的教育一向都与应用脱离,我们要自救,真正“学以致用”。

0x03 怎么学

降低预期,慢就是快

很多小伙伴在学习过程中常常急于求成

(期末考试前的突击,现在还能记得多少?这个效果大家也心知肚明)

所谓欲速则不达

找一个自己能坚持做下去的方式,比单纯按照标准化的时间和方式做更重要。

以前我也一直以为多花时间才能学好、才能达到效果,其实那是因为自己急于求成,想要快速见效,这样反而不容易坚持。后来我尝试降低了难度和标准,自己的行动力反而能持续增强,虽然达到目标所需的时间可能会变长,但是我相信这样的坚持最终可以产生复利效应。

主动降低学习的强度和难度,使自己处在最佳承受范围,既保留了学习的成就感,也保证了学习的挑战性。

对大多数人来说,这种做法是反直觉的,因为我们想要做成一件事的时候,通常都会告诉自己要很努力、很拼,会给自己设定一个很高的标准,还会经常给自己「打鸡血」,告诉自己坚持就是胜利。这是我们默认的思考模式,只是默认的不代表就是科学的。

那么科学的模式是什么呢?

建议你去试试,就知道了。实践出真知嘛。

鱼的记忆,人的内存

其实人的记忆不比鱼好到哪里去,把外界可触达的知识视作硬盘,我们的大脑记忆量只能算是一块微不足道的小内存。

Working Memory 理论:拆分小片段,多次回忆,多次复述。

说白了,我们要在学习的过程中就不断记忆与回忆!!

一般我们上课时,大多都会跟着老师上45分钟,然后课后才会复习一下。但是我们大脑的working memory其实记不了那么多。不信你可以试试写一串3928934028394209438908443248的数字,让自己记忆一下,看能记住多少位。

所以到课后去复习的时候,基本刚才上的内容都忘得差不多了,等于又要从头学一遍。

所以,在上课的过程中,学习的过程中,就要“边学边总结”,“边学边复习”。

比如,每5分钟,就总结一下,刚才那段,老师讲了些什么。上课的时候可以记录一个思维地图,以5分钟为一个节点。这样到下课的时候,只要把这些节点再串一遍就好。

事实上,我在学习过程中常常会把刚刚学到的东西绘制成思维导图。

不是那种边看边绘制,而是拿出一张白纸,写个标题就开始回忆

这种结构化的增强记忆方式,既可以让我更好的理解所学内容,也可以让我记忆得更加深刻。

要点就是,不要等到学的量超过了你的Working Memory容量再去回忆。要每隔一小会儿就总结一下,记在纸上,让大脑可以迎接新的任务。不要等到桶都满了,水都漫出来了,才想到去换一个空桶接水。

这点在操作上,与番茄工作法有一些相似。不过working memory一般时间间隔更短。而且主要以回忆、头脑中总结转述为主。

如果你发现你回忆不起来,思维导图绘制不下去了,那么说明你的Working Memory容量已经爆了。

动手尝试,看看你在之前的学习中做了多少无用功。

一起学,无论竞争 or 合作

根据社会发展理论(social development theory),合作是一种有效的学习方法。可以取长补短,而且无形的竞争压力刺激你更努力。选择的合作对象,最好符合 “她/他在某些方面比我强得多,我在另一些方面比他/她强得多的特点“ ,注意是水平相似,风格迥异的学习伙伴为佳。

具体操作:比如写文章,就找一个跟你风格差异比较大的同学,两人互改。学数学,你擅长几何,就找个擅长代数的同学,互相看彼此的解题过程等等。如果你本人拖沓但是注意细节,就找一个速度特别快但是细节不怎么精致的同学作为学习伙伴。

针对编程来说,如果你的理论功底较深,编码能力较弱,那么就找个相反的同学来一起学习。

在合作的过程中,最差的就是分工完,各做各的,然后组合到一起。等于浪费了相互学习的机会。

应该做的是:时刻观察对方的学习/工作方式。(对方用什么工具?对方怎么解决问题?怎么分配时间?怎么决定这个问题的主次?)

大部分人学习做事都是拿到任务蒙头就做,做之前也不问,做完也不总结。

与人合作学习时,要经常问对方“如果你遇到我手上的问题,会怎么做?”。比较一下对方说的,与自己的学习/做事方法,哪个更有效率。再动手做。做完回顾总结。

有人说,如果找不到这样的学习伙伴怎么办?

可以远程,现在网络这么发达,网络是用来干嘛的?很多的互动学习网站,社区(豆瓣知乎等等),自己去网上“物色”合适的学习伙伴主动出击吧。

比如前阵子,我发了篇MIT 操作系统课的教学文章,就有小伙伴希望我能建个群。不过我看反响不是很剧烈,可能有意愿的同学不是很多,就暂时搁置了。大家完全可以先从身边同学找起。

0x04

当然也希望哪天我的号召力足够了,可以更好的帮助大家去构建这些社群。

我是菜饼,我们下期见。

以上是关于学不进去,程序员该怎么学习?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2017显示的错误怎么办?小弟刚学不懂。

前端学不动了怎么办?3年,5年,10年,都需要规划!

前端学不动了怎么办?3年,5年,10年,都需要规划!

当活动被破坏但我必须继续执行片段中的代码时该怎么办?

拿来即用学PYTHON:序

求C语言程序:如何获得一个程序运行的时间? 最好带一段简单的代码 新人学不懂 呵呵 谢谢大家啦