作为一个程序员我们的日常大部分时间都在和代码打交道。写代码、改bug、看文档、查资料每天都是在逻辑和语法中度过。

但我始终觉得程序员不应该只活在代码的世界里。代码之外还有更广阔的世界还有更丰富的生活。而读书就是我在代码之外寻找诗和远方的最好方式。

我自己从小就喜欢读书。从小学的连环画到中学的武侠小说到大学的世界名著再到工作后的技术书籍、人文社科、历史哲学读书一直是我生活中不可或缺的一部分。

工作以后虽然每天都很忙写代码、加班、学习新技术但我还是坚持每天抽出一些时间来读书。无论是睡前的半小时还是周末的一个下午读书都能让我从忙碌的工作中暂时抽离出来进入另一个世界获得心灵的宁静和思想的启迪。

今天想聊聊程序员的读书生活聊聊我为什么读书读什么书怎么读书以及读书给我带来了什么。

为什么程序员要读书

1. 读书,能提升技术能力

这是最直接的原因。作为程序员我们需要不断学习新技术提升技术能力。而读书是学习技术最系统、最深入的方式。

网上的博客、教程虽然更新快方便查阅但大多比较零散不够系统。而一本好的技术书籍通常是作者多年经验的总结系统、深入、全面能帮我们建立完整的知识体系。

比如我读《代码大全》,学到了软件构建的方方面面从设计到编码到调试到优化非常全面;读《深入理解计算机系统》,学到了计算机底层的原理从数据表示到汇编到内存到进程让我对计算机有了更深入的理解;读《设计模式》,学到了经典的设计模式让我写代码时更加优雅更加可维护。

这些都是零散的博客和教程无法替代的。

2. 读书,能拓宽视野

程序员很容易陷入技术的象牙塔只关注自己的技术领域只关心用什么框架什么语言什么工具。但实际上技术只是工具最终是为了解决问题服务于人。

读书能让我们跳出技术的圈子看到更广阔的世界。读历史能让我们了解人类社会的发展规律;读哲学能让我们思考人生的意义和价值;读经济能让我们理解商业运行的逻辑;读心理学能让我们理解人的行为和心理;读文学能让我们体验不同的人生感受人性的复杂。

这些看似和技术无关但实际上能让我们成为一个更完整、更成熟的人。而一个更完整、更成熟的人写出来的代码做出来的产品也会更有温度更有深度。

3. 读书,能锻炼思维能力

读书特别是读那些有深度、有思想的书能锻炼我们的思维能力。

读技术书籍能锻炼我们的逻辑思维和抽象思维;读历史书籍能锻炼我们的辩证思维和历史思维;读哲学书籍能锻炼我们的批判思维和思辨能力;读数学书籍能锻炼我们的严谨思维和推理能力。

这些思维能力不仅对读书有用对写代码对工作对生活都非常有用。一个思维清晰、逻辑严谨、能独立思考的程序员无论做什么都会比别人做得更好。

4. 读书,能缓解压力,调节情绪

程序员的工作压力很大。项目deadline、bug、需求变更、技术难题这些都容易让人焦虑、烦躁、疲惫。

而读书是一种很好的放松方式。当我们沉浸在一本书中时会暂时忘记工作的压力忘记生活的烦恼进入另一个世界。这种精神上的放松比刷手机、看视频更有效更持久。

特别是读一些文学、散文、诗歌这些优美的文字能陶冶情操调节情绪让我们的心灵得到宁静和慰藉。

5. 读书,能丰富人生体验

每个人的人生都是有限的。我们只能活一次只能体验一种人生。

但读书能让我们体验无数种人生。读一本小说我们可以和主人公一起经历他的喜怒哀乐生老病死;读一本传记我们可以了解伟人的一生学习他们的经验和智慧;读一本历史我们可以穿越时空了解几千年前发生的事情。

读书就像和无数伟大的灵魂对话。他们把自己的人生经验、智慧思考都写在了书里我们只需要花几十块钱几个小时就能获得他们一生的智慧。这是多么划算的事情啊。

程序员应该读什么书

1. 技术书籍

技术书籍是程序员的必读书。但技术书籍也分很多种不是所有的技术书籍都值得读。

