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

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

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

inquestion:this "Code Complete"

当前回答

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

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

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

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

其他回答

我的高中数学老师借给我一本《你的灯是身材问题》,我已经反复阅读了很多遍。无论是作为开发者,还是在生活中,它都是无价的。

如果你在Unix/Linux/MacOS等环境下工作,你必须阅读已故W Richard Stevens的《Unix环境下的高级编程》(也被称为APUE)。如果你不知道文件描述符是如何工作的,或者什么是会话,或者当你守护自己的时候你应该做的所有事情(承认吧,你不知道),那么这本书会告诉你。

之后你会觉得有点不专业,但是如果你想在Unix环境下成为一个专业的程序员(任何语言),你需要阅读这篇文章。

代码完成是第一选择,但我也会引用Gang of Four的设计模式和Craig Larman的应用UML和模式。

克里斯托弗·亚历山大(Christopher Alexander)的《永恒的建筑方式》(The Timeless Way of Building)是另一个伟大的作品。尽管它是关于架构的,但它包含在我已经读过的许多优秀编程书籍的参考书目中。

另一本,我从中学到很多新东西,是克里夫顿·诺克的《数据访问模式》。

@Peter Coulton——你不是读Knuth,而是研究它。

对我和我的工作来说…纯函数式数据结构非常适合用函数式语言进行思考和开发。

这本书并不是为初学者编写的,但是如果你正在寻找SOA设计方面的书籍,那么《SOA实践:分布式系统设计的艺术》正适合你。