如何阅读技术书籍?
在我看来,阅读技术书籍,分为三个阶段。
- 选书
- 读书前
- 读书时
选书(技术书籍)
对书籍的选择,人们往往有两个趋势:
- 经典、经过时间验证、口口相传的书。
- 更新、不落伍的书。技术的发展极为迅速,稍微过上两年,前几天买的书便成了落伍旧物。
至于具体如何选择,依据书籍本身的分类而定。
书籍的分类,在下文有有所介绍……
但不管是选择前沿的,还是经典的,参考下面的建议还是不会错的:
必须是优秀的书籍
- 很多书外包装光鲜亮丽,内容漏洞百出,缺少自身特点。
- 选择一本差劲的书不光无法教人,反而害人。
- 如何辨析一本书是否优秀?
- 知乎、豆瓣、亚马逊,当当上大家对书的评价。
- 也可以看看电子版本。
- 不过长时间盯着计算机是件很摧毁身体的事情。
- 很多书外包装光鲜亮丽,内容漏洞百出,缺少自身特点。
同类书籍,贵在精,不在多
- 百度、谷歌这样的存在,很多书籍买一本书就可以了。
购买和自己学习方向相关的书籍
反义词就是:“不要买和自己主要学习方向无关的书籍!”。
不要看到别人看Java,自己也想买一本。
但是自己目前在学习C/C++,这样造成的结果无疑会是:
知识层次混乱,学习效率低下。
即使勉强看得下来,也要挤掉学习主要方面的知识的实现。
久而久之,就成了十八般武艺,样样稀松。
会用40种编程语言输出“Hello World!”一点都不酷!
认准一个方向,好好把它学好,真的需要扩展知识点,再在原来的基础上进行横向扩展。
读书前
强烈推荐使用视频入门
- 扫清关于一些基本词汇的解释问题
- (有信心可以直接跳过这一步)
- 切记不要在视频上停留太久。
不要在视频课做出以下行为:
- 将视频中的所有知识点都仔仔细细得整理成笔记:
- 太浪费时间
- 好的教学视频,最关心的往往是教你:
- 如何入门
- 建立基础的知识框架
- 强迫症,不懂得快进、跳过:
- 许多视频(特别是大学公开课),总会在前面说些基础(IPO、冯·诺依曼),而这不免会造成相同的内容重复听的问题。
- 专门读一本计算机导论方面的书籍,比反反复复听那些烂大街的基础要有用得多。(《图解TCP/IP》《程序是怎样跑起来的》……)
可以报名一些网课(免费的大学先修课就不错)
- 出现无法理解的知识点,而又无法通过搜索引擎查找时,可以在讨论区里发帖询问。
书的类别
不同类型的书,有不同的读法
个人意见分的,不专业
从大方面定义:
- 语言方面的书。比如C、Java、Python等等
- 练!
- 不要陷入语言的细枝末节中,盯着一个地方使劲的看。
- 尽可能快,防止看了后面忘了前面,导致前后知识不连贯。
- 看技术视频时,不要当看电影。一会暂停接个QQ、一会看个网页的。
- 这样的做法是完全被动的接受
- 代码是敲出来的,不是看或者听出来的!
- 英语是同样事情,必须将自己置于一个语言环境中,然后用出来。
- 算法书籍。《算法导论》、《编程珠玑》等等
- 理解+运用
- 学算法不同于学语言,学算法最重要的不是记忆,而是理解。
- 理解算法没什么好说的:
- 悟性
- 坚持
- 为什么强调运用?
- 因为算法这种东西本质上是比较难理解的
- 算法一旦理解后,要马上投入到不同的环境中运用
- 算法书后面的习题
- 很多高校的ACM OJ
- 通过算法可以加强记忆
- 有时可能算法忘了,但是解过的题记住了。
- 人们总是难以记住抽象的概念,而对具体的东西记得比较牢。
- 某一特定类别的书。比如操作系统、编译原理、网络、Linux内核、服务器原理等等需要很大的精力才能彻底掌握的书。
- 这类书,一般都是理论性较强,难以消化,短期内看不出多大价值。
- 对此书的理解决定你是工程师还是程序员。
- 针对此类书,要么不读,要读至少读三遍!
- 书读一遍,往往只能吸收10%的知识。
- 读两遍、三遍。所吸收的知识就能成倍地增长。
- 在读下去,就不止是简单地吸收书本身的知识了,你就会形成自己的思考。
- 也就是古人的“读书百遍,其义自见!”
- 所谓的三遍读书法,其实是对投入与产出的一种权衡。
- 谁都知道读得越多越好,但是现实往往很难有足够的时间反复去读。
从内容规划定义:
- 说明书型:
- 恨不得把所有的东西,每一个参数,每一种命令都罗列的整整齐齐
- 这类,不值得从头到尾的细读,甚至不值得买。
- 可以直接用API、或者帮助文档就可以了。
- 这种书是用来查的!
- 基础理论型:
- 软件开发领域经久不衰的经典。
- 数据结构、算法、图形学、设计模式、分析模式等。
- 读起来很费力气,建议在余有时间的情况下去研究。
- 不要有太大心理压力,计算机本来就是一门博大精深的学问。
- 唯一需要认真研读的书籍(其他大多数,视频入门,观其大略,用时按需查找即可。)
- 操作指南型:
- 一步步带你操作,从实践中总结理论,各种XX in Action、XX cookbook等都属于此类
- 看书上操作,不如看视频来的直接痛快。
混合型
- 融合了以上所有类型的书籍
- 有基础理论、API说明\部分操作手册
- 读的时候识别,采用不同的读书方法
读书时
带着问题去读,设定明确的目标:
- 阅读这篇文章的最终目的是什么?
- 如果无法达到,也就没有看下去的必要
- 这篇文章对自己有多重要?
- 我需要的是多详细的信息?
- 为了达成目的,我现在需要花多少时间?
尽可能快
- 后面读起来缺少连贯性。
- 很久没碰这本书时,再看后面章节的时候,最好先翻下前面的章节,有个预热。
没读完一篇文章,做一个小小的总结与肯定
读书抓住重点
- 大多书籍喜欢由浅入深、
- 并非不好,但对于有些基础的人而言太过基础的东西反而会显得无聊。
- 看书一般直入主题,直到找到重点知识。
- 细节类的东西,需要在反复的实践中体会,然后反复的看书。
对于IT方面的知识如何才能理解?
- 多实践
- 反复看书,反复阅读
- 思考
- 做笔记也很好
强化知识层次:时间+反复阅读+做题。
- 实践
- 最关键的一步,是对这个东西充满兴趣。
- 反复阅读
- 反复阅读一本书(前提:这本书很经典)可以有新的发现。
- 知识层次的提升,会让阅读的体验截然不同。
- 同时还可以加强记忆。
- 做题
- 做题是为了巩固知识,不是为了应付考试。
如果一篇文章对你有用,最好能间隔一晚上是最理想的
- 这段时间是知识的成熟期
- 尝试问自己关于那篇文章的一些内容。
- 提出问题时,重在在于不要急着找到答案。
- 注意阅读坐着的思考流程
- 能够做脑图更好
多去读读英文原著
- 国内很多翻译超烂。
- 提升你的英语水平。(包括单词,以及思维模式的改变)
- 迟早都要读英文,还不如早点看。
关于英语书籍
- 先克服心理这一关
- 一边读,旁边手机备着翻译软件
- 建议爱上不要挑选太难的,中英文对照度效果更佳。
- 英文书非常忌讳一个字一个字去读,太累人了。
- 妄想通过一本书来提高英文水平,只会带来浓烈的挫折感。
- 想着读书能给自己带来技术和英文上的进步就可以了。
- 不要什么都不懂就去看未知领域的英文书。
- 读的时候一代码为导向,详读标题,略读内容
- 以代码为导向
- 有基础的情况重点阅读每一段代码,这样大多数时候就不需要再细读里面的讲解了,读起来会更轻松。
- 详读标题
- 一本不错的书,小节的标题代表了这一小节的内容
- 读完后做少量的笔记加深记忆也是不错的。
三遍读书法?
第一遍
尽可能在较短的时间内过完这本书。
这一遍中,不要陷入某个具体的知识点。
- 目的是能把握每个章节的重要知识点,记住,是把握,而不是理解透彻。
- 第一遍讲究的是快、高效。
- 千万不要拖太长的时间。
- 对第一遍读完后的“成果”要牢记,最好把它记录下来,因为这是整本书的骨架。
第二遍
- 讲究慢、理解。
尽可能地把知识点都理解,千万不要贪快,不要将就进度。
所谓“欲速则不达!”
实在有不懂的点,可以放放,等看到后面了再回头来理解一下,或者请教一下其他人。
不建议边看边做笔记,最好在读完每一章或者每一节后,把书合上,然后在脑子里去回忆看过的部分,尤其是重点知识点,将其记录下来
(个人推荐写博客。千万别觉得自己水平不够,不好意思写。记住,写博客不仅仅是为了给别人看,更重要的是对自己学过知识点的一种思路上的整理)
新手往往觉得写博客很费时间,但是相信我,如果你真的用心在写博客,它绝对不会辜负你的这些时间的!
这一遍结束后,可以看看自己写的博客,不用急着读第三遍。
第三遍
读完第二遍后,建议先放一放。
- 人的大脑还是需要一些时间来慢慢消化的,哪怕是潜意识的。
放置的时间,可以去看看其他书。
读第三遍时,一般会显得比较轻松
- 这个时候不仅能巩固之前的知识。
甚至还可能会产生新的想法
-
举例:
看过操作系统的理论知识后,会好奇它究竟是怎么工作的,会产生去源码的冲动。这就进入了第二个境界。
- (当你研究过源码再来看操作系统的理论书籍时,甚至能知道哪些书写得好,那些不好。)
哪怕对于这些理论性强的东西,要想真正得理解它们,还需要动手实践。
- 学操作系统可以看下源码
- 学编译原理可以试着自己做一个小型编译器
- 学网络原理可以自己搭建网络环境加深对网络的理解。
- 陆游有云:纸上得来终觉浅,绝知此事要躬行!