经典基础书籍:这些书是技术的基石历久弥新不会因为技术的更新而过时。比如:

  • 《代码大全》(Code Complete):软件构建的百科全书非常全面
  • 《深入理解计算机系统》(CSAPP):理解计算机底层原理
  • 《算法导论》(CLRS):算法的经典教材
  • 《设计模式》(GoF):经典的23种设计模式
  • 《重构》(Refactoring):代码重构的经典
  • 《程序员修炼之道》(The Pragmatic Programmer):程序员的职业素养
  • 《人月神话》(The Mythical Man-Month):软件工程的经典
  • 《计算机程序的构造和解释》(SICP):编程思想的经典

这些书可能比较厚比较难读但只要认真读完一定会受益匪浅。

具体技术书籍:这些书是针对具体的技术领域比如某门语言、某个框架、某个工具。比如:

  • PHP相关:《PHP和MySQL Web开发》《深入PHP:面向对象、模式与实践》
  • JavaScript相关:《JavaScript高级程序设计》《你不知道的JavaScript》《JavaScript语言精粹》
  • Python相关:《Python编程:从入门到实践》《流畅的Python》
  • Linux相关:《鸟哥的Linux私房菜》《Linux命令行与shell脚本编程大全》
  • MySQL相关:《高性能MySQL》《MySQL技术内幕》
  • Redis相关:《Redis设计与实现》《Redis实战》
  • Docker相关:《Docker技术入门与实战》《第一本Docker书》

这些书要根据自己的工作需要和兴趣来选择。不需要每本都读选择最适合自己的几本认真读就够了。

注意:技术书籍更新很快买的时候要注意买最新的版本。而且不要买太多读不完反而浪费钱。可以先读电子书觉得好再买纸质书。

2. 人文社科书籍

人文社科书籍能让我们跳出技术的圈子了解人类社会了解人性了解世界。

历史类

  • 《人类简史》:从认知革命到农业革命到科学革命宏大的视角
  • 《万历十五年》:以小见大通过1587年看明朝的衰落
  • 《全球通史》:全球视角的世界历史
  • 《史记》:中国历史的经典,"史家之绝唱无韵之离骚"
  • 《明朝那些事儿》:通俗易懂的明朝历史有趣好读

哲学类

  • 《苏菲的世界》:哲学入门的经典通过小说的形式介绍西方哲学史
  • 《中国哲学简史》:冯友兰写的中国哲学的入门经典
  • 《沉思录》:马可·奥勒留的斯多葛哲学思考
  • 《存在与时间》:海德格尔的经典比较难读
  • 《正义论》:罗尔斯的政治哲学经典

经济类

  • 《国富论》:亚当·斯密的经济学经典
  • 《经济学原理》:曼昆写的经济学入门教材通俗易懂
  • 《穷爸爸富爸爸》:理财入门的经典改变你的财富观念
  • 《小岛经济学》:用故事的形式讲解经济学原理
  • 《黑天鹅》:塔勒布的经典关于不确定性和风险

心理学类

  • 《影响力》:西奥迪尼的经典关于说服和影响的心理学
  • 《思考快与慢》:卡尼曼的经典关于人类思维的两个系统
  • 《乌合之众》:勒庞的经典关于群体心理
  • 《非暴力沟通》:沟通的经典教你如何好好说话
  • 《被讨厌的勇气》:阿德勒心理学的入门自我启发的经典

3. 文学书籍

文学书籍能让我们体验不同的人生感受人性的复杂获得美的享受。

中国文学

  • 四大名著:《红楼梦》《西游记》《三国演义》《水浒传》
  • 鲁迅:《呐喊》《彷徨》《朝花夕拾》
  • 老舍:《骆驼祥子》《四世同堂》《茶馆》
  • 沈从文:《边城》
  • 余华:《活着》《许三观卖血记》《兄弟》
  • 王小波:《黄金时代》《白银时代》《青铜时代》
  • 路遥:《平凡的世界》《人生》
  • 陈忠实:《白鹿原》

外国文学

  • 陀思妥耶夫斯基:《罪与罚》《卡拉马佐夫兄弟》
  • 托尔斯泰:《战争与和平》《安娜·卡列尼娜》《复活》
  • 卡夫卡:《变形记》《城堡》《审判》
  • 加缪:《局外人》《鼠疫》《西西弗神话》
  • 马尔克斯:《百年孤独》《霍乱时期的爱情》
  • 海明威:《老人与海》《太阳照常升起》
  • 村上春树:《挪威的森林》《海边的卡夫卡》《1Q84》
  • 奥威尔:《1984》《动物农场》

