当前位置:   article > 正文

程序员推荐&推荐程序员阅读的好书_cracking the coding interview: 150 programming int

cracking the coding interview: 150 programming interview questions and solut

1、作者:约翰·森梅兹(John Sonmez)

畅销书《软技能:代码之外的生存指南》作者、“Simple Programmer”网站的创始人。他努力追求“将复杂问题转化为简单解决方案”。他为在线培训机构Pluralsight开发了50多门在线课程,涉及iOS、Android、.NET、Java和游戏开发等多个主题。他是“Get Up and Code”播客的主持人,在这里他讨论“程序员健身”;他还是“Entreprogrammers”播客的主持人,在这里他和其他三位开发者/企业家分享他们构建在线业务的真实故事。 

译者:王小刚

毕业于西安电子科技大学计算机学院,硕士研究生学历,曾先后服务于华为、IBM、中国移动无线数据研发中心,参与过3G基站、MISC(移动信息服务中心)等产品/系统的研发工作,担任过项目经理、质量保证经理、质量总监等职务。 业界知名的咨询顾问和培训讲师,拥有NPDP、PMP、PBA、ACP、CSM、CAL等多项认证资质。六西格玛黑带,致力于研发管理、项目管理、产品创新、过程改进等领域的研究工作,帮助IT企业持续提升产品创新与研发管理能力,先后为100多家企业的20000多名软件开发人员提供过咨询和培训服务。

2、出版信息:人民邮电出版社 2020年

以下来源于《软技能2:软件开发者职业生涯指南》第59章 开卷有益:推荐阅读的好书

关于写出好代码的书

Steve McConnell的《代码大全(第2版)》(Code Complete: A Practical Handbook of Software Construction, Second Edition)

这是一本关于如何编写优质、整洁、易于理解、不需要过多解释就可以清晰表达代码含义的基础性经典书籍。它从根本上改变了我编写代码和创建软件的思维方式。它讲述了如何调试代码,如何创建高质量的软件,以及软件开发者都应该理解的其他许多主题。虽然这本书在方法论上有点儿过时,但对每一位严谨的软件开发者来说,它仍然是一本必读书籍。

《代码整洁之道》(Clean Code: A Handbook of Agile Software Craftsmanship)

这是我最爱的一本书之一,作者是我在软件开发行业最喜欢的导师之一——罗伯特·马丁(Robert Martin,“鲍勃大叔”)。这本书教你如何编写整洁、高度可被理解的代码,书中还包含重构既有代码的实例。书中描述的原理和最佳实践从本质上讲是永恒的,大大有助于理解用任何编程语言编写的代码。《代码整洁之道》弥补了《代码大全》在方法论上有点儿过时的不足,这本书中描述了如何以敏捷方法开发与维护软件。

《敏捷软件开发:原则、模式与实践》(Agile Software Development, Principles, Patterns, and Practices)

这本书更聚焦于面向对象编程。这本书的主题非常广泛,涵盖了敏捷方法及其应用,面向对象的设计原则、设计模式等内容,所有内容都附有精彩的示例。

必须知道的书

《设计模式》(Design Patterns: Elements of Reusable Object-Oriented Software)

这是一部经典著作,放在今天仍然不过时,因为你通常从正在维护的代码中看到它的设计模式,或者从正在编写的代码中领会到一些模式。每一个软件开发者至少应该理解本书中提出的基础的经典设计模式。

《计算机软件测试》(Testing Computer Software)

对全面了解什么是软件测试而言,这是另一本必不可少的经典著作。这本书涵盖了每一个软件开发者都应该了解的有关测试与测试方法的基本知识。

《算法导论》(Introduction to Algorithms)

这本书读起来不轻松,需要一些数学功底,但它是当今软件开发领域关于常用的现代算法的最好的书之一。每一位软件开发者都应该熟悉这些算法。

《企业应用架构模式》(Patterns of Enterprise Application Architecture)

