想要考虑所有情况而焦虑该怎么办?

2020-10-09 22:51:46 +08:00
 raaaaaar

自从我变成重度的笔记用户后,我学习一门知识,会试图把所有的可能性都学一遍,但是知识细节总是那么多,而我学的东西又很碎片化,这使我非常焦虑,我感觉自己会的东西非常少。

比如之前学链表时,想把静态链表动态链表,单链表双链表,它们的所有操作都学一遍,而我学这些都是一个个画图慢慢来得,我学了很久,但是才过了一半,后来我发现就是一个普通的语法,要把他所有的可能性都列出来,也是非常复杂的一件事,比如我曾试着把 channel 所有阻塞通过情况列出来,后来我发现哪怕是一个简单的 switch 语法,也有很多种情况,有没有变量,变量声明否,多 case,加不加 default,用不用 fallthrough,break 等等,所有的情况都是指数级的,我开始意识到自己这种学习方式出了问题。

我为什么要试图这么做?我是一个完美主义者,以前有过严重的焦虑症和强迫症,而对于这个学习方式,我是出于这个考虑:

编程知识是非常多而碎片的,我们的大脑的空间又非常有限,因此我们不应该试图去记忆这些知识,我们要达到这个目的:看到某个知识,我们知道他是什么;我们能够自行查询解决这个问题。

那我们大脑中应该有些什么知识呢?我认为是知识的索引,那问题就是怎么建立这个知识的索引。

我试图这样做:

1.遍历所有知识,建立缓存,我们的大脑会自动忘记那些不常用的知识。

2.建立知识体系,深入而又通俗易懂的理解知识,知道知识的所属结构。

试图遍历所有知识,就是为了建立知识缓存。

但是因为知识的锁碎,很多时候我们会陷入知识细节本身中,会变成这样:只是罗列知识,只是对只术语进行解释。而这会导致知识无法建立体系,我们很多时候不知道自己在说些什么。

我会怎么做:

  1. 建立知识体系

2.学习知识时,知道自己学的是什么知识,知道它是哪一层次的知识。

3.列出重点,难点,常用知识,重点学这些知识。

3743 次点击
所在节点    程序员
30 条回复
RedBeanIce
2020-10-10 09:23:07 +08:00
选择最重要的事情去做,对于每个人来说,放在自己面前最重要的事情都不一样。

对于学生,这么研究没什么错误。
但是对于工作党,这么学习可能就不一定对了。

针对自己的情况,选择。所以,选择比努力更重要。
XiLemon
2020-10-10 09:56:13 +08:00
先整体再细节吧
buzailianxi
2020-10-10 09:59:44 +08:00
选择比努力更重要,就是选择一个最快,利润最大,最省事的道路去走。
wutiantong
2020-10-10 10:06:35 +08:00
所以我不赞同记笔记的学习方式。
像你这样如此机械化地学习知识,完全就是舍本逐末。
keymao
2020-10-10 11:29:34 +08:00
人的精力很有限,人的寿命更有限。

人的一生为什么需要做选择,因为你的生命和精力都很有限,你只能有所舍弃。
vanxy
2020-10-10 11:30:23 +08:00
学习不是知识的堆砌. 而是需要在脑中构建出一个概念.

比如链表, 当你脑中有了链表这个概念时, 就算你从来没有了解过双链表, 但是你只需要搜索一下双链表是个什么东西, 几分钟后, 你就已经理解了双链表了, 甚至脑中已经能想出他是怎么实现的了

人脑适合运算,而不适合存储.
InkAndBanner
2020-10-10 11:35:28 +08:00
确实很容易沉溺在细节里。如果楼主去看源码。。。难以想象了
raaaaaar
2020-10-10 13:51:17 +08:00
@kuangwinnie #2 还是本科计算机,的确没学过更后面的数学了

@chocovon #6 要实践,这个的确,经常用到那些的就算不特意总结,也能写个大概

