如果你可以回到过去并告诉自己在开始时作为开发人员阅读一本特定的书,那本书会是哪本书?

我希望这个列表可以变化,涵盖范围广泛。

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

inquestion:this "Code Complete"

===============>>#1 票数:1745

  • 由Steve McConnell编写的Code Complete (第2版)
  • 务实的程序员
  • 计算机程序的结构与解释
  • Kernighan和Ritchie 的C编程语言
  • Cormen,Leiserson,Rivest&Stein的算法简介
  • 四人帮的设计模式
  • 重构:改进现有规范的设计
  • 神话人月
  • 唐纳德克努特的计算机编程艺术
  • 编译器: Alfred V. Aho,Ravi Sethi和Jeffrey D. Ullman的原理,技术和工具
  • Gödel,Escher,Bach by Douglas Hofstadter
  • 清洁代码: Robert C. Martin 的敏捷软件工艺手册
  • 有效的C ++
  • 更有效的C ++
  • Charles Petzold的CODE
  • 编程珍珠由Jon Bentley 编写
  • Michael C. Feathers 有效地使用遗产代码
  • Demarco和Lister的Peopleware
  • Peter Seibel的“ 工作中编码员”
  • 当然,你是在开玩笑,费曼先生!
  • 有效的Java第2版
  • Martin Fowler 的企业应用程序架构模式
  • 小计划者
  • 经验丰富的计划者
  • 为什么(Poignant)Ruby指南
  • 囚犯正在运行庇护:为什么高科技产品让我们疯狂以及如何恢复理智
  • Unix编程的艺术
  • 测试驱动开发: Kent Beck的例子
  • 敏捷开发人员的实践
  • 不要让我思考
  • Robert C. Martin的敏捷软件开发,原则,模式和实践
  • Eric Evans的领域驱动设计
  • 唐纳德诺曼的日常事物设计
  • Andrei Alexandrescu的现代C ++设计
  • 最佳软件写作由Joel Spolsky 撰写
  • Kernighan和Pike 编程的实践
  • 务实的思考和学习:安迪亨特重构你的Wetware
  • 软件评估:史蒂夫麦康纳揭开黑人艺术神秘面纱
  • Chad Fowler 的充满激情的程序员(我的工作去了印度)
  • 黑客:计算机革命的英雄
  • 算法+数据结构=程序
  • 编写固体代码
  • JavaScript - 好的部分
  • 通过37个信号获得真实
  • Karl Seguin 的编程基础
  • 计算机图形学:C的原理与实践 (第2版)
  • 由Bruce Eckel 用Java思考
  • 计算系统的要素
  • Joshua Kerievsky 对模式重构
  • Andrew S. Tanenbaum的现代操作系统
  • 注释图灵
  • 唐纳德诺曼让我们变得聪明事情
  • 克里斯托弗亚历山大的永恒建筑方式
  • 截止日期: Tom DeMarco 关于项目管理小说
  • Stroustrup 的C ++编程语言(第3版)
  • 企业应用架构模式
  • 计算机系统 - 程序员的视角
  • C#中敏捷原则,模式和实践由Robert C. Martin撰写
  • 测试的指导下不断发展的面向对象软件
  • Brad Abrams的框架设计指南
  • David West博士的对象思考
  • 由W. Richard Stevens 在UNIX环境中进行高级编程
  • 黑客和画家:计算机时代的重大创意
  • Tracy Kidder 的新机器灵魂
  • CLR通过C# by Jeffrey Richter
  • 克里斯托弗亚历山大的永恒建筑方式
  • Steve Metsker 在C#中设计模式
  • 刘易斯卡罗尔的爱丽丝梦游仙境
  • 禅宗和 Robert M. Pirsig 的摩托车维修艺术
  • 关于面 - 交互设计的要点
  • 每个人都来: Clay Shirky 没有组织的组织力量
  • 编程之道
  • 自然的计算美
  • 编写 Steve Maguire的固体代码
  • 菲利普和亚历克斯的网络出版指南
  • 面向对象的分析与设计与 Grady Booch的应用
  • 约书亚布洛赫的有效Java
  • NJ Cutland的可计算性
  • 编程的主人
  • 道德经
  • 富有成效的程序员
  • 凯文米特尼克的欺骗艺术
  • 职业程序员: Christopher Duncan 为一个不完美世界游击战术
  • 人工智能规划范式:Common Lisp中的案例研究
  • 厄运大师
  • 由Andy Hunt和Dave Thomas与Matt Hargett 在C#中使用NUnit进行语用单元测试
  • George Polya 如何解决这个问题
  • 保罗科埃略的炼金术士
  • Smalltalk-80:语言及其实现
  • 编写安全代码 (第2版)作者:Michael Howard
  • Philip Wadler和Richard Bird的功能编程简介
  • 没有虫子! 作者:David Thielen
  • 由Jason Freid和DHH 重做
  • JUnit in Action

