我一般选书的途径有三个步骤:Step1:广撒网根据想看的技术主题,在 google 搜索引擎中,搜索相关的关键字。有时候我会特意加上 CSDN、知乎等关键字,这两个平台中,推荐的技术性书籍质量都是比较高的。另外,需要注意推荐者的一些背景资料,你可以浏览一下他的一些文章,从文章内容中如果能判断出作者的专业深度、广度都比较厉害,那么他的推荐权重就比较高。基本上看了十几篇推荐文章,就可以梳理出这个技术主题排名靠前的几本书了。Step2:看评价针对梳理出来的几本书,到豆瓣、当当网上找一下对这几本书的评价。咱们都知道,现在的购物网站上刷好评的比较多,但是好在对于书籍这样的商品,我感觉刷单的很少,也就是说别人对一本书的评价,基本上可以认为是客观的、基于事实的。大家一般都会从书籍的覆盖范围、难易程度、自己从中的收获,这几个角度来对一本书进行评价。在这个步骤中,我们就可以对基本候选的书籍在心中有个分数的排序。注意这个排序不是绝对的按照内容的深浅,而是根据自己的专业水平,来确定哪一本书与目前的自己最匹配。这个时候千万不要高估自己,选择最难的那一本,如果这么做了,不仅仅是浪费时间的问题,更重要的是会导致自己一知半解、严重打击自信心。经过这个步骤之后,其实已经能够决定要买哪一本书了。如果排在第一和第二位置的这两本书,在我的心中评分差距比较大,我会直接选择评分最高的第一本书。如果它俩感觉差不多,那么我会继续下一个步骤,翻一翻样张,看哪一本书的风格更适合自己的胃口。我之前在学习 C 的时候,下面这两本书最后作为候选:后来在搜索对它俩的评价时发现,第一本书的理论性更强一些,而当时我的主要目的就是系统的把 C 11 版本的语法掌握好,因为脑袋里理解的 C 已经快变成老古董了,11 版本中的很多语言让 C 几乎快变成一门新的语言了。第一本书与我的目的更匹配,所以我就选择了这一本。Step3:对胃口在很多卖书的网站上,都会提供目录以及一些样张;如果找不到,那就搜索一下是否可以找到 PDF 文件来浏览一下。主要的目的就是看作者的写作风格是否对自己的胃口。两本难分伯仲的书籍中,选择自己喜欢的风格,学习起来也会更带劲一些,因为情绪的力量是无法估计的。注意:不要贪多,只要以其中的一本作为精读的教程就可以了。如果两本你都喜欢,可以都买回来,以其中的一本为主要学习目标,其他作为交叉参考。另外,我个人还有一个感觉比较不错的选书途径,那就是 B 站的视频评论区。现在的 B 站,真的是如日中天,从中年油腻大叔到各种二次元,都可以在这里找到自己感兴趣的视频内容。而且 B 站也是我们技术开发人员的福地:越来越多的高质量视频课程都可以找得到,例如:李治军老师的操作系统,侯捷老师的 C ...在看这些视频的时候,你不妨多看一眼后面的评论,与这个视频相关的其他视频、书籍、博客等等,都有可能被推荐,而且推荐的内容质量一般都比较高。
3. 电子书 or 纸质书
每个人的看书习惯都是不同的,有些人喜欢看视频教程,有些人喜欢看 PDF 电子书,有些人喜欢看纸质书籍,每一种都各有优缺点。我看书比较喜欢做笔记,如果是 PDF,就在学习过程中画思维导图;如果是纸质书籍,我就会在书上写写画画、记录自己的理解。根据个人的经验,如果是很厚的书籍(超过 500 页),我会尽量选择纸质书。因为在学习的过程中,难免会回过头去参考前面的内容,用纸质书籍就比较方便了,只要记住页号,或者放一些书签,很快就可以找到。如果是 PDF 的话,那么得用鼠标下拉、滚动多次才能定位到前面的内容,很不方便,特别是需要多次来回参考的时候。如果只能选择 PDF 的话,那么就推荐你多用一些屏幕截图工具来帮助你阅读,例如:Snipast、Quicker,我之前推荐过第一款软件,的确很好用,特别是在看文章、写代码的时候。
三、读书
1. 不要怕弄脏书
我是比较喜欢买二手书籍的,有的时候买回来一看,除了前几张有少许的划线和笔记之外,其他部分就跟新书一样,真的是糟蹋了一本好书。但是到了我手里之后,如果是作为精读教材的,我大概率会把这本书弄得“满目疮痍”。这不是说不爱惜书本,只有做了大量笔记之后,才能记录下自己的学习过程。如果认为某一本书是经典想收藏,那完全可以买 2 本,一本用来学习,另一本用来收藏。下面这张图是 C Primer 里的涂鸦,这算是很整洁的了(请忽略丑陋的字体):