@laminux29 #10 的确是很全面的,我日常和别人交流,或者实际应用到的都是很小的一点,这我也能体会到,不过我也不是一直都是这样,有时候事情多了,一焦虑就管理不过来,就想面面俱到。

@laqow #12 这些知识的问题本来就是一直存在的,哪怕我们不去接触,也存在,总不可能全都掌握吧。

@cassyfar #13 我最近在写 go 的简单课件,我其实是在更多的在文字上,从符合人脑认知的方式来讲的,也不想单纯罗列知识,但是有时一看感觉自己写的又太少了,因为我过去学都是一来就把这些情况过一遍代码,感觉有点脱离代码,又考虑到有些的确是平时会用的,一加又是一大堆,有些冲突。

@ljpCN #14 的确不是时刻都这样,有时候学这些,学得比较深入了我就会有些焦虑,适度的焦虑也有好处,能给我们压力,回头看有些知识我掌握得也挺全面。

@marat1ren #15 的确是这样,完成任务和学到知识,我有时候无法忍受知识断层,所以我想要的是学懂知识,但是很多时候别人要的只是能跑起来,怎么管理这两者我也在学,

@beidounanxizi #16 也不能这么说,lc 我也一直在学,但是这是思维上的问题,语法本身的确没啥技术性,但是也要过一遍吧,多放时间在重点上,这我有点想法。 有些东西不罗列知识,而从原理上看,这的确是个着手点。

@secondwtq #17
的确是个左手点,为什么有这个东西,自然而然引出这个东西,知道这个考虑的方向,具体的细节反而可以忘记。

@rodrick #18 按知识体系去学是挺好,但是这有点难以做到。

@XiLemon #22 嗯

@wutiantong #24 这我就不赞同你的观点了,我并不是完全这么单纯罗列知识,我学这些也是从顶向下学的,知道自己学的是哪一层词的知识,只是到了这一层细节比较多而已,而记笔记的方式就不说了,只有记过的人才能体会它的好处。

@InkAndBanner #27 我看过源码,有时也经常出现那种 a->b->c 这种知识的缺漏,感觉有些舍本逐末了,也在改。
zwnozhuce
2020-10-10 16:42:24 +08:00
逐渐积累吧,你要明白的是你最终是为了解决问题的,而不是单纯的学习知识,学习用知识解决问题的能力。
raaaaaar
2020-10-20 17:37:22 +08:00
时隔半月,还是来回复一下吧,最近我又学了一些东西,有了这个意识后我,我的理念改变了许多。

最近我在学习 string 匹配算法,我先学了整体的框架,搭了个小体系吧。重点了解了模式匹配有哪些,它们的原理不同,区别,时间复杂度等等,没有一来就深入源码或者画图看细节。

现在我感觉没那么容易就陷入 kmp 的细节了,kmp 有很多细节,又有一些改进的方法,但是我学的时候知道自己在学些什么,我要掌握的是什么,而不是想要所有的东西都学一遍,为了学而学。

现在回想我以前学线性表的时候,也只能记起他们的原理,分类,大概应用,时间复杂度这些理念上的东西,但是要让我忽然写个顺序队列的入队出队操作还真不行,毕竟不是天天都刷题的竞赛党,但是我平时在遇到它时,我知道它的很多东西,要用的时候随手就能看懂源码。

我想这才是我们学习这些东西的原因吧,我们又不是为了记住所有代码细节而去学这些东西的,知道它是什么,它的原理,作用这些就够了。

回想起来我为什么会试图搞懂所有细节,原因之一应该是,我接触到了画图这个工具,变成了重度用户,我总有一种自己效率更高的优越感,总想学好证明自己,这使我有些过于关注细节了。

最近我在学校做项目读别人源码也有些体会,怎么实现的的确真的没那么重要,重要的是,怎么解决这个问题,怎么高效的解决这个问题,细节本身,无关紧要。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/713465

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX