how to read a book


How to read a book

这是university of Michigan 大学的一个教授写的如何看一本书, 当然也可以用来看论文, 看资料等等, 但是这种方法肯定不适合用来看小说. 我觉得里面讲的一些方法其实我有在做, 有些方法我没做到. 下面介绍一下里面的方法, 当然这里的读书指的是非常功利的读书, 不是读小说. 原文

整体

读书的目的是为了学会, 了解书上讲的知识. 并且尽可能的花更少的时间去达到这个目标.

整体的方法就是带着问题来读书, 所以你绝对不能从头读到尾的方式读书, 应该是跳来跳去, 按照自己的目的去发现, 去理解, 去记住那些你想要的知识, 这样就可以在尽可能短的时候获得你想要的知识点.

我自己的经验就是比如我读csapp的时候, 刚开始读的比较吃力就是因为从头开始往后读, 因为一开始就将cpu的体系结构, 其实看起来很懵逼. 但是从后往前度, 从Application => os => Architecture 就顺很多的. 比如读ulk 的时候, 最早也是按照书上的章节读, 后来发现讲内存, 下一章又开始讲锁, cpu调度, 进程等等发现了解的也不是深刻. 后来使用的方法就是把内存相关的章节一起看了, 比如2, 8, 9 然后对内存有了解了, 再去看cpu 相关, 再去看设备相关的, 自我感觉还是比之前的方法好

那么如何跳来跳去的看书呢, 肯定不是一开始就可以跳来跳去的看的.

具体做法
  1. 通读全文

    整体把握重点比深入细节要来的重要, 因为无论你看的多认真, 很多时候细节还是需要回头再看的. 但是你知道整个书的主要的问题, 很多细节当需要的时候再去差就行. 比如看ulk 的内存相关的时候, 你知道在kernel 内部, 内存申请的方法有3种,kmalloc, slab, vmalloc. 具体有问题需要你排查的时候, 你再去深入去看slab细节, 这个时候你会记得更清楚

  2. 决定你打算花多长时间在这本书上

  3. 带着问题去读书

    带着问题去看书会让你对想要了解的问题记得更加清楚

  4. 多个别人交流

    不要一个人看, 多和别人交流.

  5. 了解这个书的作者或者这个组织

    这点其实我一直没做到. 作者和正常人一样, 她的观点一定是形成一定是受的教育, 他的工作, 她的以前生活, 他的经历所形成的. 具体的做技术书籍就是他之前做过什么, 主要解决哪些领域的问题等等

  6. 了解知识背景

    我觉的这个和了解作者类似, 就跟看文献的时候一定要看背景介绍一样, 不然不知道要解决什么问题就开始看会懵逼

  7. 好书读三遍

    这个是重点, 那就写三遍. 这个也是我自己的切身体会

    好书读三遍

    好书读三遍

    好书读三遍

    1. 整体快速通读.

      这个时间占用读整个文章的10%, 快读了解这个文章的主要内容. 通读重要的标题, 段落. 对应于我们经常的读文献, 我喜欢的做法就是看第一节Introduce, 第二节整体实现, 然后直接看最后一节conclusion 这样就大概知道这个文献讲什么

    2. 细读.

      在第一遍的基础上细读, 这时候你再去细读文章, 因为有了整体的脉络, 不过看到具体结构设计的时候很懵逼, 这一遍就是要掌握这文献的主要内容了

    3. 复读并且记笔记

      记笔记和划重点还是不一样的, 记笔记和划重点是不一样的,记笔记和划重点是不一样的.

      因为记笔记使用你自己的语言结合你自己已知的内容框架把作者的观点吸收到你的框架里面. 所以要尽可能用你自己的语言. 直接把作者写的内容拷贝粘贴过来肯定是效果不好的. 一般来说100页的书, 这个时候之下来只需要1-3页的内容. 太多了也不好

  8. 时间

    一般来说我们的注意力在1个小时以后就会不集中, 因此连续看书3个小时的效果是不如3个分开的一小时来得好. 并且读书消化也是需要时间, 分开时间会在下一次开始的时候逼迫自己去想上次的1个小时读的内容, 加深印象

  9. 关注重点内容

    一般来说目录表, 图, 图表, 标题包含更多的重要内容. 一般来说一个文献都是漏斗结构, 也就是我们常说的总-分-总结构, 因此开始和结尾总会包含观点, 中间的一般是具体的验证, 实现过程

  10. 多做标记, 但不要标记太多

    我现在看pdf 一般用skim, 然后里面的高亮标记功能还是很不错的

  11. 用各种方式回顾你学到的内容

    因为读, 写, 说, 听, 想象是脑海中的各种部分. 尽可能使用各种方法回顾你学到的内容

不断练习, 不断练习, 不断练习…