一个月前的一次面试,对方问我一年看几本书。
我一年看的书大概在50到70本之间,不过绝大部分都跟计算机技术无关。很不好意思地回答说:“跟技术有关的,很少。”之所以不怎么看这方面的专业书,有两个主要的原因:一是因为负责的工作业务性强,不需要频繁更新技术栈;二是因为之前看过几本,都不是很感兴趣。这一个月来,因为要跳槽的原因,我接触了大概三四十本左右的技术书。其中,买回来十几本,仔细读了其中七本书。
之所以能看得进去,首先是得益于这几年来把大量业余时间放在看书和写文章上面,阅读的耐性和理解的能力都有所增强。书作为一种信息的容器,虽然讲心理学的书、讲社会学的书跟讲编程的书、讲计算机技术的书很不一样,但都有着不少的共同点。
写这篇博客,希望能跟大家分享一些阅读过程中的思考和感想。
很多程序员买了书不看,不是因为懒,而是因为有些书太烂。
好书有各种各样的好,而烂书的特征却几乎都是相同的。我这次在亚马逊退了将近十本书,它们的缺点基本上都是一模一样。
阅读体验差。不知道是不是因为想省钱,书的质地跟盗版书有的一拼。书页泛黄,字体难看,排版糟糕;作者的表达能力低下,连简洁和准确地讲述一个核心概念都做不到,让人很难有继续看下去的心情。
逻辑性弱。一本好的书,应该做到章节与章节之间有连贯性,使得阅读坡度平缓,信息密度才会高。但是很多烂书是东讲一点,西谈一些,整本书看下来不知所云。
思想层次低。讲解各种著名开源框架、开源组件的书非常多,但是其中很多书都只是在讲怎么用,简直就像精简版的说明文档翻译。其实,把“为什么要用”和“这样用有什么好处”这两个问题讲清楚,更有价值。
在所有书当中,好书所占的相对比例肯定不高。但是在绝对数量上,值得我们买回来看、花时间学习的好书却不少。
如何判断一本书是不是好书呢?基本上只要花最多半个小时翻一遍,就能确定答案,准确率随着你阅读数量的增加而升高。
阅读体验好。基本上看完前言和第一章就能知道好不好,就像我们用一个手机上的软件,只需要很短的时间就知道用户体验是不是及格。
逻辑性强。看完整本书,如果章节与章节之间联系紧密,读完前一个章节有助于读后一个章节,基本上可以判断这是一本有条理的书。
思想层次高。我们看的很多书都是讲某一项或某一类具体的技术,但是如果它们在讲解技术细节之余还能拔高到更高的层次,提取技术之间的共性,谈论技术的思想,则有助于我们更深入理解这些技术,而且在学习其他的新技术时也更为容易。
在这一个月看技术书的时间里,我经常会跟之前看非专业书时的阅读经历做对比。下面谈谈我自己认为在阅读技术书籍时可以借鉴的几个基本方法。
一、浏览。现在我们都基本是在网上买书,所以可以先看看别人的评论和网站给出的目录、书摘。在一轮筛选完之后,把买回来的书都快速看一遍。看第一遍的时候要快,不要看得太仔细。如果是烂书,立刻扔在一边或者申请退货。如果是好书,你就能有一个大概的印象,有助于进行下一个环节。
二、细读。在把书浏览过一遍之后,我们可以开始认真地读,阅读速度也要相应地降下来。在阅读的过程中,我会习惯于把认为重要的句子和内容划线,也会把暂时看不明白的部分做上记号。这不仅可以强迫自己保证阅读的投入程度,还对进一步的学习有帮助。
三、研究。能经过筛选进入到这个环节的书已经相对不多了,基本上能确定这是一本对你来说非常重要非常有用的书。我读书一般最多读三遍,在读第三遍的时候花时间是最多的,而且远比前两遍要多得多。这个时候要做笔记,把你认为重要的内容都摘抄下来,或者裁切下来。虽然现在笔记类应用很多,例如印象笔记、One Note和Bear等,但是我还是比较推荐大家考虑使用纸质笔记本来做读书笔记,记忆效果特别显著。
程序员很多都有看技术博客的习惯,而且也有很多优秀的博客达人为我们提供优质的内容。但是,书籍作为另一种信息容器,跟博客这种形式的信息容器是有本质区别的,而且能发挥的作用也不一样。
下面推荐几本我认为值得读的好书:
前两本不是专业书,但是我还是推荐程序员们都看一看,非常值得一读。剩下的都跟Java有关,因为我本身是Java开发方向的。
书单纯属抛砖引玉,希望你们可以在评论区说一说自己认为好的技术书有哪些。
如果你喜欢我的文章,可以扫描关注我的个人公众号“李文业的思考笔记”。
不定期地会推送我的原创思考文章。