对我的软件开发生涯影响最大的书籍

我已经阅读了许多有关软件开发的 ,并且从其中的大多数书中学到了有价值的东西,但是这些书中的一小部分对我以及我开发软件的方式都产生了重大影响。

有效的C ++和更有效的C ++

尽管在开始我的职业生涯之前,我已经用BASIC,Pascal,C和C ++编写了许多代码行,但是C ++是我的第一门专业编程语言。 因此,这是我开始超越基本语法并了解编程语言更多高级问题和细微差别的第一门编程语言。 第一次,我开始考虑性能问题,可维护性,可读性以及其他问题,而不仅仅是代码是否有效。 有效的C ++和更有效的C ++帮助我看到了编程不仅仅是基本语法和使功能正常工作。 这些书使我意识到,有一些通用的编程概念值得我们明智地遵循,但也有一些特定于语言的概念和技巧,人们应该在所选的编程语言中学习和应用这些概念和技巧。 通用软件开发原则适用于多种语言,但有时也需要了解特定于语言的功能。

有效的Cplusplus封面
moreEffectiveCplusplusCover

有效的Java,版本1和2

在拥有有效的C ++和更有效的C ++的良好经验之后,当我从C ++过渡到Java时(这是一个不断发展的过渡),我很高兴学习名为《 有效Java》的书。 有效的Java并不令人失望。 与在我的C ++经验中开始阅读Scott Meyer的C ++书籍相比,我从Java经验中开始阅读“有效的Java”要早得多,它对我有极大的帮助。 从一开始,它帮助我看到在使用Java开发时,不仅要考虑编写语法和使事情正常工作,还需要考虑更多因素。

有效的JavaCover

Java食谱

尽管这些年来我已经购买并阅读了看似无数的Java主题书籍,但我从未有过有关Java语言基础知识的书籍。 相反,我一直有专门针对Java或Java EE方面的专业书籍。 我学习Java编程语言基础的方法是通过Java Cookbook 。 它使我意识到,我喜欢这种基于配方的方法来阅读,学习和应用新的编程语言。 从那以后,我一直喜欢面向食谱的书籍,尤其是对于快速学习和应用新的编程语言或框架而言。

JavaCookbookCover

Groovy食谱:润滑Java的轮子

Groovy食谱:润滑Java的轮子是我对Groovy的介绍。 这本优秀的书很好地介绍了Groovy,不仅快速介绍了它的语法和功能,而且还介绍了Groovy可以在日常常规情况下应用的实用方法。 我很快就了解了学习Groovy的价值,并意识到Groovy不仅仅是一种流行的语言时尚。 本书重申了我的认识,即我从面向食谱的书籍中学习了最好的编程语言,这些书籍演示了实际情况下使用的语言。 Groovy食谱:使用Java和Groovy语言本身给我提供了工具和信心来比过去做更多的脚本,因此极大地影响了我的整体软件开发方法。 能够使用相似的语言(Groovy和Java)编写脚本和开发软件,并使用相同的Java库和框架使编写脚本变得更加容易。 更容易的脚本编写意味着我可以完成更多的工作,而花费的时间更少。

groovyRecipesCover

关于模式的Holub:通过查看代码来学习设计模式

在看到Allen Holub在SD West 2005上演讲后,我购买了Holub on Patterns (我不是唯一的一个 )。 Holub 是《为什么扩展是邪恶的以及为什么Getter和Setters是邪恶的》的作者 ,对我关于面向对象编程的思维方式(当时的传统思维和普遍接受的思维方式)提出了挑战。 我现在绝对从行为角度而不是数据角度来看对象。 同样,尽管愿意在必要时编写get / set方法,但由于多核时代已经帮助我们意识到可变状态的危险 ,因此我不愿在需要时才编写它们具有很大的好处。

尽管Holub on Patterns确实深入介绍了用Java实现的一些常见设计模式,但是它对我的影响更大是在我对面向对象设计的看法上。

holubOnPatternsCover

专家一对一的J2EE设计和开发