4. 传记和回忆录

传记和回忆录能让我们了解伟人的一生学习他们的经验和智慧。

  • 《史蒂夫·乔布斯传》:乔布斯的官方传记了解这位改变世界的天才
  • 《富兰克林自传》:富兰克林的自传美国国父的人生智慧
  • 《曾国藩家书》:曾国藩的家书修身齐家治国的智慧
  • 《苏东坡传》:林语堂写的苏轼的传记有趣又有深度
  • 《褚时健传》:褚时健的传奇人生从烟草大王到橙王跌宕起伏
  • 《活着为了讲述》:马尔克斯的回忆录,《百年孤独》的真实版本

怎么读书

1. 制定读书计划

读书需要有计划。不要想起来才读一本这样很难坚持下来。

我自己每年年初都会制定一个读书计划比如今年要读多少本书哪些是技术书哪些是闲书每个月读几本。然后按照计划来执行。

当然计划不要太满要留有余地。比如一年计划读24本书平均一个月2本这样比较容易完成。如果计划一年读50本可能到最后完不成反而有挫败感。

2. 每天固定时间读书

读书需要养成习惯。最好每天固定一个时间来读书。比如睡前半小时或者早上起床后或者通勤的路上。

我自己习惯睡前读书。每天晚上睡前放下手机拿起书读半小时到一小时。这不仅能让我从一天的忙碌中抽离出来放松心情也能帮助睡眠。而且睡前读的内容记忆也比较深刻。

当然每个人的习惯不一样。有的人喜欢早上读书;有的人喜欢周末读书。找到适合自己的时间坚持下去就好。

3. 精读和泛读结合

读书有两种方式:精读和泛读。

精读:就是认真地、仔细地读逐字逐句理解书中的内容做笔记写读后感。精读的书通常是那些经典的、有深度的、对自己很重要的书。比如技术经典、哲学经典、文学经典这些值得反复读仔细读。

泛读:就是快速地、粗略地读了解书中的大致内容不需要逐字逐句。泛读的书通常是那些比较通俗的、信息类的、只需要了解大概的书。比如小说、通俗历史、畅销书这些可以快速浏览了解大意就够了。

精读和泛读要结合起来。既要有精读的书深入学习;也要有泛读的书拓宽视野。不要每本书都精读那样效率太低也读不了多少书;也不要每本书都泛读那样学不到真正的东西。

4. 做笔记和写读后感

读书不做笔记不写读后感就像没读过一样。因为人的记忆是有限的读过的内容很快就会忘记。

做笔记能帮我们记录书中的重点、精彩的句子、自己的思考。以后再翻笔记就能快速回忆起这本书的内容。

写读后感能帮我们整理自己的思考深化对书中内容的理解。而且写读后感也是一种输出能锻炼我们的写作能力和表达能力。

我自己读书时习惯在书上做标记划线写批注。读完后会整理笔记写一篇读后感发在博客上。这样不仅加深了理解也积累了博客的内容。

5. 利用碎片时间

现代人都很忙很难有大块的时间来读书。但碎片时间其实很多。比如通勤的路上、排队的时候、午休的时候、等人的时候这些都是可以用来读书的时间。

现在有了智能手机和电子书读书变得非常方便。我们可以把电子书下载到手机上利用碎片时间来读。虽然每次只能读几分钟但积少成多一天也能读不少。

我自己通勤的时候就习惯用手机读电子书。每天通勤来回大约1小时一个月就能读完好几本书。

当然碎片时间读书适合泛读不适合精读。精读的书还是需要大块的时间安静的环境来认真读。

6. 重复读经典

有些经典的书读一遍是不够的。每读一遍都会有新的理解新的收获。

比如,《代码大全》,我已经读了三遍了。第一遍刚工作时读觉得很有道理但很多理解不深;第二遍工作三年后读很多之前不理解的内容突然就懂了;第三遍工作五年后读又有了新的感悟。

所以对于那些经典的书不要读完一遍就扔到一边。每隔一段时间再拿出来重读一遍一定会有新的收获。

读书给我带来了什么

1. 技术能力的提升

读书最直接的收获就是技术能力的提升。通过读技术书籍我学到了很多工作中学不到的知识建立了更完整的知识体系。

