InfoQ

InfoQ

文章

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Book List

InfoQ编辑们的推荐书目

作者 Charles Humble 译者 曹如进 发布于 2009年11月5日

领域
企业架构,
过程 & 实践,
语言 & 开发
主题
SOA ,
Ruby ,
Java ,
架构 ,
敏捷 ,
.NET
标签
图书

最近我们InfoQ编辑小组进行了一次交流,内容是关于我们最想推荐给InfoQ读者的,且在我们看来对程序员,架构师和管理人员最有影响力的书籍。下面是我们最终商议的16本书,其中还包括一些其它技巧,以及来自推荐这些书的编辑们的一些评论。

Alex Blewitt

解析极限编程(Extreme Programming Explained)(Kent Back)是一本不错的极限编程(XP)入门书,它能够让你即使在从未了解过任何敏捷方法的情况下,也能够很好地进行阅读。但是,还不能将它作为一本参考书来看。

我的参考指南是《算法导论(An introduction to algorithms)》(Cormen/Leiserson/Rivest/Stein),它是一本非常详尽和值得阅读的书籍。

可能你没听说过John Smith写的《麻烦的IT项目(Troubled IT Project)》,但是实际上它介绍了许多在管理项目时可能出错的事情。不仅如此,它还可以用来充当你手头所做项目的记分卡……

虽然我推荐的书籍可能要由你的经验水平和喜爱(或者说应该被推荐)的书籍类型来决定,但是我想它们还是非常值得一读的。Kent的XP书籍非常适合新手以及不熟悉敏捷的朋友,而Cockburn的书则更加适合于用经验的人。同样地,我不会硬把《算法导论》塞给一个什么都不知道的新手,但是如果你想知道怎样实现B树或者想了解如何衡量算法时间复杂度,那就绝对是必要的了。

Deborah Hartmann

在高度协作的敏捷编程开发环境下,Jean Tabaka的著作《协作精解:软件项目领导的改进技巧(Collaboration Explained: Facilitation Skills for Software Project Leaders)》为疑难管理问题提供了解决之道,这些疑难管理问题诸如冲突(conflict)、人际沟通(interpersonal communication)和时间约束(time constraint)等等。如果你厌恶开会或者相信开会应该改进,不论是否参与敏捷项目,都应当阅读这本书!

Charles Humble

计算机程序语言编译与设计(Structure and Interpretation of Computer Programs)》,作者为Harold Abelson,Gerald Jay Sussman,和Julie Sussman:一年前我在和一个朋友谈起我的代码能力停滞不前时,他向我推荐了'SIC-P'。这不是一本特别容易的书,如果你正在为某个问题寻找快速的解决方案,那么它不是你要找的。相反它是一本有益的,且需要精读的书。它对我编程上的影响要远大于其他任何书籍。

设计模式(Design Patterns)》,作者为 Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides:这是继SIC-P后又一本好书,虽然我得承认在第一次阅读的时候并不是很喜欢它。但是无可否认,这本书包含了丰富的面向对象设计专业知识,在我起初阅读的时候,只是觉得这些是有趣的理论,它们不会被真正使用到。但是随着时间的推移,我越来越多地体会到其中的思想,并且当我在进行设计工作时我仍然会不断地参考它。强烈推荐。

Mark Levinson

敏捷软件开发:合作的游戏(第二版)(Agile Software Development: A Cooperative Game)》,作者Alistair Cockburn:这是我读过的关于敏捷软件开发的最有趣的书。Alistair在书中并没有讨论任何一个方法,反而分析了形势运筹(game play),个体交流(individual communication)以及团队合作(team cooperation):这些都是软件开发中核心的元素。该书还包含了部分软件之外的敏捷,以及对各种方法的综述等等。

团队的智慧》作者:Jon Katzenbach 和 Douglas Smith:书中 Katzenbach 和 Smith 通过研究许多行业中的真实团队,对“是什么为这些团队带来了成功”这个问题给出了一些真实并且严格地分析。书的末尾处你会发现“没什么能够确保创建高绩效的团队。你能做得最好的事情就是在合适的环境下来帮助形成这样的团队”。这本书和我的为什么Scrum可行系列异曲同工。

