程序员阅读书籍:Effort不等于Progress_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 程序员阅读书籍:Effort不等于Progress

程序员阅读书籍:Effort不等于Progress

 2014/5/18 13:09:35    程序员俱乐部  我要评论(0)
  • 摘要:摘要这篇文章从如何阅读书籍出发,简单讨论了如何选择书籍、是否阅读原版和阅读数量这几个常见问题,然后自己的阅读问题进行了分析和总结。注意“如何阅读”指“Whattoread”而非“Howtoread”,MortimerJ.Adler的怎样阅读一本书对Howtoread有着精彩的描述。“书籍”指非小说(Non-fiction)类书籍。目标我是一个功利主义者(Utilitarianism)
  • 标签:程序 程序员 for
class="topic_img" alt=""/>

  摘要

  这篇文章从如何阅读书籍出发,简单讨论了如何选择书籍、是否阅读原版和阅读数量这几个常见问题,然后自己的阅读问题进行了分析和总结。

  注意

  1. “如何阅读”指“What to read”而非“How to read”,Mortimer J. Adler 的怎样阅读一本书对 How to read 有着精彩的描述。
  2. “书籍”指非小说(Non-fiction)类书籍。

  目标

  我是一个功利主义者(Utilitarianism),因此我认为阅读的目标在于为自己创造实际价值,所以:

  1. 我不会因为某本书看起来很有趣就去阅读(机会成本)。
  2. 也不会因为很多人推荐某本书就去阅读(从众)。
  3. 更不会因为某本书难就去阅读(追求智商优越感)

  一本书值得阅读,当且仅当:

  1. 它可以直接为我创造价值。
  2. 它可以间接为我创造价值。

  我的阅读目标:

形成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% 以上的软件开发经典书籍,都源自于代码大全的引用列表。

  这种方法的好处:

  • 简单直接:相对于从茫茫书海里找出 10 本经典书籍,找 1 本经典书籍再从它的引用列表里面找到 20 本经典书籍要容易的多。
  • 质量保证:靠谱书籍的引用书籍的质量一般都很高。
  • 发现一些被忽视的经典:相当一部分的书籍随着时间的流逝而淡出人们的视野,但这并不代表它们本身没有价值,例如:
    • Programming on Purposes
    • Software Tools
    • The Science of Programming
    • Writing Solid Code
    • Writing Efficient Programs
  • 等等… 这些书或者绝版,但它们都对我的软件开发理念产生了巨大影响。
  • 形成知识体系:引用书籍彼此具有天然的联系,这使得创建知识体系更加容易。

  我认为这种方法适用于任何需要严肃阅读的领域:

  1. 锚点:找到一本经典书籍。
  2. 撒网:了解该书引用列表中的书籍。
  3. 收网:根据自己实际需要,精读相关书籍。

  根据作者

  这里以计算机书籍为例(以下仅代表个人口味):

  1. Richard Stevens:善。
  2. Brian Kernighan:极善。
  3. Deitel Series:翔。
  4. Bruce Eckel:废话连篇。
  5. Jon Bentley:善。
  6. Andrew S Tanenbaum:大善。
  7. Jeffrey D Ullman:善。
  8. P.J. Plauger:大善。
  9. Robert C Martin:善。
  10. Bjarne Stroustrup:善,但略神叨(神侃世界观方法论有点顶不住)。
  11. Martin Fowler:善,但略唠叨。
  12. Ron Jeffries:翔(好吧我是故意来黑的,尼玛连个 Sudoku 都解不出来写毛程序)

  这种方法的问题在于需要一定阅读经验,但是它非常有效——以至于不用看内容就对书的质量有七八成把握

  非本专业书籍

专业周边知识尽可能精炼。

  1. 对于专业周边知识,了解关键概念及指导思想即可。
  2. 不需要,也没有必要对专业周边知识进行深入了解。
  3. “Know what” is enough, “Know how” is expensive.

  以我 2 年前编写手机应用,学习用户体验为例:

  1. 分别在现实中(身边有几个很不错的交互设计师)和线上(Quora 和知乎)进行提问和搜索,得到一个书单。
  2. 按照下面的原则过滤书单:
  3. 去掉教科书和大部头。
  4. 去掉包含大量原理或论证的书籍。
  5. 保留结论型书籍。
  6. 保留指南型书籍。
  7. 总结出书单,迅速的阅读并找到关键点。
  8. 给大家看的设计书:CRAP 原则,字体与配色。
  9. 设计心理学:心智模型,心智摩擦,最小惊讶。
  10. 交互设计之路:为什么需要交互,交互有哪些坑。
  11. Tapworthy:具有实际操作性的移动平台交互设计指南。

  了解设计的人可能认为上面的书单过于初级——没错,它们都是结论型或指南型书籍,没有原理,也没有论证——但这正是对于我这样的非专业者所需要的书籍:我不需要知道这些知识是怎么来的,知道怎么用足矣。

  此外,受价值驱动,而非兴趣——大多数情况下兴趣只是把自己脱离当前困境的接口

  学习型书籍

  学习型书籍是一种元(Meta)方法书籍:这类书籍用于提升学习能力,换句话说,就是缩短吸收知识所需要的时间。

  这类书籍我只读过下面的几本,效果有但不明显:

  • 学习之道:冥想,体会。
  • 如何阅读一本书:检视阅读,主题阅读。
  • Learn more, study less:建立知识体系及联系。

  需要注意的是,不要陷入到寻求最优学习方法的误区——Best is the worthest enemy of better。

  阅读原版?

  如何在翻译版和原版做选择?

  1. 优先选择翻译版。计算机书籍这种描述精确知识的书籍更是如此。
  2. 此外,如果阅读中出现难以理解的问题,不要下意识的把其归咎于翻译问题——多数情况是理解问题。

  为什么还有那么多人阅读原版?

  1. 因为翻译版还没出版。
  2. 知识的价值有其时效性。
  3. 逼格。

  越多越好?

  我经常逛豆瓣,豆瓣有一个很有意思的现象就是人们喜欢去比较自己每年读书的数量,或者是截图炫耀自己读过几千本书云云。

  我在这里酸一下:书的数量并没有什么参考价值,就好比无法用盖一栋大楼的砖数评价这栋大楼的质量;换个说法,Effort 不等于 Progress。

关键在于读过书的质量,吸收的程度,以及创造的价值。

  此外,盲目追求读书的数量会带来另一个问题——浅尝辄止。本应花在专业书籍上的时间被分配到其它无关紧要的事情上,导致该学好的没学好,没必要的学了一滩但用不上。

  总结

  1. 形成T型知识结构:专业知识尽可能深入,专业周边知识尽可能精炼。
  2. 按照引用列表和作者深入阅读专业书籍。
  3. 利用结论型/指南型书籍精炼阅读专业周边书籍。
  4. 不断强化自己的按需学习能力。
  5. 不一定非要阅读原版。
  6. 读书并非多多益善。
  7. 读书之前回答下面几个问题:
  8. 这本书能给自己带来什么改变?
  9. 自己是否需要这种改变?
  10. 如果均为 Yes,继续;如果有一个 No,砍掉。
发表评论
用户名: 匿名