这本书囊括了如何编写健壮的大规模应用程序所需要的一切知识。尽管这本书重点是企业级应用系统,但是书中的许多原则与模式适用于任何类型的大规模软件应用。处理既有代码的书作为软件开发者,你最常做的事情之一就是处理和维护不是由你编写的代码,即遗留代码。幸运的是,关于这个话题有一些很优秀的书。

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

维护遗留代码的一项基本技能就是重构。重构就是改变代码的结构但不改变代码的功能。这本书涵盖了你需要知道的每一种主要的重构模式。现在,这些重构工作中大部分已经不再需要手工完成,因为它们被集成到IDE之中,但是这本书教你这些重构模式的内涵,以及如何在需要的时候实现这些重构模式。

《修改代码的艺术》(Working Effectively With Legacy Code)

它被认为是学习如何处理和维护遗留代码的最好的一本书。它涵盖了在处理遗留系统时你需要考虑的每一个主题,包括安全地重构、标识要修改代码的地方、处理非面向对象系统等。我强烈建议每个软件开发者都阅读这本书,不止一次。

《重构与模式》(Refactoring to Patterns)

通过重构来清理遗留代码的最佳方法之一是简化代码,尤其是当遗留代码是一个烂摊子的时候。本书以循序渐进的方式向你展示如何复用既有代码,如何使用软件开发中常见的设计模式重构代码。这并不意味着你应该把代码中的每一个位都重构其设计模式,或者在一个简单的解决方案就能奏效的情况下还要强行使用过度复杂的模式,这本书的内容肯定在很多时候会派上用场。

培养自己成为优秀开发者的书

下面几本书将有助于开发者技术技能之外的成长与发展。

《软技能:代码之外的生存指南》 (Soft Skills: The Software Developer’s Life Manual)

这本书的内容涵盖了职业生涯规划、自我营销、学习、生产力、理财、健康和健身等多项内容,甚至包括如何掌控心理和心态。我认为每位软件开发者都应该读这本书,虽然我这么说是因为我有些偏爱。

《程序员修炼之道:从小工到专家》(The Pragmatic Programmer: From Journeyman to Master) 

这是一本非常流行的编程书,它基于一些经验丰富的软件开发者的智慧,讲述了所有有关软件开发者如何推进职业生涯的事情。这本书非常有趣,可读性强,书中描述的都是在软件开发中真实困境中的真实故事。

《我编程,我快乐:程序员职业规划之道》(The Passionate Programmer: Creating a Remarkable Career in Software Development)

这本书里充满了实用的建议,对你作为软件开发者的职业生涯规划,以及应对你不可避免要面对的斗争,都大有裨益。这本书的内容包括学习如何提升你的技能,如何改变你的态度,如何保持积极性,如何充满激情地生活,当然,还有关于如何推进你的事业发展的内容。

厚植人文素养的书

《如何赢得朋友及影响他人》(How To Win Friends & Influence People)

从这本书开始吧。这是有史以来写得最好的关于如何与他人互动的书之一。不要让书名或者书的年代欺骗你。这是一本经典书,经常出现在许多成功人士的图书排行榜上。我每年至少读一次这本书,有时候读两次。关于这本书,我怎么夸奖都不为过——它改变了我的人生。

《As a Man Thinketh》

这是一本短小精悍的书,也是一本老书,但却极其有效。这本书中呈现的心态就是在生活中取得成功必需的心态。这本书集中描述了你的思想,以及你如何选择去感知这个世界,而你对世界的感知又最终决定了你的生活和世界会是什么样子以及它又会变成什么样子。

《Maximum Achievement: Strategies and Skills That Will Unlock Your Hidden Powers to Succeed》

如果我不得不只能选出一本关于个人发展的书,那就是它了。为什么呢?这本书里有许多概念,而这些概念来源于有关这一主题的其他经典书籍,然后以一种简洁和清晰的方式加以解释。这本书涵盖了有关个人发展的广泛主题,为你提供了许多货真价实的建议。