在企业Java应用程序的开发人员被告知使用重量级EJB并喜欢它的时候,我们许多人都在想,当它对我们来说似乎过于复杂时,我们会缺少什么。 Rod JohnsonJ2EE设计和开发使我感到非常激动。 令人欣慰的是,我并不是唯一一个认为EJB 1.x太困难和麻烦的人。 更重要的是,Johnson的书提供了示例和讨论文本,有助于查看J2EE的哪些部分值得使用以及哪些部分需要改进。 Spring框架是从本书所涵盖的示例中诞生的,Spring的成功激发了Java EE的变化,这些变化使Java EE更具生产力和实用性。 J2EE设计和开发个人影响了我,并影响了整个社区。 这也帮助我认识到,即使所谓的专家坚持认为某件事并非仅此而已,还是可以做到的。 从那时起,这帮助我渡过了软件开发领域的众多时尚(及其盲目拥护者)。 这本书也清楚地表达了我对企业Java开发的想法。

j2eeDesignDevelopment_cover_0764543857

使用Rails进行敏捷Web开发

Ruby on Rails的 短暂迷恋中 ,我发现Agile Web Development with Rails是Ruby on Rails的很好的介绍。 尽管我很喜欢Rails,但是我从未像在Java中那样工作过。 使用Rails进行敏捷Web开发向我介绍了Ruby on Rails,但更重要的是,它以实用的方式演示了如果客户随时可以提供反馈的情况下如何进行敏捷开发,这影响了我的职业生涯,而该职业大多不在Rails中。 使用Rails进行的敏捷Web开发和Ruby on Rails框架本身帮助改变了我的思维方式,以了解约定优于配置的价值。 此后不久,Java领域开始受到Ruby on Rails成功的启发而发生的变化。 其中包括采用“ 例外配置 ”方法的Java Persistence APIJPA )和Grails框架 。 Ruby on Rails影响了许多Web开发社区, 使用Rails进行敏捷Web开发是使我能够最轻松地亲自体验这种影响的工具。

agileWebDevelopmentWithRailsCover

编程实践

编程实践不会浪费时间在多余的页面上。 这本250页的书涵盖了编程中的最基本问题,例如调试,测试,性能和可移植性。 我在软件开发生涯的早期就读过这篇文章,发现自己不时地阅读其中的一部分。 自从涉及这些主题以来,已经出现了许多很棒的书,但是《编程实践》是第一本为我涵盖其中大部分内容的书。

tpop_cover

软件Craft.io:新的当务之急

软件Craft.io:《新命令》在我的职业生涯中几乎是完美的时间出版。 这本书帮助我阐明了自己对“软件工程师”更完整的看法。 另外,这本相对简短的要点书帮助我发现了其他方法,这些方法以后将用于使我的代码不仅仅是功能。

softwareCraftsmanshipCover

201软件开发原理

201软件开发原理的特征201对201软件开发原理的简短描述(通常是一两个段落),并参考公认的专家资源,并详细介绍了该原理。 文本足够全面,足以理解该原理,并且对可靠来源的引用使读者能够更详细地学习如何应用涵盖的原理。 这本书不仅帮助我巩固了这些原则,而且帮助我理解了软件开发人员可以使用的各种材料。

在我的软件开发生涯中,我反复看到趋势来来往往。 有时,我会听到一个相对较新的开发人员谈论某些“新”事物,实际上这只是同一想法的转世,其形式不同于先前的变化。 201软件开发原理帮助我在职业生涯的较早阶段就意识到,对我而言,“新”的许多概念和原理对更大的软件开发行业来说并不是真正的新事物。 我们行业中的大多数“创新”概念通常具有共同的主题,甚至以本书所涵盖的一项或多项原则为基础。

201_principles_software_development_cover

结论

这篇文章涵盖的书对我的软件开发事业以及我今天对软件开发的看法都产生了重大影响。 其他许多书籍的影响程度也较小。 在某些情况下,如果我在职业生涯的另一个不同的时期(通常是更早的时期)遇到这些其他书籍,那么它们可能会产生更大的影响。 实际上,这可能是本文的重点:不同的书籍将对不同的开发人员产生不同的影响,具体取决于这些开发人员在其职业生涯中所处的位置。 这篇文章中的书对我的影响特别大,但是我知道其他开发人员也受到诸如Code CompleteClean Code和许多其他书之类的书的影响。 编译时,我对清单上有多少种特定于语言的书感到惊讶,但每本书实际上都是关于该语言的。 这些书是关于如何应用语言来实现更通用的软件开发理想的,而这对我来说是最有影响力的。

翻译自: https://www.javacodegeeks.com/2014/08/books-that-have-most-influenced-my-software-development-career.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值