===============>>#3 票数:9

极限编程解释:肯特贝克拥抱变革 虽然我不提倡硬件XP或高速公路上的软件开发,但我希望在我职业生涯的早期就已经介绍过本书的原理。 单元测试,重构,简单性,持续集成,成本/时间/质量/范围 - 这些改变了我对开发的看法。 在敏捷之前,这完全是关于调试器和对变更请求的恐惧。 在敏捷之后,那些恶魔并没有那么大。

===============>>#4 票数:9

编程的实践。 作者:Brian W. Kernighan,Rob Pike。

这里显示的风格非常好 - 代码本身就说明了,整本书遵循KISS原则。 个人不是我选择的语言,但仍然对我有影响。

===============>>#5 票数:9

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

JK Truss 为计算机科学家提供离散数学

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

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

===============>>#6 票数:9

K&R

@Juan:我知道Juan,我知道 - 但是有些事情只能通过实际掌握手头的任务来学习。 整天在抽象的理想中说话只会让你成为一名学者。 正是在抽象的应用中,我们才真正理解它们存在的原因。 :P

@Keith:很好地提到Alan Cooper的“囚犯正在逃避庇护” - 这是一个让人大开眼界的开明者,自从我读到这本书后,任何与我合作过的开发者都听到我提到它所支持的想法。 +1

===============>>#7 票数:9

类型和编程语言由Benjamin C Pierce全面理解编程语言的基础。

===============>>#8 票数:9

系统论:系统如何工作,特别是它们如何失败 让它用得便宜。 但是,在你完成一些失败的项目之前,你可能不会得到幽默。

这本书的美丽是版权年。

可能是书中提出的最深刻的“法律”:

基本故障模式定理(FFT):复杂系统通常以故障模式运行。

这个想法是,在任何给定的软件中都存在由其他部分的故障或其他部分的验证掩盖的故障部分。 查看Therac-25辐射机的真实示例,其软件缺陷被硬件故障屏蔽。 当硬件故障被移除时,那些年未被发现的软件竞争条件导致该机器造成3人死亡。

===============>>#10 票数:9

最终软件工艺

替代文字http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

本书解释了很多关于软件工程,系统开发的内容。 理解不同类型的产品开发之间的区别也非常有用:Web VS shrinkwrap VS IBM框架。 人们在设想瀑布模型时会想到什么? 阅读本文,我们将变得清晰(希望如此)

===============>>#11 票数:9

数据库系统概念是您阅读有关理解良好数据库设计原则的最佳书籍之一。

替代文字

===============>>#12 票数:9

从头开始编程。 它在互联网上免费。 这本书教我AT&T asm。 它很容易阅读。

替代文字

===============>>#13 票数:9

人工智能编程范式 :Peter Norvig的Common Lisp案例研究

在此输入图像描述

我开始阅读它是因为我想学习Common Lisp。 当我中途休息时,我意识到这是迄今为止我读过的关于编程的最好的书。

===============>>#14 票数:9

我最喜欢的一个是Hacker's Delight ,因为阅读和教育一样有趣。

我希望第二版即将发布!

===============>>#15 票数:8

替代文字

去年我参加了一些课程。 我读

创新者的困境(颠覆性技术)
神话人月(管理软件)
越过深渊(启动)
数据库管理系统,COW书
编程C#,OSTRICH书
开始iPhone开发,GRAPEFRUIT书

每本书都令人惊叹,但Clayton Christensen(1997 !!!)的创新者困境真的是一本很棒的书,让我真正想到了现代软件世界。 所面临的挑战是颠覆性技术,以及磁盘驱动器公司和非技术公司如何总是被新的,改变游戏规则的技术所破坏。 在考虑谷歌(可能是最大的“网络”公司)时,它给了一个新的视角。 为什么他们有他们的手在一切? by something new. 这是因为他们不希望自己的位置新事物的 谷歌上的预览很容易得到这个想法。 阅读!

===============>>#16 票数:8

@Peter Coulton - 你不读Knuth,你研究它。

对我而言,我的工作...... 纯粹的功能数据结构非常适合思考和开发功能语言。

===============>>#17 票数:8

黑客,Steven Levy。

人格和生活方式必须先行。 其他一切都可以学习。

===============>>#18 票数:8

The New Turing Omnibus http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

真是好书。 具有高级品味的计算机科学最重要的领域。 是的,CS!=编程,但这对每个程序员来说仍然有用。

===============>>#20 票数:8

编程实践

替代文字

如何通过计算机解决它

alt text http://img.infibeam.com/img/7101e0ee/496b1/05/629/PMB-9788131705629.jpg?hei=200&wid=160&op_sharpen=1

===============>>#21 票数:8

Python语言对我很有影响力,我希望多年前我会阅读这些书。 Python语言的美观和简洁性确实影响了我在其他语言中编写代码的方式。

