程序员修炼之道:从小工到专家
基本信息
- 作者: (美)Andrew Hunt David Thomas [作译者介绍]
- 译者: 马维达
- 丛书名: 传世经典书丛
- 出版社:电子工业出版社
- ISBN:9787121123368
- 上架时间:2010-12-14
- 出版日期:2011 年1月
- 开本:16开
- 页码:272
- 版次:1-1
- 所属分类:
计算机 > 电子商务与计算机文化 > 综合
编辑推荐
传承大师智慧 领悟技术本真
经典名著 翻译良品 典藏不二之选
推荐阅读
内容简介回到顶部↑
《程序员修炼之道》由一系列独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术,利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。
作译者回到顶部↑
本书提供作译者介绍
Andy Hunt 是一位热切的木匠和音乐家,但奇怪的是,人们更需要作为顾问的他。他的工作领域包括电信、银行、金融服务、公共服务,以及一些更奇特的领域,比如医学成像、图形艺术、Internet服务。Andy的专长是把经过验证的技术与先进的技术混合在一起,创建各种新颖的——但也是实用的——解决方案。Andy在北卡罗莱纳州的罗利市拥有自己的顾问公司。 Dave Thomas 喜欢驾驶单引擎飞机飞行,并通过这样的方式为他的习惯付账:为各种难题寻找优雅的解决方案,提供诸多领域里的咨询服务——航空、银行、金融服务、.. << 查看详细
目录回到顶部↑
前言 xxix
序 xxxi
第1章 注重实效的哲学 1
1 我的源码让猫给吃了 2
2 软件的熵 3
3 石头汤与煮青蛙 5
4 足够好的软件 8
5 你的知识资产 10
6 交流 14
第2章 注重实效的途径 19
7 重复的危害 20
8 正交性 25
9 可撤消性 33
10 曳光弹 36
11 原型与便笺 40
12 领域语言 43
13 估算 48
第3章 基本工具 55
14 纯文本的威力 56
15 shell游戏 60
序 xxxi
第1章 注重实效的哲学 1
1 我的源码让猫给吃了 2
2 软件的熵 3
3 石头汤与煮青蛙 5
4 足够好的软件 8
5 你的知识资产 10
6 交流 14
第2章 注重实效的途径 19
7 重复的危害 20
8 正交性 25
9 可撤消性 33
10 曳光弹 36
11 原型与便笺 40
12 领域语言 43
13 估算 48
第3章 基本工具 55
14 纯文本的威力 56
15 shell游戏 60
译者序回到顶部↑
本书原名“The Pragmatic Programmer”,也就是“注重实效的程序员”。正如书名所示,本书将围绕“注重实效”讲述关于编程的各种话题:个人责任、曳光弹开发、调试策略、元程序设计、按合约设计(Design By Contract)、重构、无情的测试,等等。看到本书的目录,你也许会奇怪,300多页的篇幅,怎么能涵盖如此多内容?但本书的两位作者Andy Hunt和Dave Thomas的确做到了,他们知道抵达编程的各种维度的途径,并找到了一种言简意赅的方式讲述这些途径;与此同时,在书中还提供了大量资源,可以帮助你找到各种更深入讨论这些话题的读物。本书的各个小节既独立又相关,你可以从头开始阅读,也可以随手翻开任何一页开始阅读——Dave Thomas就将本书视为一本“洗手间读物”。如果你是编程初学者,你可以从本书中了解到各种编程技术和方法,根据书中的指引拓展你的编程生涯;如果你是富有经验的程序员,同样可以从本书中获益:如果一本书能够全面、明晰地总结你从实践中获得的各种认识、总结你从其他书里散乱地读到的技术和方法,这本书就一定不是无益的。
除了是程序员,Andy Hunt还是一位木匠和音乐家,而Dave Thomas则喜欢驾驶单引擎飞机。尽管作者未曾明言,在本书的许多地方,你都将看到与这样的背景相关的叙述。我想,对于两位作者而言,编程就和木匠活、和音乐创作、或是驾驶飞机一样,既需要禀赋,更需要坚持不懈的学习和训练——这也正是书中所说的,编程是一种技艺,一种需要用心学习的技艺。也许,只有在长久的学习之后,我们才会开始明白书中提到的“hacker”的真正含义:“Someone who loves to program and enjoys being clever about it”(摘自《自由软件杂志》)。
我仍然要感谢侯捷先生和周筠老师,他们像以前一样,为了行业的发展扶掖后进,竭尽心力。谢谢你们的支持和帮助。倘若我未能始终如一,请你们原宥。感谢本书的编辑方舟先生,他是一个诚恳、好学的年轻人,从不因我的苛刻批评而存有怨言。他的热情、他的年轻,常常让我想起自己那些古怪的、正渐渐没入记忆深处的青春时光。
这是一本“注重实效”的书,其实也可以说,是一本“实用主义”的书。但正因为这样,两位作者在书序的最后给家人的谢辞或许就更加意味深长:
谢谢你们让我们梦想。
马维达于贵阳
除了是程序员,Andy Hunt还是一位木匠和音乐家,而Dave Thomas则喜欢驾驶单引擎飞机。尽管作者未曾明言,在本书的许多地方,你都将看到与这样的背景相关的叙述。我想,对于两位作者而言,编程就和木匠活、和音乐创作、或是驾驶飞机一样,既需要禀赋,更需要坚持不懈的学习和训练——这也正是书中所说的,编程是一种技艺,一种需要用心学习的技艺。也许,只有在长久的学习之后,我们才会开始明白书中提到的“hacker”的真正含义:“Someone who loves to program and enjoys being clever about it”(摘自《自由软件杂志》)。
我仍然要感谢侯捷先生和周筠老师,他们像以前一样,为了行业的发展扶掖后进,竭尽心力。谢谢你们的支持和帮助。倘若我未能始终如一,请你们原宥。感谢本书的编辑方舟先生,他是一个诚恳、好学的年轻人,从不因我的苛刻批评而存有怨言。他的热情、他的年轻,常常让我想起自己那些古怪的、正渐渐没入记忆深处的青春时光。
这是一本“注重实效”的书,其实也可以说,是一本“实用主义”的书。但正因为这样,两位作者在书序的最后给家人的谢辞或许就更加意味深长:
谢谢你们让我们梦想。
马维达于贵阳
前言回到顶部↑
作为评阅者,我得到了提早阅读你拿在手上的这本书的机会。即使当时还只是草稿,它就已是一本很好的书。Dave Thomas和Andy Hunt有话要说,并且知道怎样去说。我见过他们所做的事情,知道他们所说的将是有效的。我请求让我来撰写这篇前言,以便有机会向你解释其中的原因。
简而言之,本书将告诉你怎样以一种你能够遵循的方式去编程。也许你不认为这是一件困难的事情,但事情却并非如此。为什么?原因之一是,并非所有的编程书籍都是由程序员撰写的。其中有许多是由语言设计者、或是与他们有合作关系的报刊记者编撰而成,意在推销他们的作品。那些书告诉你怎样通过某种编程语言进行表达——这当然很重要,但却只是程序员所做的事情的一小部分。
除了通过编程语言进行表达,程序员还要做些什么?嗯,这是一个更深入的问题。大多数程序员在解释他们所做的事情这个问题上都会有困难。编程是一项充满了各种细节的工作,追踪这些细节需要专注。时间流逝、代码出现,你查看它们,那里全是些语句。如果你不仔细思考,你也许会以为编程不过就是敲入某种编程语言的语句。你当然错了,但找遍书店的编程专柜,你却还是讲不出所以然。
在《程序员修炼之道》一书中,Dave和Andy将告诉我们怎样以一种我们能够遵循的方式编程。他们何以能这样聪明?他们不也是和其他程序员一样,专注于各种细节而已吗?答案是他们在做某件事情时,会把注意力投注在他们在做的事情上——然后他们会试着把它做得更好。
设想你在参加一个会议。或许你在想,这个会议没完没了,你还不如去写程序。而Dave和Andy会想,他们为什么在开会,他们想知道是否可以通过另外的方式取代会议,并决定是否可使某样事情自动化,以使开会的工作推后。然后他们就会这样去做。
这就是Dave和Andy思考的方式。开会并非是某种使他们远离编程的事情。开会就是编程,并且是能够加以改善的编程。我之所以知道他们以这样的方式思考,是因为这是书中的第二条提示:思考你的工作。
那么再设想一下,他们这样思考了几年。很快他们就会拥有一堆解决方案。现在设想他们在工作中使用这些解决方案,又是几年;他们还放弃了其中太过困难、或者不能总是产生结果的解决方案。噢,这样的途径几乎定义了“pragmatic”(注重实效)的含义。现在设想他们又用了一两年来写下他们的解决方案。你也许会想,这些信息可真是金矿。你想对了。
两位作者告诉我们他们是怎样编程的,并且是以一种我们能够遵循的方式来告诉我们的。但这一陈述的后半部分的含义也许要多于你所想到的。让我来解释一下。
作者一直在小心避免提出软件开发理论。这是一件幸运的事情,因为如果他们那样做了,他们就不得不为了捍卫他们的理论而对各章进行“调整”。这样的“调整”是,比如说,物理科学中的传统,在这些学科中,理论不是最终成为定律,就是被静静地丢弃。而另一方面,编程所具有的法则(如果有)却非常少。所以围绕想要成为法则的东西形成的编程建议在纸面上也许显得很好,而在实践中却无法让人满意。这也是那么多方法学书籍误入歧途之处。
我研究这一问题已有十多年,并发现一种叫做模式语言(pattern language)的方法最有前途。简而言之,模式就是解决方案,而模式语言就是相互支援的若干解决方案的系统。围绕着对这些系统的探求,已经形成了一整个社群。
本书不只是一堆提示。它是一种“披着羊皮”的模式语言。我这样说,是因为每一条提示都汲取自经验、作为具体建议讲授、并与其他提示关联而形成系统。是这些特征使我们能够学习并遵循模式语言。在本书中它们以同样的方式发挥着作用。
你可以遵循本书的建议,因为它们是具体的。你不会发现含混不清的抽象。Dave和Andy直接为你而写,就好像每一条提示都是能给你的编程生涯供给能量的重大策略。他们让提示保持简单,他们讲故事,他们使用轻松的笔触,他们接着还给出了各种问题的解答,这些问题将在你进行尝试时出现。
不仅如此。在你阅读了十或十五条提示之后,你将开始看到工作的另外一个维度。我们有时称之为“QWAN”,也即“quality without a name”(无名的品质)。本书的哲学将渗入你的意识,并与你自己的哲学交融在一起。它不鼓吹,它只是讲述什么可行。但在讲述中却又有更多的东西到临。这正是本书美之所在:它体现它的哲学,以如此谦逊的方式。
这就是它:一本易于阅读——也易于应用——的关于整个编程实践的书。我一直在不断讲述它为何有效,而你关心的也许只是它的确有效。它的确有效,你会看到的。
——Ward Cunningham
简而言之,本书将告诉你怎样以一种你能够遵循的方式去编程。也许你不认为这是一件困难的事情,但事情却并非如此。为什么?原因之一是,并非所有的编程书籍都是由程序员撰写的。其中有许多是由语言设计者、或是与他们有合作关系的报刊记者编撰而成,意在推销他们的作品。那些书告诉你怎样通过某种编程语言进行表达——这当然很重要,但却只是程序员所做的事情的一小部分。
除了通过编程语言进行表达,程序员还要做些什么?嗯,这是一个更深入的问题。大多数程序员在解释他们所做的事情这个问题上都会有困难。编程是一项充满了各种细节的工作,追踪这些细节需要专注。时间流逝、代码出现,你查看它们,那里全是些语句。如果你不仔细思考,你也许会以为编程不过就是敲入某种编程语言的语句。你当然错了,但找遍书店的编程专柜,你却还是讲不出所以然。
在《程序员修炼之道》一书中,Dave和Andy将告诉我们怎样以一种我们能够遵循的方式编程。他们何以能这样聪明?他们不也是和其他程序员一样,专注于各种细节而已吗?答案是他们在做某件事情时,会把注意力投注在他们在做的事情上——然后他们会试着把它做得更好。
设想你在参加一个会议。或许你在想,这个会议没完没了,你还不如去写程序。而Dave和Andy会想,他们为什么在开会,他们想知道是否可以通过另外的方式取代会议,并决定是否可使某样事情自动化,以使开会的工作推后。然后他们就会这样去做。
这就是Dave和Andy思考的方式。开会并非是某种使他们远离编程的事情。开会就是编程,并且是能够加以改善的编程。我之所以知道他们以这样的方式思考,是因为这是书中的第二条提示:思考你的工作。
那么再设想一下,他们这样思考了几年。很快他们就会拥有一堆解决方案。现在设想他们在工作中使用这些解决方案,又是几年;他们还放弃了其中太过困难、或者不能总是产生结果的解决方案。噢,这样的途径几乎定义了“pragmatic”(注重实效)的含义。现在设想他们又用了一两年来写下他们的解决方案。你也许会想,这些信息可真是金矿。你想对了。
两位作者告诉我们他们是怎样编程的,并且是以一种我们能够遵循的方式来告诉我们的。但这一陈述的后半部分的含义也许要多于你所想到的。让我来解释一下。
作者一直在小心避免提出软件开发理论。这是一件幸运的事情,因为如果他们那样做了,他们就不得不为了捍卫他们的理论而对各章进行“调整”。这样的“调整”是,比如说,物理科学中的传统,在这些学科中,理论不是最终成为定律,就是被静静地丢弃。而另一方面,编程所具有的法则(如果有)却非常少。所以围绕想要成为法则的东西形成的编程建议在纸面上也许显得很好,而在实践中却无法让人满意。这也是那么多方法学书籍误入歧途之处。
我研究这一问题已有十多年,并发现一种叫做模式语言(pattern language)的方法最有前途。简而言之,模式就是解决方案,而模式语言就是相互支援的若干解决方案的系统。围绕着对这些系统的探求,已经形成了一整个社群。
本书不只是一堆提示。它是一种“披着羊皮”的模式语言。我这样说,是因为每一条提示都汲取自经验、作为具体建议讲授、并与其他提示关联而形成系统。是这些特征使我们能够学习并遵循模式语言。在本书中它们以同样的方式发挥着作用。
你可以遵循本书的建议,因为它们是具体的。你不会发现含混不清的抽象。Dave和Andy直接为你而写,就好像每一条提示都是能给你的编程生涯供给能量的重大策略。他们让提示保持简单,他们讲故事,他们使用轻松的笔触,他们接着还给出了各种问题的解答,这些问题将在你进行尝试时出现。
不仅如此。在你阅读了十或十五条提示之后,你将开始看到工作的另外一个维度。我们有时称之为“QWAN”,也即“quality without a name”(无名的品质)。本书的哲学将渗入你的意识,并与你自己的哲学交融在一起。它不鼓吹,它只是讲述什么可行。但在讲述中却又有更多的东西到临。这正是本书美之所在:它体现它的哲学,以如此谦逊的方式。
这就是它:一本易于阅读——也易于应用——的关于整个编程实践的书。我一直在不断讲述它为何有效,而你关心的也许只是它的确有效。它的确有效,你会看到的。
——Ward Cunningham
序言回到顶部↑
本书将帮助你成为更好的程序员。
不论你是单独的开发者,是大型项目团队中的一员,还是同时与许多客户共事的顾问,这都没有关系。本书将帮助你,作为一个个体,更好地完成工作。本书不是理论书籍——我们专注于实践性的话题,专注于让你利用你的经验做出更有见识的决策。pragmatic一词来自拉丁语的pragmaticus——“精于事务”——后者又源自希腊语的πραττειυ,意为“to do”。这是一本关于“doing”的书。
编程是一种技艺。用最简单的话表述,编程可归结为让计算机做你(或你的用户)想要它做的事情。作为程序员,你既是倾听者,又是顾问;既是解释者,又是发号施令者。你设法捕捉难以捉摸的需求,并找到表达它们的方式,让一台纯粹的机器能够合理地处理它们。你设法为你的工作建立文档,以使他人能够理解它;你还设法使你的工作工程化,以使他人能够以它为基础进行构建。还有,你设法在项目时钟无休止的“嘀嗒”声的催迫下完成所有这些工作。你每天都在创造小小的奇迹。
编程是艰难的工作。
有许多人声称要给你帮助。工具供应商吹嘘它们的产品所展现出的奇迹。方法学古鲁(guru)允诺说他们的技术保证有效。每个人都声称他们的编程语言是最好的,而每一种操作系统都是对所有可以想象得到的问题的解答。
当然,所有这些都不是真的。并不存在容易的答案。也不存在最佳解决方案这样一种东西,无论它是工具,是语言,还是操作系统。能够存在的只是在某些特定情形下更为适宜的系统。
这正是注重实效(pragmatism)登场的地方。你不应该局限于任何特定的技术,而是应该拥有足够广博的背景和经验基础,以让你能在特定情况下选择好的解决方案。你的背景源自对计算机科学的基本原理的理解,而你的经验来自广泛的实际项目。理论与实践的结合使你强大起来。
你调整你的方法,以适应当前情形与环境。你判断对项目有影响的所有因素的相对重要性,并利用你的经验制定适宜的解决方案。你随着工作的进展持续不断地进行这样的活动。注重实效的程序员不仅要完成工作,而且要完成得漂亮。
谁应该阅读本书
本书的目标读者是想要变得更为有效、更多产的程序员。或许你觉得灰心,因为你好像没有在实现自己的潜能。或许你看见同事似乎在使用一些工具,使他们自己比你更多产。也许你现在的工作使用的是较老的技术,而你却想要知道怎样把较新的思想应用于你正在做的工作。
我们不会假装自己拥有所有的(或者即使是大部分)答案,我们的思想也并非适用于所有情况。我们所能说的只是,如果你遵循我们的方法,你将迅速地获取经验,你的生产力将会提高,并且你还将更好地理解整个开发过程。你将能编写更好的软件。
注重实效的程序员有哪些特征
每一个开发者都是独特的,有着个人的力量和弱点、偏好和嫌恶。随着时间的过去,每一个开发者都会营造出他或她自己的个人环境。这个环境会有力地反映这个程序员的个性,就像他或她的业余爱好、衣着或是发型一样。但是,如果你是一个注重实效的程序员,你就会具有下列特征中的许多特征:
早期的采纳者/快速的改编者。你具有技术和技巧上的直觉,你喜爱试验各种事物。给你一样新东西,你很快就能把握它,并把它与你的知识的其余部分结合在一起。你的自信出自经验。
好奇。你喜欢提问。那很漂亮——你是怎么做的?你用那个库时有问题吗?我听说的这个BeOS是什么?符号链接是怎样实现的?你是收集小知识的林鼠(pack rat),每一条小知识都可能会影响今后几年里的某项决策。
批判的思考者。你不会不首先抓住事实而照搬别人的说法。当同事说“因为就该那么做”或者供应商允诺为你的全部问题提供解决方案时,你就会嗅到挑战的气息。
有现实感。你会设法理解你面临的每个问题的内在本质。这样的现实主义给了你良好的感知能力:事情有多困难,需要多长时间?让你自己了解某个过程会有困难,或是要用一点时间才能完成,能够给予你坚持不懈的毅力。
多才多艺。你尽力熟悉广泛的技术和环境,并且努力工作,以与各种新发展并肩前行。尽管你现在的工作也许只要求你成为某方面的专才,你却总是能够转向新的领域和新的挑战。
我们把最基本的特征留到了最后。所有注重实效的程序员都具有这些特征。它们基本得足以用提示的方式来陈述:
不论你是单独的开发者,是大型项目团队中的一员,还是同时与许多客户共事的顾问,这都没有关系。本书将帮助你,作为一个个体,更好地完成工作。本书不是理论书籍——我们专注于实践性的话题,专注于让你利用你的经验做出更有见识的决策。pragmatic一词来自拉丁语的pragmaticus——“精于事务”——后者又源自希腊语的πραττειυ,意为“to do”。这是一本关于“doing”的书。
编程是一种技艺。用最简单的话表述,编程可归结为让计算机做你(或你的用户)想要它做的事情。作为程序员,你既是倾听者,又是顾问;既是解释者,又是发号施令者。你设法捕捉难以捉摸的需求,并找到表达它们的方式,让一台纯粹的机器能够合理地处理它们。你设法为你的工作建立文档,以使他人能够理解它;你还设法使你的工作工程化,以使他人能够以它为基础进行构建。还有,你设法在项目时钟无休止的“嘀嗒”声的催迫下完成所有这些工作。你每天都在创造小小的奇迹。
编程是艰难的工作。
有许多人声称要给你帮助。工具供应商吹嘘它们的产品所展现出的奇迹。方法学古鲁(guru)允诺说他们的技术保证有效。每个人都声称他们的编程语言是最好的,而每一种操作系统都是对所有可以想象得到的问题的解答。
当然,所有这些都不是真的。并不存在容易的答案。也不存在最佳解决方案这样一种东西,无论它是工具,是语言,还是操作系统。能够存在的只是在某些特定情形下更为适宜的系统。
这正是注重实效(pragmatism)登场的地方。你不应该局限于任何特定的技术,而是应该拥有足够广博的背景和经验基础,以让你能在特定情况下选择好的解决方案。你的背景源自对计算机科学的基本原理的理解,而你的经验来自广泛的实际项目。理论与实践的结合使你强大起来。
你调整你的方法,以适应当前情形与环境。你判断对项目有影响的所有因素的相对重要性,并利用你的经验制定适宜的解决方案。你随着工作的进展持续不断地进行这样的活动。注重实效的程序员不仅要完成工作,而且要完成得漂亮。
谁应该阅读本书
本书的目标读者是想要变得更为有效、更多产的程序员。或许你觉得灰心,因为你好像没有在实现自己的潜能。或许你看见同事似乎在使用一些工具,使他们自己比你更多产。也许你现在的工作使用的是较老的技术,而你却想要知道怎样把较新的思想应用于你正在做的工作。
我们不会假装自己拥有所有的(或者即使是大部分)答案,我们的思想也并非适用于所有情况。我们所能说的只是,如果你遵循我们的方法,你将迅速地获取经验,你的生产力将会提高,并且你还将更好地理解整个开发过程。你将能编写更好的软件。
注重实效的程序员有哪些特征
每一个开发者都是独特的,有着个人的力量和弱点、偏好和嫌恶。随着时间的过去,每一个开发者都会营造出他或她自己的个人环境。这个环境会有力地反映这个程序员的个性,就像他或她的业余爱好、衣着或是发型一样。但是,如果你是一个注重实效的程序员,你就会具有下列特征中的许多特征:
早期的采纳者/快速的改编者。你具有技术和技巧上的直觉,你喜爱试验各种事物。给你一样新东西,你很快就能把握它,并把它与你的知识的其余部分结合在一起。你的自信出自经验。
好奇。你喜欢提问。那很漂亮——你是怎么做的?你用那个库时有问题吗?我听说的这个BeOS是什么?符号链接是怎样实现的?你是收集小知识的林鼠(pack rat),每一条小知识都可能会影响今后几年里的某项决策。
批判的思考者。你不会不首先抓住事实而照搬别人的说法。当同事说“因为就该那么做”或者供应商允诺为你的全部问题提供解决方案时,你就会嗅到挑战的气息。
有现实感。你会设法理解你面临的每个问题的内在本质。这样的现实主义给了你良好的感知能力:事情有多困难,需要多长时间?让你自己了解某个过程会有困难,或是要用一点时间才能完成,能够给予你坚持不懈的毅力。
多才多艺。你尽力熟悉广泛的技术和环境,并且努力工作,以与各种新发展并肩前行。尽管你现在的工作也许只要求你成为某方面的专才,你却总是能够转向新的领域和新的挑战。
我们把最基本的特征留到了最后。所有注重实效的程序员都具有这些特征。它们基本得足以用提示的方式来陈述:
媒体评论回到顶部↑
“关于这本书,最棒的是它能使编程过程保持新鲜。(本书)能帮助你持续成长,而且显然,它出自到过那里的人之手。”
——Kent Beck,Extreme Programming Explained: Embrace Change的作者
“我发现这本书出色地混合了坚实的建议和美妙的类比!”
——Martin Fowler,Refactoring与UML Distilled的作者
“我会买上一本,读上两遍,然后让我的所有同事都冲出去买一本。这是一本我决不会出借的书,因为我担心丢失。”
——Kevin Ruland,Management Science,MSG-Logistics
“作者的才智和实践经验显而易见。讨论的话题既切身又有益……迄今为止,对我而言它最大的力量在于那些出色的类比——曳光弹、破窗户,还有以直升机为基础、对为何需要正交性所做的惊人解释——特别是在紧急情况下。我几乎毫不怀疑:无论是编程“小工”,是专家级的顾问,还是其他专业人员,这本书最终都将成为有用信息的极好来源。”
——John Lakos,Large-Scale C++ Software Design
“这是那种我会在其出版时买上一打、送给我的客户的书。”
——Eric Vought,软件工程师
“现在的大多数关于软件开发的书都没能说清一个杰出的软件开发者究竟应该具备哪些能力,而是把时间花在介绍语法和技术上——在现实生活中,拥有有才华的、真正精通其技艺的开发者,对任何软件团队而言都是其可能具有的最大优势。一本出色的书。”
——Pete McBreen,独立顾问
“自从读了这本书以后,我实施了书中提出的许多实用建议和提示。所有这些建议和提示都为我的公司节省了时间和金钱,同时还帮助我更快地完成了我的工作!每一个以编码为生的人,都应该在桌面上放一本做参考。”
——Jared Richardson,高级软件开发员,iRenaissance, Inc.
“我想看到这本书被发给我的公司的每一个新员工……”
——Chris Cleeland,高级软件工程师,Object Computing, Inc.
——Kent Beck,Extreme Programming Explained: Embrace Change的作者
“我发现这本书出色地混合了坚实的建议和美妙的类比!”
——Martin Fowler,Refactoring与UML Distilled的作者
“我会买上一本,读上两遍,然后让我的所有同事都冲出去买一本。这是一本我决不会出借的书,因为我担心丢失。”
——Kevin Ruland,Management Science,MSG-Logistics
“作者的才智和实践经验显而易见。讨论的话题既切身又有益……迄今为止,对我而言它最大的力量在于那些出色的类比——曳光弹、破窗户,还有以直升机为基础、对为何需要正交性所做的惊人解释——特别是在紧急情况下。我几乎毫不怀疑:无论是编程“小工”,是专家级的顾问,还是其他专业人员,这本书最终都将成为有用信息的极好来源。”
——John Lakos,Large-Scale C++ Software Design
“这是那种我会在其出版时买上一打、送给我的客户的书。”
——Eric Vought,软件工程师
“现在的大多数关于软件开发的书都没能说清一个杰出的软件开发者究竟应该具备哪些能力,而是把时间花在介绍语法和技术上——在现实生活中,拥有有才华的、真正精通其技艺的开发者,对任何软件团队而言都是其可能具有的最大优势。一本出色的书。”
——Pete McBreen,独立顾问
“自从读了这本书以后,我实施了书中提出的许多实用建议和提示。所有这些建议和提示都为我的公司节省了时间和金钱,同时还帮助我更快地完成了我的工作!每一个以编码为生的人,都应该在桌面上放一本做参考。”
——Jared Richardson,高级软件开发员,iRenaissance, Inc.
“我想看到这本书被发给我的公司的每一个新员工……”
——Chris Cleeland,高级软件工程师,Object Computing, Inc.








点击看大图






加载中...

