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

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

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

inquestion:this "Code Complete"

当前回答

好吧,所以问题不是“最好的编程书是什么”,而是“如果你能告诉自己在职业生涯的开始应该读什么”……

可能是“On Lisp”和SICP,再加上一个CLRS或Udi Manber的“算法:一种创造性的方法”。

算法介绍由Udi Manber http://vig-fp.prenhall.com/bigcovers/0201120372.jpg

前两个课程将教授许多编程技术、模式,并真正打开一个人的思维,发挥他/她自己的创造力;另外两个是不同的。它们更理论化,但也非常重要,专注于设计正确有效的算法(需要大量的数学知识)。

当“优秀编程书籍”的主题出现时,我看到很多人推荐前三本书,但最后一本(Manber写的)是一本很棒的书,但很少有人知道它。真可惜!Manber专注于算法的增量发展,通过使用归纳法进行定理证明。

其他回答

K&R

@胡安:我了解胡安,我知道——但有些东西只有真正着手手头的任务才能学到。整天用抽象的概念说话只会让你变成一个学究。正是在抽象的运用中,我们才真正领悟到它们存在的原因。: P

提到Alan Cooper的《The are Running The Asylum》真是让人大开眼界,自从我读了那本书后,任何与我合作过的开发者都听我提到过它所支持的理念。+1

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

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

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

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

托马斯·弗里德曼的《世界是平的》。

要想在编程方面取得卓越的成就,需要投入大量的精力和持续学习的精神,这与医学或法律专业不相上下。它所支付的工资只是这些职业的一小部分,更不用说那些进入金融业的数学高手了。编写代码的工资也在下降,因为在大多数经济体中,这是一个对聪明人和自律者来说相对容易进入的职业。

编程已经被侵蚀到比管道工作还便宜的地步。管道不能“外包”。你不需要每隔一年花2395美元参加一次专业管道工大会,就能获得一套全新的管道技术,这需要你花一年的时间来学习。

如果你生活在北美或欧洲,又年轻又聪明,编程并不是一个理性的职业选择。当然,涉及编程的业务。学习商业,了解足够多的编程知识来完善你的废话探测器:太棒了。但是把你大部分的精力都投入到掌握库、数据结构和算法上呢?只有当编程对你来说不仅仅是一种经济选择时,这才有意义。

如果你热爱编程,并因此打算把它作为你的职业,那么你就有必要冷静地认识到,这些力量正在并将继续使它成为一个越来越难谋生的职业。《世界是平的》不会教你如何给变量命名,但它会让你花6到8个小时沉浸在已经到来的经济现实中。如果你能读懂它,而且不害怕,那就去买《代码完成》吧。

Grady Booch的《面向对象分析和应用程序设计》。我很久以前读过这篇文章,它告诉我可以有一种开发面向对象软件的方法论。从那以后,许多其他的书对我产生了影响,但这本书让我开始了。