《我的人生样样稀松照样赢:“呆伯特”的逆袭人生》(How to Fail at Almost Everything and Still Win Big)

这本书阐述了一种生活哲学,让你不由自主地成为人生大赢家。我从来没有料到这么一位留着一头尖尖头发的老板卡通人物会有如此智慧,但这本书却做到了。(如果你真的想看看斯科特·亚当斯的书会多么深奥,你真的想烧一烧脑,我建议你看看他的另一本名著,《上帝的残屑:对复杂世界的另类思索》(God’s Debris: A Thought Experiment)。不过,别说我没有警告你。)

深入挖掘类的书

我说的深入挖掘是什么意思?我的意思是通过抽象概念和剖析事物来理解事物是如何运作的。当然,为了完成我们的日常工作,我们并不需要知道CPU是如何工作的,也不需要了解操作系统的底层细节,但是,有时挖掘这些细节是很有趣的。因此,如果你想深入挖掘下去,这里有几本书可以推荐给你,它会带你达到你渴望的深入程度,满足我们那种孩子般的好奇心。

《编码的奥秘》(Code: The Hidden Language of Computer Hardware and Software)

这本书填补了我在计算机硬件、底层计算机科学与计算机体系结构概念上的许多知识空白。这本书最好的一点在于,它的描述方式十分有趣,充满娱乐、易于消化。我强烈建议每位软件开发者都来阅读这本书,并不是因为你需要了解本书的内容,而是因为你学习这本书中的内容会带来很多乐趣。另外,你会以一种无法想象的方式理解计算机与代码。

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs)

这是一本深奥的关于编程的书籍,尤其当你读完这本书并开始做书中的所有练习的时候。我认为你会发现这些经验是大有裨益的,它可能会改变你的思维方式和编程方式,特别是如果你从未被听说过函数式编程的概念的话。

《程序员面试金典》(Cracking the Coding Interview: 150 Programming Questions and Solutions)

如果你想在微软或者谷歌这样的大公司里找到一份工作,这本书是必须要读的。如果你想通过白板面试,也就是说你必须编写一个解决方法以解决一些算法问题,必须读这本书。这本书几乎涵盖了所有需要解决的计算机科学中难度很大的算法类型的程序,而这些内容在编码面试中恰恰是经常要被问到的。这本书涵盖了基础类型的算法与数据结构,还提供了实践性问题,可以助你一臂之力。如果你想深入学习如何解决算法类型的编码问题,这本书就是你需要的。

《计算机程序设计艺术》(The Art of Computer Programming)

我可以推荐一本我从未读过的丛书吗?当然可以。这一套四卷版的鸿篇巨制是我列为“有一天要读”的书,但我迄今为止还没敢触碰它。为什么?因为读这套书是一项巨大的事业。这套书深入细致地讲述了计算机科学的算法,都不是些简单的东西。如果你真心想要深入学习算法,而且你已经准备好了去面对烦琐的数学问题,那就去读这套书吧。让我知道你阅读时情况如何。祝你好运。

《编译原理(第2版)》(Compilers: Principles, Techniques,and Tools, Second Edition)

这本书被称为“龙书”,理由很充分。这本书描述的都是神秘深奥的内容,深入到编译器和操作系统的领域。这本书中的有些信息可能有点儿过时了,但是如果你真的对编译器是如何工作的感兴趣,并且可能想自己编写一个编译器的话,请仔细阅读这本书。娱乐消遣类的书尽管我同意,你可能会认为深入算法或编译程序的领域既有趣又好玩,但我不得不承认:并非所有的软件开发者都是如此。因此,我要向你展示的是我认为大多数软件开发者都会觉得非常有趣和好玩的书。每个人的兴趣点不尽相同。

《哥德尔、艾舍尔、巴赫——集异璧之大成》(Gödel, Escher,Bach: An Eternal Golden Braid)

