程序员必读15本书(作为一个有理想的程序员)

《暗时间》的作者刘未鹏曾说过:“很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别。”

其中起到关键性作用的,是“好书”二字。“就算不好好看完一本好书,只要书是真的好书,也肯定会有很大的提高。”

但是一旦读到坏书,将大大影响你的学习效率和思考方向。“读烂书浪费时间,但读好书却节省时间。”

想必在此之前大家都已经看过不少类似的书籍推荐,部分书单一次性列出太多书目,不仅让人挑花了眼,不同的人对不同书籍的评价也是众说纷纭。

所以本次答主“优中选优”,分别从技术经典实用工具思维进阶职场知识四个维度精选了几本经典书籍。

看书贵精不贵多,将以下书籍全部吃透,相信可以帮助大家全方位提升。


一、技术经典

《C程序设计语言(第2版·新版)》(《The C Programming Language》)作者: [美] Brian W. Kernighan / [美] Dennis M. Ritchie

程序员必读15本书(作为一个有理想的程序员)(1)

《C程序设计语言》是提到计算机科学领域的书籍绝对绕不开的一本书,如果有人没提到,评论区的各路大神们一定也会给到补充。

《C程序设计语言》是一部介绍标准C语言及其程序设计方法的权威性经典著作,由C语言之父Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan合著而成。所以这本书在领域内也被称为:你永远可以相信的“K&R”!

《C程序设计语言》被奉为“C语言的圣经”,全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念、类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。

事实上,领域内的权威人物就是我们永远的指路明灯,跟着他们可以少走很多弯路。这本书能够让你高效地打下扎实的计算机基础,而又不用把操作系统计算机结构编译原理这些书通读一遍。

若是阅读初期感觉比较深,可以用C Primer Plus作为过渡。并且,在学习C语言时,建议能够先安装一个Linux操作系统,实践出真知,结合实操能够让你理解知识更透彻。