Srini Penchikala

企业应用架构模式(Patterns of Enterprise Application Architecture)》,作者Martin Fowler:我之所以喜爱这本书,是因为它涵盖了软件开发项目中架构师或开发人员碰到的大量设计问题。它可能是最好的模式书籍(连同四人组的《设计模式》),书中覆盖了像领域逻辑、表现层、会话状态管理,以及对象关系结构行为模式的主题。不管你现在是仍然使用之前的EJB3 J2EE技术,JEE,还是在使用轻量级的像Hibernate和Spring的框架,抑或是使用一个.Net应用程序,这本书中讨论的模式都是相关且有效的。这是一本每一个开发人员都必须阅读和拥有的书籍。

领域驱动设计(Domain-Driven Design)》,作者Eric Evans:自从该书在2004年面世以来,它已经成为了软件开发社区的一个极好的参考书。它强调协调软件设计和开发中的业务领域的重要性。书中讨论的一些概念,如通用语言(Ubiquitous Language),模型驱动设计(Model-Driven Design),界定上下文(Bounded Context)和防护层(Anti-Corruption Layer),可用于任何大中型业务领域以管理领域模型的复杂性。读完该书后,我开始在我的项目中尽可能地使用DDD准则,并且我已经可以成功地消除贫血模型(Anemic Domain Model)和用一种更加面向对象的方法来处理领域逻辑了。书中讨论的概念都是独立于技术和框架的,因此它们可以应用在任何基于Java,.Net或者其他技术的软件开发项目中。此外,该书还促使我在去年发表了“领域驱动设计与开发实践”的文章。这本书是从事创建和管理业务领域的软件开发人员的必读之书。

企业集成模式:设计、构建及部署消息传递解决方案(Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solution)》,作者Gregor Hohpe 和 Bobby Woolf:在我2004年第一次阅读该书的时候,就喜欢上了它。作者很好地组织并介绍了企业应用程序中平时用到的一些有用的异步设计模式,特别是那些涉及多系统集成的模式。该书主要讨论了各种集成风格,包括异步传递模式的核心“Messaging”技术。书中的例子包括了流行的借贷经纪人管理应用程序,该应用程序在当前的好几个ESB框架中都有实现。这本书对当前的SOA集成和ESB框架(像ServiceMixMuleSpring Integration)是一个不错的响应,因为这些框架均能支持书中提到的集成模式。

人件(Peopleware - Productive Projects and Teams)》,作者Tom DeMarco 和 Timothy Lister:去年在一个朋友的推荐下阅读了该书。我不得不说它是我读过的最具影响力的书。书中作者借助了工业界的例子,调查和统计,说明了软件开发中的主要问题在于人(因此书名为人件(Peopleware)),而不是技术(像硬件或是软件)。他们认为开发人员,设计人员和其他脑力劳动者在达到了一个叫做“流”的境界后,可以在解决复杂问题上取得重大进展。而任何的打扰,不管是一封Email,一个电话,或者是一次起身走动,都会打破这个流,并且需要时间(根据统计平均需要15分钟)来重新回到流中。根据作者的观点,一个管理人员的工作不是让他的小组成员去工作,而是让他们有可能地去工作。该书距首次出版已过去了20多年,但是书中提到的概念仍然是相关且有效的,纵使它之后出现了许多新的软件开发方法和框架,以及敏捷项目的管理方法。这本书对于每一个管理人员和团队领头人都是必读之书,因为他们的职责就是管理小组人员。我不止一次地向每一位软件经理强烈推荐此书。

Werner Schuster

Pragmatic Thinking and Learning: Refactor Your Wetware》,作者Andy Hunt:这本书将实用主义程序员的观点带到了其应许之地:它扎根于我们的大脑之中。对于那些使用Dreyfus学习模式的人们,书中提供了大量方法,可以帮助他们更好地阅读,工作等。

Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture》,作者Jon Stokes:这本书收集了Ars Technica上多年来关于CPU和其他技术的文章。Jon Stokes('Hannibal')揭开了CPU的黑盒,道出各种玄机——包括现代CPU,如当前的X86和Power处理也不例外。了解指令融合(instruction fusion)如何帮助改善重排序缓存(reorder buffer)效率,对于讨论饮水冷却器(water cooler)是大有裨益的,而了解存储器层次结构(memory hierarch)和缓存行为(cache behavior )如何影响现代CPU的性能只能帮助你优化皮毛。

