之前我的校招生问说:“没有好的学习方法很苦恼”,希望能帮到你

168 阅读4分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」。

之前一篇提到过一句很多“校招生学习方法原始”,有同学产生了共鸣回帖提问,这里想介绍一下如何学习,希望能帮助到这方面有困扰的同学。

先说一下学习如何“学习”学的是什么。一般学习的目标,大概有这三层:最底层就是学一些工具使用方法,中间层就是学习一些原理知识,最上层是要学习智慧或者说逻辑思维。

每层都按二八原则分,底层大概应该有80%的人吧,中间层有16%的人,最上层有4%的人,其实按实际观察,感觉比这个估计结果会更差一些。很有辅导经验的“老程序员”预计到了有些同学会不太明白,接下来要举例子了:

比如学习“SQL优化”。

有一些同学,就开始google学习法了,一搜一堆的“7条SQL小技巧”、“15条SQL优化tips”、“100条优秀SQL案例”等等,看起来很美好,跟着学就好了,这些同学一天前进三十公里,日复一日的每天记10个小技巧,遗忘率50%(这个遗忘率应该高估了大部分的人),非常努力学习100天后,大概会学并记住了xx(十分钟时间要抓紧码字了)个小技巧。这个过程中也可能会很感动自己“我好努力呀”。

还有一些同学就会好很多,学过“数据库原理”这门理论课,学了一阵子小技巧,发现“哎?和原理都映射上了啊”,开始进行归纳总结,效率高了很大一个层次。

但是同样的问题,你问你的导师(有一位好的导师很重要,讲解都是从原理和框架开始的),导师可能会告诉你:你要明白SQL优化的第一性原理是什么,基于这样的原理如何推理演绎,最终得到一套方法论,在实际生产过程中无论遇到什么样的SQL,都能迅速解决完成优化,甚至可能都没有优化SQL的机会。这样学习效率就又高了一个非常大的层次。

所以我们学习提效的目标很明确,就是应该尽可能的把自己的大脑训练的更贴近上层。所以我们学习的过程也应该是找到目标的第一性原理,然后使用自己优秀的逻辑推理能力进行演绎推理,最终形成一套普适的理论去应对千变万化的实际环境。

讲到这里应该会有同学说,“可是我找不到第一性原理啊!逻辑推理能力也薄弱啊!” ,有辅导经验的老程序员已经料到了,所以才说学习方法也是需要训练的,你的大脑也是需要训练的啊。

训练的方式也不陌生,就是一开始,从第一层“google学习法”开始,日复一日的每天学习“10个小技巧并遗忘一半”,接下来刻意的往第二层走,努力的用自己的归纳法自己的小脑袋去总结这些“知识点”

,尽可能的抽象总结的好(一开始归纳不到一起、总结不好、受挫都是正常的)。然后你发现你把200个“小技巧”总结成了10个“知识点”,接着拿出去分享交流、同时学习一下别人的知识点和理论,再次尝试提升总结,逆向的到找第一性原理。大量的科学研究基本上也都是用归纳法开始,演绎法加工,形成理论的。

咱们是技术板块,还是说回技术,之前的例子,如何学习“SQL优化”?,第一行原理就是减少I/O或资源使用啊(如果学过操作系统、网络原理和数据库原理就很容易了),I/O又分三部分磁盘I/O、网络I/O、内存I/O,资源一般就考虑CPU计算资源和带宽资源了。如何“SQL优化”就变成了如何减少I/O或资源使用了。 接下来就是看SQL语句里,哪里涉及什么样的I/O和计算了,针对性的去优化,使用一下explain工具,比如常说的尽可能扫描少的行啊,一个是减少磁盘I/O一个减少网络I/O,还有什么尽量控制索引数量啊,不要使用“SELECT *”啊,你也都很容易理解了,即便不知道什么小技巧,你也知道应该往什么方向努力去优化SQL了。 顺便说一句不要使用“SELECT *” 这种技巧有问题,可以尝试结合理论思考一下为什么。

#今日份十分钟#我尽可能的希望少的文字讲清楚,有什么问题换时间再展开聊吧。