《深入理解计算机系统》(《Computer Systems A Programmer's perspective》)作者: Randal E.Bryant / David O'Hallaron

程序员必读15本书(作为一个有理想的程序员)(2)

这一本书也是老生常谈了。

这是每个程序员都不可错过的一本书籍,看不完至少也要看前三章(强烈建议读完)。因为讲述深入浅出,配合典型例证,通俗易懂,实用性强,所以也是国内外诸多名校的必修基础课程公认的经典中的经典

就算不用C语言,也可以作为论文写作的参考样板,学习它行文结构和思路。

与《算法导论》和《计算机程序设计艺术》合称为计算机科学的三本圣经。

《算法导论(第3版)》(《Introduction to Algorithms》)作者: Thomas H.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein

程序员必读15本书(作为一个有理想的程序员)(3)

这本书深入浅出,全面地介绍了计算机算法。对每一种算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。

“计算机算法里的圣经”,阅读此书需要拿出在学校上课的状态,这本书也确实是MIT的教材。建议可以先阅读《算法》或者其他数据结构与算法的书,并结合LeetCode刷题。


二、实用工具书

《代码大全(第2版)》(《Code Complete》)作者: [美] Steve McConnell

程序员必读15本书(作为一个有理想的程序员)(4)

一本编程圣经,所有需要写代码的人都建议读一下。

Steve McConnell的原作《代码大全(第1版)》是公认的关于编程的最佳实践指南之一,在过去的十多年间,本书一直在帮助开发人员编写更好的软件。

现在,作者将这本经典著作完全重写,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性科学性

McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识,把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。无论是经验丰富的程序员、技术带头人、还是自学的程序员,不管你在怎样的开发环境中工作,也无论项目是大是小,本书都将激发你的思维并帮助你在更短的时间内,构建高品质的代码

《代码大全(第2版)》做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与通用的概念的讨论等等。

许多人认为这本书的中文译名并没有这么准确,曾经听过“Code Complete”还有一个译法是“代码解冻”,按照这个译法,或许原作者是在教我们如何以在经过测试之后,发布上线以前不再修改为目标去编写代码。

一本《论语》似的书。初读时你可能会觉得“浅显” 甚至“离谱”,但是一边工作一边带着踩过的坑来看,会发现它为代码实践提供了重要的方法论,并且在代码、项目和人性管理上有相当的普适性。

《代码整洁之道》(《Clean Code: A Handbook of Agile Software Craftsmanship》)作者: [美]Robert C. Martin

程序员必读15本书(作为一个有理想的程序员)(5)

软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。

本书提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上有保证,也为后期运维奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并提供了来自实际项目中的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

本书写了作者的经验之谈,很多都值得学习,但也不能盲目轻信,读任何书的时候都需要审慎思考。

对于刚开始工作的同学们,接触过的代码还不够多,读设计模式之类的书可能还没什么体会。但这本提供代码细节的书,却是能立竿见影,直接用到工作中去的。

《重构:改善既有代码的设计》(《Refactoring: Improving the Design of Existing Code》)作者: Martin Fowler

程序员必读15本书(作为一个有理想的程序员)(6)

书中给出了70多个可行的重构示例,演示了重构的过程,并且解释了重构的原理和最佳实践方式。每个重构都介绍了一种经过验证的代码变换手法的动机和技术。

《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。

重要的不只是具体的方法,正如书中总结所说,懂这些只是入门,知道何时重构,选择哪种方法重构,何时停止重构才是需要更进一步感悟的地方。能够从此书中明白提升代码品位和行动力的重要性就是弥足珍贵的了。

觉得太长的,可只看目录和要点列表,将本书作为一个重构方法论合集的索引。

《设计模式:可复用面向对象软件的基础》(《Design Patterns: Elements of Reusable Object-Oriented Software》)作者: [美] Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides

程序员必读15本书(作为一个有理想的程序员)(7)

本书结合设计实例从面向对象的设计中精选出23个设计模式, 总结了面向对象设计

中有价值的经验, 并且用简洁可复用的形式表达出来。

本书分类描述了一组设计良好、 表达清楚的软件设计模式, 这些模式在实用环境下特别有用。 适合大学计算机专业的学生、研究生及相关人员参考。

对本书的阅读建议是先积累一定编程经验,并且看之前先看重构和(或)代码简洁之道,最终目的都是为了复用和减少耦合。

正如书中所讲述的那样“这不是读完一遍就可以束之高阁的书”。只有在实际应用中去应用它,才能体会到设计模式带来的优势与艺术。


三、思维进阶

这一部分书籍会深入软件开发的心理层面,帮助大家在思维上有所进益。

《人月神话》(《The Mythical Man-Mouth》)作者: [美] Frederick P. Brooks, Jr.

弗雷德里克·布鲁克斯(Frederick P. Brooks, Jr.)是北卡罗莱纳大学Kenan-Flagler商学院的计算机科学教授,图灵奖的获奖者之一。他被认为是IBM 360系统之父,曾担任360系统的项目经理、360操作系统项目设计阶段的经理。

作者为人们管理软件工程的复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。书中的内容来自布鲁克斯在IBM公司System 360家族和OS 360中的项目管理经验。

初版的20年后,布鲁克斯重新审视了他原先的观点,增加了一些新的想法和建议。新增加的章节包括:原著中一些核心观点的精华;在经过了一个时代以后,布鲁克斯博士对原先观点新的认识;1986年的经典文章《没有银弹》;对1986年所下论断(在10年内不会出现银弹)现在的认识。

经典之所以是经典是因为其中的内容经久不衰。虽然部分内容可能已经有些过时,但是如概念完整性,人的重要性,增量式开发等实用的思想到现在仍有存在感。

即使你遇到的是与书中不同的事例,但是深究之下会发现其中的共性问题。此书能帮助大家更好地在较大的团队软件项目中进行实践,十分适合有志于向项目管理层面发展的小伙伴。

《人件集:人性化的软件开发》(《The Peopleware Papers》)作者: Larry L. Constantine

又是一本超越了时间空间的经典书目。

“管理上的最大罪行是浪费人的时间”。本书从人的因素出发来分析和挖掘软件开发中的风险/成本/进度等方面的制约和协调艺术。对当今的项目管理仍然有宝贵的借鉴意义。

《编程珠玑》(《Programming Pearls》)作者: [美] Jon Bentley

《编程珠玑》书如其名,是计算机科学大师Jon Bentley从围绕程序设计人员面对的一系列实际问题中凝结出的一篇篇不朽的编程“珠玑”。

本书的确在强调算法,但作者更多地是在表达一种算法之外,解决问题的思维方法:高效的算法没错,但是如何正确选择和高效地实现算法更重要。

本书通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。

探究问题的本质,真正的优雅地解决问题,才是本书所要传达的精神。

正如作者所说:“一天读一章足以。”这本书一天读10页绝对是囫囵吞枣!

《程序员修炼之道:从小工到专家》(《The Pragmatic Programmer》)作者: Andrew Hunt / David Thomas

顾名思义,“从小工到专家”意味着这本书从初学者到有经验的程序员,再到软件项目经理都适合阅读。

因为它在内容上颇为全面,由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术

在写作的趣味性上,作者利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。

本书列举了从业者在成长道路上必经的弯路,同样适合一边实践一边阅读,能够帮助你解决许多当下遇到的难题。

告诉人们如何从业者团队化和产品角度思考整体问题,并且附录提供了完整的思考指南和贴士。在行动之前,问自己“我为什么这样做?这样做值得吗?”

《素数之恋》(《Prime Obsession: Bernhard Riemann and the Greatest Unsolved Problem in Mathematics》)作者:John Derbyshire

程序员必读15本书(作为一个有理想的程序员)(8)

《素数之恋》是一本科普读物。围绕黎曼猜想,深入浅出地阐述了相关知识以及数学家们的趣闻轶事。目标是让非数学专业的读者可以理解这个数学中最深奥的问题,感受数学之美。

作者在序言中说道:“如果你读完我的书以后还不理解黎曼假设,那么你可以断定,你将永远理解不了它”。

《黑客与画家》(《Hackers and Painters: Big Ideas from the Computer Age》)作者: [美] Paul Graham

程序员必读15本书(作为一个有理想的程序员)(9)

相信无论是程序员还是非程序员,对计算机领域中的的职业,都有过一个“黑客”的幻想。那么“黑客”与“画家”的碰撞,也太酷了吧!

这是一本能引发技术人思考的佳作,真正意义上的黑客精神、创业、编程语言,是这本技术散文集的三个主题。

当然,你可以对作者试图灌输给你的价值观和说教予以真诚的拒绝。


四、职场知识

《软技能:代码之外的生存指南》(《Soft Skills: The software developer's life manual》)作者: [美] John Z. Sonmez

程序员必读15本书(作为一个有理想的程序员)(10)

为了未来更好的发展,我们都在努力地把技能点点满。但步入了工作岗位朋友们应该都知道,技能还分硬技能软技能

对于程序员来说,硬技能就是上述书籍中我们提到的技术相关的知识。软技能则是除了自身工作岗位必备的知识和使用工具的能力外,围绕着工作和生活的方方面面产生的相关能力。在相似的技术水平下,软技能能够成为你在职场上获得差异化竞争力的关键!

计算机科学的知识世界浩如烟海,不像K&R和CSAPP等绝大部分书籍关注的是技术,也不像《人月神话》注重项目管理,《软技能》是一本真正从“人”的角度关注软件开发人员自身发展的书。书中涉及的内容从思维方式,到生活习惯甚至包括求职技巧以及不动产管理。可谓是全方位囊括了软件行业从业人员所需的“软技能”。阅读这本书,希望你在工作和生活中的重大时刻能够“软硬兼施”,突破难关。

本书提到了一些大部分技术人员在以往会忽略的问题,实际上也适合各行各业的伙伴阅读,在职业发展的初期帮助自身进行自我管理及规划。

我们在学习一样东西的时候,可以分为“道”和“术”,本书主要讲的是个人软技能的“术”,以现实中的个例为引子讲解方法论。在阅读中,我们可以尝试着将“术”转化成“道”,联系相似生活场景,找到属于自身的解决方法。反过来,也可以学习作者的思路,不断地在实践中思考,将亲身经历的“术”总结为属于自己的“道”,也是一条快速成长的有效路径。

如何在工作中体现自己的价值呢?作者引入了“营销”的观点。“营销就是一场争夺人们注意力的竞赛。”——Seth Godin。优秀的营销通过将人们的需要或者期待与能够满足此愿望的产品或者服务关联起来的来获得人们的关注。在工作中,将自己当做一个产品,实现价值在先,要求回报在后;将自己经营成一个小企业。工作中部分有交集的人是需要服务的对象,第一个人就是你的老板。但要明确,尽可能通过服务更多的客户实现风险对冲。

沟通力:《非暴力沟通》(《Nonviolent Communication: A Language of Life》)作者: [美] Marshall B.Rosenberg

程序员必读15本书(作为一个有理想的程序员)(11)

答主曾经听到过一个故事:某个新人开发比较内向,在做一个需求的时候遇到了问题不敢和同事与上级沟通,只顾埋头苦干,直到排期中的交付节点将至,对应的产品经理来询问进度,才得知进展状况不佳。此事大大影响了迭代进度,而会议上因为进度带来的压力,这个开发新人原本就生疏的表达能力更是受到了负面影响,多方沟通都遭遇了瓶颈。一时间,需求能否如期交付被打上了一个大大的问号。

无论是什么职位,在职场中难免都要与其他不同部门与岗位的同事进行沟通和对接。尤其是当你成为一名开发人员的时候,将会面对大量的需求。此时,良好的沟通力将帮助你更高效地完成工作

"马歇尔•卢森堡博士发现了一种沟通方式,依照它来谈话和聆听,能使人们情意相通,和谐相处,这就是《非暴力沟通》

你可能会问,为什么会把谈话和“暴力”扯上关系呢?实际上如果细心留意日常生活中的谈话场景,并用心体会不同的谈话方式给我们带来感受,我们一定会发现有的话虽然看上去不起眼,但确实让人很受伤。肉体伤害固然可怕,但语言暴力在潜移默化中给我们带来的情感和精神上的创伤就像钝刀子割肉,是无法忽视的隐痛,加剧人与人之间的阻碍与隔阂。

非暴力沟通能够:1.疗愈内心深处的隐秘伤痛;2.超越个人心智和情感的局限性;3.突破那些引发愤怒、沮丧、焦虑等负面情绪的思维方式;4.用不带伤害的方式化解人际间的冲突;5.工作效率

中国文化提倡含蓄,我们中大部分人更愿意默默体会而不是直接表达。"他人的言行举止或许会激发我们的感受,但这绝非产生这些感受的原因。感受源自我们如何看待他人的言行以及我们当时的需要和期待。"非暴力沟通建立了观察、感受、需要的一个感受和处理自己情绪的流程,帮助人们和解自己,也和解他人。在表达时将重心从指责他人转移到自己的感受和需求上,更容易去构建同理他人和自己的平和交流场景。

效率工具:《番茄工作法图解》(《Pomodoro Technique Illustrated: The Easy Way to Do More in Less Time》)作者: [瑞典] Staffan Nöteberg

程序员必读15本书(作为一个有理想的程序员)(12)

番茄工作法是弗朗西斯科•西里洛于1992年创立的。他在大学生活的头几年,曾一度苦于学习效率低下,“于是我和自己打赌,下猛药,狠狠鄙视自己说:‘我能学一会儿习吗?真正学上10分钟?’我得找个计时教练,谁来替我掐表呢?后来我找到了,是一枚厨房定时器,形状像‘西红柿’(Pomodoro ,意大利语的“番茄”)。就这样,我邂逅了我的番茄钟。”

作为一个有硬性项目任务的开发人员,效率一定是你一直在努力攻克的难关!写不出代码时抓耳挠腮,学习和工作无法有效集中注意力?任务太多手忙脚乱,每件事都做了但都没有进度?

本书分解了番茄工作法的使用法则,帮助你:

  • 减轻时间焦虑
  • 提升集中力和注意力,减少中断
  • 增强决策意识
  • 唤醒激励和持久激励
  • 巩固达成目标的决心
  • 完善预估流程,精确地保质保量
  • 改进工作学习流程
  • 强化决断力,快刀斩乱麻
《刻意练习:如何从新手到大师》(《PEAK: Secrets from the New Science of Expertise》)作者: [美] Anders Ericsson / Robert Pool

程序员必读15本书(作为一个有理想的程序员)(13)

所有人都以为“杰出”源于“天赋”,“天才”却说:我的成就源于“正确的练习”

著名心理学家艾利克森在“专业特长科学”领域潜心几十年,研究了一系列行业或领域中的专家级人物后发现,不论在什么行业或领域,提高技能与能力的最有效方法全都遵循一系列普遍原则,即针对不舒适不安全的区位刻意练习并且反馈效果。他将这种通用方法命名为“刻意练习”

对于在任何行业或领域中希望提升自己的每个人,刻意练习是黄金标准,是迄今为止发现的最强大的学习方法。

《清醒思考的艺术:你最好让别人去犯的52种思维错误》(《Die Kunst des klaren Denkens: 52 Denkfehler, die Sie besser anderen überlassen》)作者: [德]罗尔夫·多贝里

程序员必读15本书(作为一个有理想的程序员)(14)

人是生而自由的,却无往不在枷锁之中。这句话同样精确地描述了人类受困于思维错误的情形。人并非无所不知,无所不能的。思维错误、认知陷阱就像是伴生于人类,让人难以察觉,却又无处不在。

作者博览群书,观察到了人们平常没有细想过的思维错误,并一一列出。当明白了错误的思维是如何发生后,人们就有可能远离思维陷阱。如果说成功者与失败者之间的差距在于思维方式,那么,熟知了思考方式的隐形陷阱,人们少走更多弯路错路,从而离成功更近。

作者既有锐利的观察,又有出色的讲故事能力。他引用生活趣事、名人轶事、历史故事、爱情关系、人际关系、投资之道、心理实验等论述,生动形象而又具体雄辩地指出思维之错的错在哪里,并且还给出了纠正的办法。

适合刚开始了解思维谬误的人阅读,穿插其中的趣味小故事可以让你一口气快速读完。

可以采纳书籍末尾的建议,拿出一张白纸,将书中列出的52中思维错误列成清单,在生活中有意地去进行矫正练习,并且当面临难题和重大决策时,逐项排查。


以上就是得小帆的珍藏分享,希望能帮助大家在职业道路上更进一步~更多优秀内容请关注@得帆云,欢迎点赞、关注、分享支持!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页