再来看看HOPL会议的论文集。大多数论文都能在线查看,当然也有打印版本。似乎与C语言一样具有单调命令式和括号的语言都可以使用不同的范式形成。随着这些东西的不断变化:未来的语言或是思想在十年里形成。HOPL的论文是许多语言的详细历史,其中既包括了曾经令人瞩目或者将要令人刮目相看的语言,像 Smaltalk,Erlang,Lua,Lisp或者其他语言。

Alan Kay的关于《Smaltalk早期历史(The Early History of Smalltal)》的论文包含了许多丰富的信息。每年我都会读这篇文章,并且每次读完后都会发现一些新的东西;上次阅读之后我意识到了Smaltalk最初是基于Actors模型的。

HOPL的论文显然主要关注的是历史——但是我发现许多开发人员都不知道发生的这些事件和之前形成的技术,哦,1995。当把一个有着40年历史的技术展现给‘经验丰富的’开发人员,而看到他们半信半疑时,确实有点令人不安(这就像是Prometheus赋予的新礼物,尽管它们会很快令人乏味)。

Ryan Slobojan

Effective Java》,作者Joshua Bloch:这本书已经成了Java开发中的圣经宝典之一。它让读者理解的不仅仅是语言本身(很多其他书籍都仅仅如此),还包括如何最高效的使用Java语言和API来创建快速,可靠,可扩展以及可维护的软件。书中的许多准则对其他编程语言也同样适用,正如优秀软件设计的大量理念都是通用的。读完该书后,我发现我写的代码有些不一样——阅读它们变得很容易,总共的代码行数减少了,并且在我隔段时间回过头来修复bug时变得很轻松。我觉得这本书对于使用Java语言进行开发的任何人都是一个必读之书——它告诉的不仅仅是那里是什么,它还告诉你何时怎样来最有效的使用它。

Stefan Tilkov

近些年我读的最好的一本书就是Michael Nygard的《Release It!》——涵盖了来自多位管理人员的实际建议。该书还包含了许多大规模系统失效的故事,并且Michael利用他丰富的经验提取出了一些通用的反模式 (anti-patterns)和问题,这些问题在原始设计中反反复复出现。他接着说明了如何使用恰当的模式来解决这些问题。我觉得这本书由于包含了许多实际生活中的趣闻轶事,以及构建可用的系统时需要的实际建议,而极具娱乐性。

查看英文原文:InfoQ Editors' Recommended Reading List


感谢霍泰稳对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。

我在豆瓣上专门做了一个豆列,欢迎收藏 发表人 lei kimi 发表于
Re: 我在豆瓣上专门做了一个豆列,欢迎收藏 发表人 霍 泰稳 发表于
Re: 我在豆瓣上专门做了一个豆列,欢迎收藏 发表人 ku dingxiang 发表于
归纳的不错 发表人 Ma Karl 发表于
不错的书 发表人 Qian Gavin 发表于
  1. 返回顶部

    我在豆瓣上专门做了一个豆列,欢迎收藏

    发表人 lei kimi

    地址是这个:
    www.douban.com/doulist/355870/

  2. 返回顶部

    归纳的不错

    发表人 Ma Karl

    归纳的不错,都是好书,真希望能手捧一杯清茶,好好读读这些好书。

  3. 返回顶部

    不错的书

    发表人 Qian Gavin

    很多都已看了,是好书

  4. 返回顶部

    Re: 我在豆瓣上专门做了一个豆列,欢迎收藏

    发表人 霍 泰稳

    谢谢Kimi的分享,很棒的豆列,已经推荐和收藏了。

  5. 返回顶部

    Re: 我在豆瓣上专门做了一个豆列,欢迎收藏

    发表人 ku dingxiang

    瞎讲

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。