你好,我是陈皓,网名左耳朵耗子。
如何面对枯燥的知识
首先,我们要知道,为什么会有枯燥的知识?一般来说,枯燥的东西通常是你不感兴趣的东西,而你不感兴趣的东西,可能是你并不知道有什么用的东西。这样的知识通常是比较底层或是抽象度比较高的知识,比如:线性代数,或者一些操作系统内部的原理……越理论的东西就越让人觉得枯燥。
我还记得,当初上大学学习《计算机网络》时,直接学习那个七层协议,以及那些报文,让我感觉枯燥得不行。那个时候,完全不知道这些东西有什么用,因为我连网络是什么都没有见过。直到有一天,我在老师的公司里看到了网卡、网线和Hub,然后了解了Windows NT的域和IP地址,然后用Power Builder 连上了SQL Server,用SQL写入并读取了数据,我才真正明白网络原来有这么好玩。
我开始学习《TCP/IP 详解》,又感到一阵枯燥。然后,有一个同事给我递来了《Unix网络编程》,我照着其中的例子,写了一个聊天服务器,前端用Delphi写了一个QQ的样子,那种兴奋劲就别提了。再后来,因为要处理网络问题,调优网络性能,我才发现,以前随便学了点的《TCP/IP详解》对我在排查网络问题上有很大的帮助。这个时候,我才认真地看了这本书,也正是这个时候,才算是真正读进去了。
后来,我让我团队的一个人学《TCP/IP详解》这本书,他发现有点难啃就买了一本《图解TCP/IP》。我找来一看,发现这种图文并茂的书真是增加了很不错的阅读体验,一下子就觉得不是很枯燥了。这让我回想起来那本《从一到无穷大》的相对论科普书,简单、一点也不枯燥。然而,能把这么复杂的问题用这么简单的语言讲清楚的一定是这个领域的大牛了。
我列举我的这个学习过程,就是想说,如果你发现有些知识太过于枯燥,那么可以通过下面的方法解决。
- 这个知识对于你来说太高级了,你可能不知道能用在什么地方。
- 人的认知是从感性认识向理性认识转化的,所以,你可能要先去找一下应用场景,学点更实用的,再回来学理论。
- 学习需要有反馈,有成就感,带着相关问题去学习会更好。
- 当然,找到牛人来给你讲解,也是一个很不错的手段。
如何面对大量的知识
看过《程序员练级攻略》的朋友们,一定会有这样的疑问,东西太多了,怎么学。我给你的建议是,一点一点学,一口一口吃。你可以使用我前面说过的那些方法,注重基础,画知识图,多问为什么,多动手,然后坚持住,哪怕你每周就学一个知识点,你一年也可以学到50个知识点。只要你在进步,总有一天可以把这些知识学到手的。
当然,你的目的不是学完这些知识,因为学无止境,你永远也学不完,所以你在学习时,一定不要学在表面上,一定要学到本质,学到原理上,那些东西是不容易变的,也是经得住时间考验的。把学习当成投资,这是这个世界上回报最好的投资。
带着问题去学习,带着要解决的东西去学习,带着挑战去学习,于是每当你解决了一个问题,做了一个功能,完成了一个挑战,你就会感到兴奋和有成就感。这样,你也就找到了源源不断的学习驱动力。
把你学习的心得、过程、笔记、代码分享出来,找到和你一同学习的人,因为一个人长跑很辛苦,有人同行就会好很多,就算没有人同行,你的读者,你的观众也会为你鼓掌加油,这些也是让你持续前行的动力。
人的一生是要永远学习的。加油!
认真阅读文档
我发现很多技术问题都是出在技术人员不认真读技术手册上,我自己也一样。在我的成长生涯中,我发现很多答案其实都在文档中,而我却没有仔细地去读一下。可能是,我们都不想投入太多的时间吧。
在这里,我想说,用户手册(User Manual)一定要好好地读一读,很多很多提示都在里面了,这是让你可以少掉很多坑的法宝。比如:Unix和Linux的man,Docker和Kubernetes的官方文档,Git的操作文档……你的很多很多问题的答案都在这些文档中。
举个例子,很多年前,我掉了一个坑,我把这个问题记录在了文章《 C/C++返回内部静态成员的陷阱 》中。 其中提到了一个函数 char *inet_ntoa(struct in_addr in);
,我还批评了一下这个函数。然而,只要你man 一下这个函数,就可以看到:“The string is returned in a statically allocated buffer, which subsequent calls will overwrite”。
还有,很多中国的文档都会教人把tcp_tw_recycle和tcp_tw_resue这两个参数打开。然而,只要你man 一下 TCP(7) ,就可以看到这样的描述:
你就可以看到这两个参数都是不建议被打开的。
认真阅读用户手册不但可以让你少掉很多坑,同时,还能让你学习到很多。
其它几个实用的技巧
- 用不同的方式来学习同一个东西。比如:通过看书,听课,创建脑图,写博客,讲课,解决实际问题,等等。
- 不要被打断。被打断简直就是学习的天敌,所以,你在学习的时候,最好把手机设置成勿扰模式放在一边,然后把电脑上的所有通知也关掉,最好到一个别人找不到你的地方。
- 总结压缩信息。当你获得太多的信息时,你需要有一个“压缩算法”。我常用的压缩算法是只关心关键点,所以,你需要使用表格、图示、笔记或者脑图来帮助你压缩信息。
- 把未知关联到已知。把你新学的知识点关联到已知的事物上来。比如,你在学习Go语言,你就把一些知识关联到自己已经学过的语言上比如C和Java。通过类比,你会学得更扎实,也会思考得更多。
- 用教的方式来学习。你想想,如果你过几天要在公开场合对很多人讲一个技术,那么这个压力会让你学得更好。因为要教给别人,所以,这么高的标准需要你不但要把自己已掌握的东西学好,还要把周边的也一并学了,才可能做到百问不倒。你才敢去教别人,不是么?(试试教6岁的孩子编程,如果你掌握了这种技能,那么你一定是把知识吃得非常透彻了。)
- 学以致用。把学到的东西用起来,没有什么比用起来能让你的知识更巩固的了。在实践中,你才会有更为真实的体会,你才会遇到非常细节和非常具体的问题,这些都会让你重新思考,或深化学习。
- 不要记忆。聪明的人不会记忆知识的,他们会找方法,那些可以推导出知识或答案的方法。这也是为什么外国人特别喜欢方法论。
- 多犯错误。犯错会让你学得到更多,通过错误总结教训,你会比没有犯过错的人体会得更深。但是千万不要犯低级错误,也不要同一个错误犯两次。
如果你有更好的一些技巧,欢迎你分享出来。
小结
总结一下今天的内容。首先,我先分析了为什么会有枯燥的知识。我认为,枯燥的知识通常是你不感兴趣的知识,也有可能是你不知道有什么用的东西。然后,结合自己的经历给出了面对枯燥的知识时该怎样做。此外,我们身处在信息爆炸时代,如何面对如此量大的知识,也是我们面临的一个挑战。我建议,一定不要学在表面上,一定要学到本质上、原理上,一定要学那些不容易改变,能经得住时间考验的东西。
随后,我分享了认真阅读文档的重要性,不仅可以让你少掉很多坑,还可以让你学习到很多知识。最后,我分享了好几条实用的学习技巧,这些也是我在工作中慢慢收集和总结起来的。希望对你有帮助。
下面是《高效学习》系列文章的目录。
- 太阳雪 👍(80) 💬(2)
当我学线性代数时,觉得这个东西太没用了,后来学习机器学习时,被里面的概念折磨的死去活来,回过头结合一些遇到的一些概念和感知,才发现线性代数多有趣多简单,将机器学习中复杂的计算总结的多深入。今天记住一句话:让你感到枯燥乏味的东西,是你不了解不知道的地方
2018-09-11 - 右耳朵猫咪 👍(57) 💬(1)
耗子哥一天要阅读多少资料看多少书才能给我们写出这么优秀的文章?我觉得很不可思议。
2018-09-11 - 小薛薛 👍(34) 💬(1)
一个自身很大的毛病,其实很多报错只要耐心的看英文配合翻译都知道大概了。 但是搜索软件依赖以后,遇见问题总喜欢google和百度,思考问题的能力却在降低!
2018-09-11 - Ryoma 👍(12) 💬(0)
这个模块就像软技能一样,不会直接在指定技术上有成长,但是很全面,而且有长期帮助。这里也整理了一个脑图:https://www.yuque.com/ryoma/blog/yrdtvw
2020-01-29 - Mikey 👍(7) 💬(4)
请教下996的新人应该如何成长
2019-01-22 - mz 👍(7) 💬(0)
嗯,面对枯燥的东西,我的办法通常是动手找成就感,就像耗子哥说的写这个聊天的软件。
2018-09-11 - aaronrao 👍(6) 💬(1)
现在一线互联网公司工作多数加班较多,很多都是996,留给自己深度学习的时间真的不多哈,焦虑
2018-11-06 - 小昭 👍(5) 💬(3)
先来学习了【高效学习】这部分,获益良多。 反思一下,自己之前就是过分追求数量,每天看书写笔记,但只是浮于表面,并没有多少深入思考的内容。 坚持也是,极客专栏买了很多,但是真正看完的非常非常少。 每个都想看,每个都看不完,然后开始焦虑,导致自己坚持不下去,这是个恶性循环。 人生那么长,慢慢走,稳一点,才好。
2020-06-24 - 修身 👍(4) 💬(1)
有个好导师,然后自己系统的学习真的很重要啊。
2018-10-04 - jony 👍(4) 💬(0)
很受用,正在学习新知识,还有那个函数内返回static变量的例子在真实环境中学到过很多次,最后还是选择了外部分配好空间后再传递到函数内的方法,所以亲身体验过才会印象深刻。
2018-09-11 - 微leng 👍(4) 💬(0)
有些习惯契合文中的方法,高兴😊
2018-09-11 - carl 👍(3) 💬(0)
tcp_tw_resue这里错了,是tcp_tw_reuse,不过下面有截图
2019-04-20 - limix 👍(2) 💬(1)
从毕业到现在也有十多年了,先是做java web应用,工作流开发,应用平台,全文搜索引擎,转大数据,后来高性能dpdk协议开发,做云原生,无服务,机器学习。越发觉得知识体系的庞大,有时候会让人望而却步,看了您的体系,那就更要命了。怀疑技术这条路还能不能走的下去,人到中年不如狗,如何面对量大的知识,总希望一切了然于心,刷知识,然后会疲惫。那我按作者的思路,试试画知识地图,学到本质,浓缩
2022-02-17 - escray 👍(2) 💬(1)
现在知识确实太多了,想要学习的点也不少,无论是练级攻略,还是极客时间已购买的专栏,都在好像在催促我。然而,“生有崖,而知无涯”,我也只能一点一点看过去,日拱一卒吧。 关于认真阅读文档,我觉的可能还需要判断用户手册的质量是否足够好。 从 8 条实用学习技巧中挑出 3 个可能更适合我的:多犯错误、学以致用、多种方式学习。 果然是高效学习中留言最少的,虽然只比上一篇少了 2 条。我来留言,其实是为了极客时间的“8天学分挑战”,虽然估计我最终也就是拿到一个免费学权益。
2020-11-06 - Geek_e99103 👍(1) 💬(0)
不要记忆,这点说法有不妥,改成不要死记硬背、不强迫记忆等,原文 是说不会记忆知识的,他们会找方法,那些可以推导出知识或答案的方法。这也是为什么外国人特别喜欢方法论,建议作者这个观点重新表述一下,说的是这个道理,懂的都懂,字词还是温和点嘛。
2021-04-20