我第一次听到这本书是因为有人说他们希望能在第一次读罢这本书之后再读一遍。这就足以让我购买和阅读这本书了,果然没有令我失望。它不是计算机科学或者编程的书,但是有许多与编程相关的概念,深入研究了充满矛盾和似是而非的逻辑领域。Magic 2.0系列我没有读过几本小说,但这个系列书吸引了我,因为它们把D&D元素与计算机黑客、时间旅行等内容完美结合起来。它们很有趣。再声明一次:我没有读过几本小说,但作为一名程序员,我真的很喜欢这个系列的书,所以我在这里推荐它们。

《火星救援》(The Martian)

就像我说的,我没读过几本小说,但我读这本书是因为它是程序员写的,我喜欢空间探索,而且很多人一直都在谈论这部小说。这部小说没有让我失望。这本书非常有趣、惊险刺激,而且很烧脑。这本书里的每一个情节我都非常喜欢。

《雪崩》(Snow Crash)

就小说类书籍而言,这可能是最受欢迎的书。许多开发者喜欢并推荐这本书,所以我打算把它留在这个书单中。

励志类的书

生活中,没有什么可以真正替代被人踢屁股的感觉。我们正是在逆境中学会了无惧困难和坚毅顽强。生活会给你带来巨大的压力。生活有时会很残酷、很沉重。你会失去前进的动力。你会选择放弃或者逃避。如果你遇到这些状况,下面这几本书会对你有所帮助。

《反障碍:如何从障碍中获益》(The Obstacle is the Way)

今天,我的生活中心是围绕着斯多葛学派哲学的,而这本书是我接触到的第一本斯多葛学派哲学的书。这本书的主要观点:所有发生在你身上的坏事情都不能打败你,反而可以促使你变得更加强大,帮助你找到正确的道路。这些观点大多来自斯多葛学派哲学,它们是使用历史故事来证明的。

《The 10X Rule》格兰特·卡登(Grant Cardone)

这本书告诉你,如何设定比你的目标还要高10倍或者更高的目标,以及如何投入比你想象的还要多10倍的努力来实现这些目标。它教会你如何能够并且应该采取大规模行动以获取成功的生活。这本书一定会触动你,我保证。

《Be Obsessed or be Average》

你周围有没有人说你很痴迷,你的做事方式不够健康,因为你工作太过辛苦了?这本书将教会你如何礼貌地回击他们,然后继续燃烧你的激情。这本书谈到:你可以利用驾驭自己的力量来达到任何你想要去的地方。它还谈到:有些人会试图击垮你,你该如何跟他们打交道。

《The War of Art》

这本书至少我读过十几次了,这本书实在是太棒了。这本书的主要论点:坐下来开始着手做某项工作的时候,你会意识到它总是很难的,你往往会觉得没有动力,但作为一个专业人士,你无论如何都要坚持下去。这本书帮我开发出适合我自己的工作守则以完成了我的第一本书,而且这个守则还在继续帮助我写你正在读的我的这本书。这本书教会我们:每当我们试图以各种方式成就更好的自己时,如何以不屈不挠的精神克服生活当中我们所面临的重重阻力。另外,它写得很富有诗意,所以读起来令人兴趣盎然。

书中提到的其他书

《重塑幸福:如何活成你想要的模样》马克·曼森(Mark Manson)

《极限控制:美国海豹突击队的实战启示》(Extreme Ownership: How U.S. Navy SEALS Lead and Win)

这是一本关于领导力的书,书中描述的都是在最重要、最困难的职位上学到的原则:战斗中的领导力。

《演说之禅:职场必知的幻灯片秘技》(Presentation Zen)。

我极力推荐这本书,它会让你理解如何做优秀的、简洁的演讲。你的演讲的听众会感谢你阅读过这本书。

史迪芬·E. 卢卡斯的经典名著《演讲的艺术》(The Art of Public Speaking)。

这是一本关于公开演讲的经典著作,从中我第一次听到这样的观点:告诉他们你想要告诉他们什么,然后告诉他们你想要告诉他们的,再然后告诉他们你已经告诉了他们什么。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/537250
推荐阅读
相关标签
  

闽ICP备14008679号