`

转 12本最具影响力的程序员书籍

阅读更多

译文链接:http://www.codeceo.com/article/12-influential-books-programmer.html
英文原文:12 Most Influential Books Every Software Engineer Needs to Read
翻译作者:码农网 – 小峰

很多人问我这个问题,尤其是那些刚开启软件工程生涯的同事和朋友。

要成为一个更好的开发人员,我应该读哪些书?我真的需要读书吗?

这是一个很值得探讨的问题,而且也是我在成为软件工程师之时问了很多导师的一个问题。但问题是,很多人推荐的是不同主题的不同书籍。他们推荐的书在他们看来是伟大的,但没有人能告诉我,要想成为一个伟大的工程师,我应该阅读什么,哪些是重要的、是必读的书籍。

我从我的导师那儿学到了很多东西,并意识到,我仍然有很多东西需要学习,还有许多不同的书需要阅读。我决定每个月读一本专业领域(软件工程)的书。随着时间的积累,我总结出了我认为想要成为一个顶级开发人员必须阅读的书单。

事先声明——只是阅读这些书不会让你成为一个伟大的开发者。你还需要积累多年的工作经验,并应用这些书中的原则到现实实践中,并在现实世界中发展你解决问题的能力。

阅读这些书可以帮助你避免一些常见的陷阱和错误,一些开发人员早期经历的陷阱和犯过的错误。我多么希望在我刚进入软件领域的时候,就有人向我推荐这 些书啊,并且我现在依然很庆幸自己发现并反复阅读了这些书!也许你已经在大学读计算机科学或工程课程的时候读到过其中的一些书。也许在那个时候,你觉得它 们并不重要,但是我可以用我亲身经历来说明我使用和应用了许多来自于这些书的原则。

我还要指出的是,此书单并不详尽。每年都会有许多伟大的著作问世。这些只是对我和我的职业生涯影响最大的书籍。此外,这些书和使用什么语言无关,可以应用于任何软件语言。

好了,让我们开始介绍这些书吧! (请鼓掌)

(这些都是必不可少的,我将根据它们对我的影响大小从后往前介绍。)

12.《Working Effectively with Legacy Code》

我之所以喜欢这本书,是因为几乎所有的软件开发人员,在其职业生涯的某个时刻,往往会不得不支持和工作于遗留系统。在这本书中,Michael Feathers提供了从开始到结束的策略,以便于更有效地工作于未经测试的遗留代码库。本书借鉴了Michael为其著名的Object Mentor专题研讨会创作的材料:Michael用于指导的技术,以帮助开发人员,技术管理人员和测试人员掌控遗留系统。

11.《The Mythical Man-Month》

本书是一本经典之作,但最近被修改和更正了。令人惊奇的是这本书仍然与软件产品开发密切相关。如果你从事软件的话,这本书是必读的。这本书最有价值 的部分,我相信,是“plan to throw out”原型章节。尽管我们的目标通常是做一个更大,更好,更快,不管它是什么的东西,但是我们总会构建出一些不得不被废弃,需要重做的东西。这种情况我 亲身经历过很多很多次。因此,关键是要plan to throw out(计划抛弃),这样你才能适应接下来的情况。如果你梦想第一个产品就ok,那么你就会有抛弃它们的风险,因为产品的改进和发展是不可避免的。计划抛 弃也有助于通过设置合理的里程碑来达到进度目标。

10.《Design Patterns》

如果你打算成为一名架构师或系统的设计人员,那么你很有可能会被要求阅读这本书。这是一本被誉为有史以来最伟大的有关于软件开发的书,详细讲述了许多不同的设计模式,这么多年来一直在帮助软件工程师避免和处理行业面临的常见问题。遵照这本书的策略可以助你打造更高品质,灵活和可维护的软件。传说中的“四人帮”就是这本书,因为它是由四个著名的作者共同编写的。

9.《Programming Pearls 第二版》

这本书和这书单上的其他书籍略有不同。我想说这本书可以帮助一个人“像一个程序员一样思考”。《Programming Pearls》是先前发表在“Communications of the ACM(美国计算机学会通讯)”的15篇专栏的一个纲要。这些专栏涵盖了广泛与编程相关的主题:从需求收集到性能优化。重点关注编码技术和算法。

每个专栏被组织为一个章节。章节通常以一个实际问题的情景呈现开头。然后,提出各种解决方案和相应的经验教训。写作风格清晰明快。

《Programming Pearls》不是教授新编程概念的寻常书籍。虽然它包含了优秀,有时甚至是相当新奇的想法,但这本书的目的不是教你一些新的东西,而是帮助你成为一个更好的问题解决者。

8.《CODE: The Hidden Language of Computer Hardware and Software》

这本书清理了创建和开发复杂系统的大量“魔法”。现在的抽象是如此之多,以致于一些低层次的细节反而不为开发人员所知。虽然你可能不会发现自己在实 践中时刻使用着这本书——但我相信,知道自己正在构建什么以及整个编排的工作原理是什么,总归是一个好主意。当你需要打开“黑匣子”,深入软件或硬件来解 决一个讨厌的bug的时候,它就能派上用场了。Charles Petzold写的《CODE: The Hidden Language of Computer Hardware and Software》梳理了许多编程概念——从数字系统的十进制,八进制,二进制到高级语言。这本书介绍了基于包的通信协议和TCP。许多章节讲解了有关硬 件的概念,有五个章节涉及到了软件和教导操作系统,浮点运算和图形用户界面。

7.《The Art of Computer Programming》

这又是一部经典之作。由著名的计算机科学家教授Donald Knuth编著,并得到行业内众多顶尖程序员的一致好评。甚至连Bill Gates也对这本书赞誉有加:

“如果你认为你是一个真正优秀的程序员……那么就去读[Knuth的]《The Art of Computer Programming》吧……如果你能读懂整本书,那么请一定要给我发简历。”

这本书以基本的编程概念和技术开头,然后聚焦于更具体的信息结构——计算机内的信息表示,数据元素之间的结构关系,以及如何有效地处理这些问题。此外还提供了基本的应用程序给仿真模拟,数值方法,符号计算,软件和系统设计。

6.《Refactoring》

Martin Fowler写的《Refactoring》主要关于改进现有代码的设计。这是一个改变软件系统而不改变代码的外部行为,却能提高它内部结构的过程。通过 重构,你甚至可以将一个糟糕的设计重新制作为一个很好的设计。这本书对重构原则进行了深入探讨,包括在哪里发现重构的机会,以及如何建立所需的测试。另外 还有一个目录有40多个已经用细节证明的重构,这些细节包括何时以及为什么要使用重构,逐步说明如何实现重构,并举例说明重构是如何工作的。这本书用 Java作为其主要语言而写,但其中的思路适用于任何OO语言。

5.《Clean Code》

《Clean Code》,作者Robert C. Martin,分为三个部分。第一部分介绍原则、模式和编写干净代码的实践方法。第二部分包括若干个复杂度渐进的研究案例。每个案例研究就是一个清洁代码 的练习,也是通过解决代码库中的一些问题让代码变得健全、高效的练习。第三部分是决定性的一个部分:每个单独的章节在创建案例研究的时候包含了一系列启发 式的教学法。最后得到了描述我们在编写、阅读和清理代码时的思考方式的知识库。

4.《Introduction to Algorithms》

这必须是理解和使用算法(将在软件开发中涉及很多)的最佳书籍。有些关于算法的书虽然严谨,但不全面——还有一些虽然涉及面广,但却缺乏严谨性。 《Introduction to Algorithms》独特地结合了严谨性和全面性。这本书涵盖了广泛又深入的算法,使得书中的设计和分析能够面向所有层次的阅读人员。每个章节相对独 立,可看作是一个学习单元。算法用英语和可读的伪代码描述。它使用初级基本的解释,并不牺牲覆盖的深度和材料的严谨性。第一版不仅广泛成为了世界各地高校 的教材,还成为了专业人士的标准参考书。第二版新增了算法,概率分析,随机算法,线性规划的章节。

3.《Structure and Interpretation of Computer Programs》

以一种对解决问题和编程技术分析和严谨的态度,这本书面向于工程。《Structure and Interpretation of Computer Programs》强调通过不同方式来发挥核心作用,以处理计算模型中的时间。其独特的方式使得它非常适合于计算机科学课程,以及编程语言和程序设计的入 门。这本书进一步解释了4个最著名的编程语言范式——命令式编程,面向对象编程,基于逻辑编程和应用性编程。

2.《Pragmatic Programmer》

这是我最先阅读的编程书籍之一。是我的一个朋友在我就职第一份专业工作的时候推荐给我的。我很庆幸他这么做了。尽管这本书写于1999年,但是它的 概念是我们以一种务实的态度去开发复杂系统的基础。程序员也是工匠,他们被训练使用一组特定的工具(编辑器,对象管理,版本跟踪器)生成某种可在一定环境 中(硬件组件上的操作系统)工作的产品(程序)。和任何其他工艺一样,计算机编程也孕育出了智慧,但其中的大多数智慧是不能从大学或认证课程中学到的。大 多数程序员只能通过独立的试验,时间一点点的积累,才能掌握这些所谓的技巧。在《Pragmatic Programmer》一书中,Andrew Hunt和David Thomas编纂了很多他们在分别作为软件设计者和代码编写者的职业生涯中发现的真理。

作者的一些实用性建议非常具体,而且显然很易于实施。他们建议读者去学习,例如一个文本编辑器, 然后在各种情况下使用它。他们还建议使用版本跟踪软件——即使是对最小型的项目,学习正则表达式语法和文本操作语言。书中还有其他许多也非常有价值的建 议。在调试部分,作者指出:“如果你看到蹄印的话,应该考虑马这个范围,而不是斑马。”也就是说,要怀疑一切,然后从最显眼的地方寻找问题。还有关于预估 时间和费用,以及将集成测试纳入到开发进程的建议。《Pragmatic Programmer》让人爱不释手的还有两个原因:它会更清晰地梳理你自己积累的智慧,它还会给你介绍你还没考虑到的工作方法。

1.《Code Complete 2》

就是它了!这就是我认为首屈一指值得阅读的书(请恕我妄言),如果你要成为一个优秀的软件工程师的话。它被广泛认为是最好的实用性编程指南之 一,Steve McConnell最初的《Code Complete》在过去的10多年时间里,一直在帮助开发人员编写更好的软件。现在,这部经典书籍已全面更新,修改成了前沿的实践方法——以及数以百计 的新的代码示例——修订了软件结构的艺术和科学。从研究、学术界和日常商业实践中捕获知识体系,McConnell将最有效的技术和必须知道的原则总结成 清晰又务实的指导。无论你的经验水平,开发环境,还有项目规模如何,这本书都可以启迪和激发你的思考,帮助你打造最优质的代码。

分享到:
评论

相关推荐

    程序员必读-最有影响力的书籍

    stack over flow :What is the single most influential book every programmer should read? 这里整理了前20本,后面再补充剩余的70本

    对程序员最有影响力的书籍之一:人月神话

    这本书自1975年首次出版以来,一直保持着其在IT行业的影响力,至今仍被广大程序员、软件项目经理和系统分析师视为必读书目。它不仅是一部技术书籍,更是深入探讨软件开发过程和管理哲学的著作。 书中最重要的概念之...

    程序员的八重境界

    他们在技术领域达到了极致,并且具备深远的影响力。 - **特征:** - 在行业内享有极高的声誉,被视为精神领袖。 - 对新兴技术有敏锐的洞察力,能够预见未来的发展趋势。 - 通过自己的言行影响着整个行业的价值观...

    程序员需要知道的书籍

    首先,提到的《编译原理》是一本极具影响力的书籍,作者通常被尊称为“龙书”。这本书详细介绍了如何将高级语言转换为机器可执行的代码,即编译器的设计与实现。它涵盖了词法分析、语法分析、语义分析以及代码生成等...

    程序员养生书

    长时间坐姿工作、面对电脑辐射、缺乏运动、加班熬夜等问题,都可能导致程序员出现各种职业病,如颈椎病、腱鞘炎、脂肪肝等,甚至影响到心脑血管健康。而这些问题的存在使得程序员成为亚健康的代名词。因此,程序员...

    极好的书籍程序员羊皮卷

    《程序员羊皮卷》是一本深受程序员群体喜爱的书籍,它深入浅出地探讨了程序员在职业发展中所需的各种技能和智慧。这本书不仅涵盖了技术层面的知识,更包含了对程序员职业生涯规划、个人成长以及团队协作等方面的独特...

    程序员养生书草稿1

    10. 编写养生书籍的动机:作者有中医背景,后转行做程序员,希望用自己的经验编写一本适合程序员阅读的养生书籍。 通过这些内容,可以看出程序员的养生不仅关系到个人的身体健康,也影响到他们的工作状态和生活质量...

    java解惑(最具影响力的JAVA书籍)

    "Java解惑"这本书籍旨在帮助程序员解决在实际编程过程中遇到的困惑和难题,通过深入浅出地解释那些看似出乎意料的代码行为,帮助读者提升对Java语言的理解。 1. **异常处理**:Java中的异常处理是一个重要的概念,...

    程序员如何提高效率(转)

    因此,程序员应学会区分并利用好不同时段的时间质量,避免在低效时段进行高难度工作,而将黄金时间留给最具挑战性的任务。 #### 应对情绪波动 情绪状态对工作效能的影响不容忽视。积极的情绪有助于提高工作效率,...

    程序员困上班那点事经典

    《程序员困上班那点事经典》是一本深入探讨程序员职业生活和心理状态的书籍,它旨在帮助程序员在日常工作中找到解决困惑、提升效率的方法。标签“程序员上班心态”揭示了书中的主要内容,即关注程序员在工作中的心理...

    程序员必读非程序书籍

    【程序员必读非程序书籍】 对于程序员来说,技术能力的提升固然重要,但扩展视野、增强人文素养和社交技巧同样不可忽视。...通过阅读这些非编程书籍,程序员可以成为更全面、更具洞察力的专业人士。

    程序员教程第3版

    首先,“程序员教程第3版”这一标题表明这本书是一本针对程序员的教程书籍,且为第三版。通常来说,一本书经过多次版本的更新,往往意味着其中的内容得到了相应的改进和增补,以符合最新的技术标准和行业需求。第三...

    程序员十层境界(很经典)

    他们可能是开源社区的重要贡献者,或者是在业界具有广泛影响力的博客作者。 #### 第六境界:大师 大师级别的程序员在技术领域内具有极高的声望,他们不仅在专业技能上达到了顶峰,而且对于行业的未来发展也有着独到...

    程序员职业规划:让自己变得重要

    #### 四、营销:扩大影响力 **1. 展示成果** - 积极在工作中运用所学新技术,并向团队展示其带来的效益。 - **成功经验**:通过项目演示、技术分享会等形式,让同事和上级了解自己的技术实力。 **2. 社交网络建设**...

    <程序员>电子杂志PDF

    4. **开发者访谈**:邀请有影响力的开发者分享他们的工作经验、项目管理心得,或是对技术未来的见解,为读者提供启示和灵感。 5. **实战案例**:通过具体的项目实例,展示如何解决实际开发中遇到的问题,包括架构...

    程序员实用算法书中的源码

    《程序员实用算法书中的源码》是一本专为程序员设计的算法书籍,旨在提升程序员在实际工作中应用算法的能力。该书由(美)Andrew Binstock和John Rex合作撰写,并由陈宗斌等人翻译成中文。书中涵盖了一系列精选的...

    程序员如何运用数学上统计的思维,是一本有关的电子书还有C#反编译

    在IT行业中,尤其是在编程领域,数学和统计学的思维能力是至关重要的。本文将深入探讨如何作为程序员,你可以运用数学上的统计思维,并结合...最后,不要忽视人文素养的培养,这将使你在编程生涯中更具创新性和洞察力。

    我编程,我快乐:程序员职业规划之道

    在IT行业中,个人影响力和网络存在感同样重要。通过博客、开源贡献、技术分享等方式,你可以展示自己的专业知识,吸引同行的关注,从而拓展职业机会。 此外,持续学习是程序员生涯的关键。不论是通过在线课程、研讨...

    程序员面试功略+程序员面试宝典

    它们可能会提供关于如何选择适合自己的职位、如何在职场中持续成长、如何建立个人品牌和影响力等方面的指导,帮助程序员规划长期的职业发展路径。 总的来说,《程序员面试功略》和《程序员面试宝典》全面覆盖了...

Global site tag (gtag.js) - Google Analytics