替代文字替代文字

===============>>#22 票数:8

托马斯弗里德曼的“世界是平的”。

卓越的编程需要投入精神能量,并致力于与医学或法律专业相媲美的持续学习。 它只支付了这些职业支付的一小部分,更不用说支付给进入金融领域的数学精明的工资。 构建代码的工资正在逐渐下降,因为对于大多数经济体中的智能和自律而言 ,这是一项相对容易的职业。

编程已经被削弱到支付低于管道的程度。 管道不能“离岸外包”。 您无需每隔一年支付2395美元参加专业水管工会议,因为他们有权获得一套全新的管道技术,这将花费您一年的时间来学习。

如果你生活在北美或欧洲,年轻,聪明,编程不是理性的职业选择。 绝对涉及编程的企业。 学习业务,了解编程以改进您的BS探测器:辉煌。 但是,将精神能量的大部分用于掌握图书馆,数据结构和算法? 只有编程对你来说比经济选择更重要,才有意义。

如果你喜欢编程,并且因为这个原因打算将它作为你的职业生涯,那么你应该对那些已经并将继续的力量形成一种冷漠的理解,使其成为一种更难以谋生的职业。 。 “世界是平的”不会教你如何命名你的变量,但它会让你沉浸在已经到来的经济现实中6或8小时。 如果你能阅读它,而不是害怕, 那么就去购买“Code Complete”。

===============>>#23 票数:7

替代文字http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

C ++如何编程它对初学者有好处。这本书是完整的1500页。

===============>>#24 票数:7

Fred Brooks的神话人月http://en.wikipedia.org/wiki/The_Mythical_Man-Month

===============>>#25 票数:7

厄运大师。 至于对你的职业的动机和热爱:它不会比本书中描述的更好,真实地鼓舞人心的故事!

===============>>#26 票数:7

我认为“Unix编程的艺术”是一本优秀的书,由优秀的黑客/聪明的头脑作为Eric S. Raymond,他试图让我们理解软件设计的一些原则(主要是简单性)。 对于即将在Unix平台下启动项目的每个编程人员来说,本书都是必读的。

===============>>#27 票数:7

虽然我同意上面的许多书都是必读书(实用程序员,神话人月,计算机程序设计艺术和SICP​​立刻浮现在脑海中),但我想向一个略有不同的方向推荐一个学科 Edsger Dijkstra 编程 尽管它已有32年历史,但对“可验证性设计”的强调具有高度相关性(即使“可验证性”意味着“证明”而非“单元测试”)。

===============>>#29 票数:7

这是一本优秀的书,并没有得到广泛的掌声,但却充满了深刻的洞察力: 敏捷软件开发: Alistair Cockburn 的合作游戏

这有什么特别之处? 好吧,显然每个人都听过“敏捷”一词,而且现在看来大多数人都是信徒。 不管你是否相信,敏捷运动存在的背后都有一些深层原则。 本书以精确,科学的方式揭示和阐述了这些原则。 一些原则是(顺便说一句,这些是我的话,而不是Alistair的):

  1. 团队软件开发最难的事情就是让每个人的大脑都有相同的理解。 我们正在建造庞大,精细,复杂的系统,这些系统在有形世界中是看不见的。 你越是让更多人的大脑分享更深入的理解,你的团队在软件开发方面的效率就越高。 这是结对编程有意义的根本原因。 大多数人都不赞成(我最初也是这样做的),但考虑到这个原则,我强烈建议你再给它一次。 你结束了两个深刻理解你刚建立的子系统的人......没有太多其他方法可以如此快速地进行如此深入的信息传输。 这就像一个瓦肯人的心灵融合。
  2. 你并不总是需要用语言来快速传达深刻的理解。 还有一个推论:太多的话,你超过了听众/读者的能力,这意味着你正在尝试的理解转移不会发生。 考虑到孩子们通过“沉浸”和“吸收”来学习如何说语言。 不仅仅是语言......他举了一些孩子在地板上玩火车的例子。 走来从来没有谁之前也......但通过观看其他孩子见过火车另一个孩子,他拿起游戏的要点和右边沿播放。 这种情况一直发生在人类之间。 这个以及太多单词的推论可以帮助您了解在旧的“瀑布”时代如何误导它来尝试编写700页的详细要求规范。

那里还有更多。 我现在闭嘴,但我强烈推荐这本书!

===============>>#30 票数:7

Martin Fowler的重构:改进现有代码的设计已经列出。 但我会详细说明它为何影响了我。

整本书的本质是关于构造代码,以便人类更容易阅读和理解。 它强烈地告诉我,我写的代码是为了让我的同事和后继者消费并可能从中学到一些东西。 它激励我有意识地以一种让人们赞美我的名字的方式进行编程,而不是诅咒我永远的诅咒

  ask by community wiki translate from so

未解决问题?本站智能推荐: