摘要
这篇文章从如何阅读书籍出发,简单讨论了如何选择书籍、是否阅读原版和阅读数量这几个常见问题,然后自己的阅读问题进行了分析和总结。
注意
目标
我是一个功利主义者(Utilitarianism),因此我认为阅读的目标在于为自己创造实际价值,所以:
一本书值得阅读,当且仅当:
我的阅读目标:
形成T型知识结构:专业知识尽可能深入,专业周边知识尽可能精炼。
如何选择?
专业书籍
专业知识尽可能深入。
我是一个软件开发者(Software Developer),因此这里的专业书籍均和软件开发有关。
这里介绍我自己用的两种方法:
根据引用列表
从一本经典书籍出发,深度优先遍历它的引用列表,通过书评和摘要了解这些引用书籍,再根据自己的实际情况决定自己的阅读次序。
这里以代码大全为例(为了方便和一致性,这里使用英文书名):
1 Code Complete:软件构建全程最佳实践指南。 2 | 3 |----How to Solve it:系统解决问题。 4 | 5 |----Conceptual Blockbusting:跳出思维的壁垒。 6 | 7 |----Mythical Man Month:软件工程不能做什么。 8 | 9 |----Programming Pearls:极简算法手册。 10 | 11 |----The Science of Programming:编写正确的程序。 12 | 13 |----Writing Efficient Programs:编写高效的程序。 14 | 15 |----Pragmatic Programmer:高效程序员的实践。 16 | 17 |----Refactoring:如何改进自己的代码。 18 | 19 |----Programming on Purposes:用正确的编程模式处理问题。 20 | 21 |----Software Tools:用合适的抽象封装复杂度。 22 | 23 |----The Practice of Programming:极简编程风格指南。 24 | 25 |---- Writing Solid Code:减少调试的时间。 26 | 27 |---- Elements of Programming Style:极简编程风格指南。
可以发现,通过代码大全一本书,经过短短两层引用联系,几乎可以找到 2004 年以前所有软件开发的经典书籍。事实上,我阅读的 80% 以上的软件开发经典书籍,都源自于代码大全的引用列表。
这种方法的好处:
我认为这种方法适用于任何需要严肃阅读的领域:
根据作者
这里以计算机书籍为例(以下仅代表个人口味):
这种方法的问题在于需要一定阅读经验,但是它非常有效——以至于不用看内容就对书的质量有七八成把握。
非本专业书籍
专业周边知识尽可能精炼。
以我 2 年前编写手机应用,学习用户体验为例:
了解设计的人可能认为上面的书单过于初级——没错,它们都是结论型或指南型书籍,没有原理,也没有论证——但这正是对于我这样的非专业者所需要的书籍:我不需要知道这些知识是怎么来的,知道怎么用足矣。
此外,受价值驱动,而非兴趣——大多数情况下兴趣只是把自己脱离当前困境的接口。
学习型书籍
学习型书籍是一种元(Meta)方法书籍:这类书籍用于提升学习能力,换句话说,就是缩短吸收知识所需要的时间。
这类书籍我只读过下面的几本,效果有但不明显:
需要注意的是,不要陷入到寻求最优学习方法的误区——Best is the worthest enemy of better。
阅读原版?
如何在翻译版和原版做选择?
为什么还有那么多人阅读原版?
越多越好?
我经常逛豆瓣,豆瓣有一个很有意思的现象就是人们喜欢去比较自己每年读书的数量,或者是截图炫耀自己读过几千本书云云。
我在这里酸一下:书的数量并没有什么参考价值,就好比无法用盖一栋大楼的砖数评价这栋大楼的质量;换个说法,Effort 不等于 Progress。
关键在于读过书的质量,吸收的程度,以及创造的价值。
此外,盲目追求读书的数量会带来另一个问题——浅尝辄止。本应花在专业书籍上的时间被分配到其它无关紧要的事情上,导致该学好的没学好,没必要的学了一滩但用不上。
总结