比如读《深入理解计算机系统》,让我理解了计算机底层的原理写代码时能考虑到性能和效率;读《设计模式》,让我写代码时更加优雅更加可维护;读《重构》,让我能识别代码中的坏味道及时重构保持代码的健康。

这些都让我的工作更加高效代码质量更高。

2. 思维方式的改变

读书也改变了我的思维方式。

以前我看问题比较片面比较绝对。读了历史和哲学后我学会了辩证地看问题从多个角度来思考不再非黑即白。

以前我容易人云亦云别人说什么就信什么。读了哲学和批判性思维的书后我学会了独立思考质疑权威不盲从有自己的判断。

以前我遇到问题容易焦虑急躁。读了哲学和心理学的书后我学会了冷静理性接受不能改变的改变能改变的。

这些思维方式的改变对我的工作和生活都产生了深远的影响。

3. 视野的拓宽

读书也拓宽了我的视野。

以前我只关注自己的技术领域只关心PHP、MySQL、Linux这些。读了历史、哲学、经济、文学后我了解了更广阔的世界知道了人类社会是怎么发展的经济是怎么运行的人性是怎么回事。

这些看似和技术无关但实际上让我成为一个更完整的人。而且在工作中和产品、运营、市场沟通时我也能更好地理解他们的思路更好地协作。

4. 心灵的丰富

读书也丰富了我的心灵。

程序员的生活其实比较单调。每天写代码、改bug、加班很容易变得枯燥乏味。但读书让我的生活变得丰富多彩。

通过读书我可以和几千年前的古人对话可以和万里之外的外国人交流可以体验无数种不同的人生。这些都让我的心灵变得充实丰盈。

而且读书也让我在这个浮躁的社会中保持内心的宁静。无论外面的世界多么喧嚣只要拿起一本书我就能安静下来进入另一个世界。

5. 写作能力的提升

读书也提升了我的写作能力。

俗话说,"读书破万卷下笔如有神"。读得多了自然就会写了。通过读大量的书我学到了各种写作的技巧表达方式文章结构。而且读书也积累了大量的素材和词汇。

我从2015年2月开始写博客到现在已经写了270多篇文章了。这些文章能写出来很大程度上得益于我平时的读书积累。

而且写作也反过来促进了我的读书。为了写好一篇文章我会更认真地读书做笔记整理思路。

推荐给程序员的书单

最后给大家推荐一些我觉得值得程序员读的书。

技术类(必读经典)

  1. 《代码大全》
  2. 《深入理解计算机系统》
  3. 《算法导论》
  4. 《设计模式》
  5. 《重构》
  6. 《程序员修炼之道》
  7. 《人月神话》
  8. 《计算机程序的构造和解释》

人文社科类(推荐)

  1. 《人类简史》
  2. 《万历十五年》
  3. 《苏菲的世界》
  4. 《中国哲学简史》
  5. 《经济学原理》(曼昆)
  6. 《穷爸爸富爸爸》
  7. 《影响力》
  8. 《思考快与慢》
  9. 《非暴力沟通》
  10. 《被讨厌的勇气》

文学类(推荐)

  1. 《红楼梦》
  2. 《活着》
  3. 《平凡的世界》
  4. 《百年孤独》
  5. 《1984》
  6. 《局外人》
  7. 《挪威的森林》
  8. 《老人与海》

传记类(推荐)

  1. 《史蒂夫·乔布斯传》
  2. 《富兰克林自传》
  3. 《曾国藩家书》
  4. 《苏东坡传》
  5. 《褚时健传》

当然这只是我的个人推荐。每个人的兴趣不一样适合的书也不一样。最重要的是找到自己喜欢的书坚持读下去。

写在最后

作为一个程序员我们的生活不应该只有代码。代码之外还有更广阔的世界还有更丰富的生活。

而读书就是我们在代码之外寻找诗和远方的最好方式。

读书能提升我们的技术能力拓宽我们的视野锻炼我们的思维缓解我们的压力丰富我们的人生。读书是成本最低收益最高的自我投资。

"书中自有黄金屋书中自有颜如玉。"虽然这句话有些功利但也说明了读书的价值。

希望每一个程序员都能在写代码之余拿起一本书享受读书的乐趣在代码之外找到属于自己的诗和远方。

最后用我很喜欢的一句话来结尾:

"你的问题主要在于读书不多而想得太多。"——杨绛

与大家共勉。