如果你能回到过去,告诉自己在开发人员职业生涯的开始读一本书,你会读哪本书?

我希望这份清单是多样的,涵盖范围很广。

搜索:使用右上角的搜索框。要搜索当前问题的答案,使用inquestion:this。例如:

inquestion:this "Code Complete"

当前回答

对我来说,《设计模式解释》为我提供了一个关于设计模式的“哦,这就是它的工作原理”的时刻,并且在向其他人教授设计模式时非常有用。

其他回答

计算机科学家的离散数学http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

《计算机科学家的离散数学》作者J.K. Truss。

虽然这并没有教你编程,但它教会了你每个程序员都应该知道的基本数学。你可能还记得大学里的这些东西,但实际上,学习谓词逻辑会提高你的编程技能,如果你想用集合编程,你需要学习集合论。

这里确实有很多有趣的信息,可以让你从不同的角度思考问题。它很方便,只是偶尔拿起来学习一些新东西。

这里有两个我没有看到提到的: 我希望我能更早地阅读Koenig和Moo的《c++反思》。正是这本书让我对OO概念产生了真正的兴趣。 我推荐Michael Abrash的《代码优化禅宗》(Zen of Code Optimization)给那些打算在90年代中期开始编程生涯的人。

我认为《Unix编程的艺术》是一本优秀的书,作者是Eric S. Raymond这样的优秀黑客/天才,他试图让我们理解软件设计的一些原则(主要是简单性)。这本书是每一个要在Unix平台下开始一个项目的编程人员的必读之书。

我有几本对我有强烈影响的好书,但到目前为止我还没有在这个清单上看到:

唐纳德·诺曼的《日常事物心理学》。为他人设计的一般原则。这似乎对UI很有好处,但如果你仔细想想,它几乎在任何地方都有应用程序,只要有一个界面,除了原始开发人员之外的人就必须与之打交道;例如,一个API,并以这样一种方式设计接口,使其他开发人员形成正确的心智模型,并从API本身获得适当的反馈。

《软件测试的艺术》作者:Glen Myers。对测试软件的良好的、一般的介绍;对于程序员来说,阅读有助于他们像测试人员一样思考,即思考可能出现的错误并为此做好准备。

顺便说一句,我知道这个问题是“最具影响力的一本书”,但讨论似乎已经变成了列出供开发人员阅读的好书,所以我希望我列出两本好书而不是一本能得到谅解。

代码就是法律——你用自己选择的语言写作、编辑和思考,但为什么呢?你的代码是什么意思?它到底能做什么?

(我本可以推荐一本关于QA的书,但我没有……)