软件随想录(local.joelonsoftware.com/wiki)-2002年03月13日 约耳的程序员书柜 - Book Reviews

来源:互联网 发布:js 里面加载js 编辑:程序博客网 时间:2024/04/19 19:14

2002年03月13日 约耳的程序员书柜 - Book Reviews

 

约耳的程序员书柜

From The Joel on Software Translation Project

Jump to: navigation, search

书评

作者:周思博 (Joel Spolsky)
译:Paul May 梅普华
Wednesday, March 13, 2002 A part of Joel on Software, http://www.joelonsoftware.com


“对任何程序员都近乎完美的短书单” — Jan Derk

由所看的书可以深入了解一个人。而且我一直认为如果我看过的书你通通都看过,你的想法还会变得和我很像。

所以我列了这东西-约耳的程序员书柜。这份短书单列出所有我真心认为每个工作的程序员都要读的书,我把我自己的书也偷偷列进去。万一你没注意到买了这本书,我就能拿到大约两块钱。


无痛软件管理

Peopleware.gif

Peopleware: Productive Projects and Teams
Tom Demarco and Timothy R. Lister
Peopleware: 脑力密集产业的人才管理之道
方亚澜 钱一一译
经济新潮社

我和朋友在微软暑期实习时,习惯到公司的库房做「田野调查」,补充一些学校用品。在磁碟片、滑鼠垫、立可贴之间发现一迭小本的平装书,于是就带了一本回家看。这本书就是Tom DeMarco和Timothy Lister写的Peopleware。这本书是我所读过最有影响力的书。要叙述这本书最佳的方式就是反呆伯特宣言。曾经想过为什么微软里人人都有专属的办公室吗?每间都有墙还有可以关起来的门。这本书里有答案。为什么经理人要让团队在做事时有很大的弹性。书里也有答案。为什么微软内有那么多生产力超高的固定特种部队?主要是因为比尔盖茨建立的这家公司里充满了读过Peopleware的经理。我极力的推荐这本书。它是每个软件经理人都必须读的书,而且不是读一次就好,要每年都读一次。

MythicalManMonth.jpg

The Mythical Man-Month
Frederick P. Brooks
人月神话:软件项目管理之道(20周年纪念版)
钱一一 译
经济钱潮社

25年前问世的人月神话绝对是软件项目管理的经典书籍。当时Fred Brooks尝试执行第一个超大型软件工程项目(IBM的OS/360操作系统),同时也率先叙述软件与其他工程类型间极重大的差异。这本书最有名的一点就是发现了以下这个原则:在已落后的项目中增加更多程序员,只会让进度更加落后。不过对这本书来说这只是冰山一角。想要正确地思考软件团队管理,了解这本书是个先决条件。

RapidDevelopment.jpg

Rapid Development: Taming Wild Software Schedules
Steve C. McConnell
微软开发快速秘笈
邹正平 编译
微软出版社

Steve McConnell捕捉了许多微软在开发大规模软件前十年间找出的开发管理想法。你会看到这本书中有很多想法和我绝非原创的[fog0000000043.html 约耳测试]重复(惊奇吧),不过书里的重点是在于排定日程程序的控制。


程序工艺

CodeComplete.gif

Code Complete: A Practical Handbook of Software Construction
Steve C. McConnell
如何进入程序设计的专业领域(两册)
黄昕伟 译
旗标出版(已绝版)

Code Complete是本良好程序设计实务的百科全书,著重在个别的工艺,也就是综合起来成为我们直觉上称之「撰写简洁程序代码」的所有东西。这是那种用50页篇幅只谈论程序代码编排和空白分隔文字的书。

PragmaticProgrammer.jpg

The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt and David Thomas
程序员修炼之道:从小工到专家(简体版)
马维达 译
电子工业出版社

对已经学过程序设计技术(可能在学校里学的),却不太有把握决定要做什么的程序员来说,这是本很好的书。这就像是画草图和真正建筑设计间的差异。你在学校上课学到的是画草图,你也能画得很漂亮,不过当某人要你自己写个P2P音乐交换网络时,如果你还是不太知道怎么开始,这本书就非常适合。


程序设计的哲学

Microserfs.jpg

Microserfs
Douglas Coupland

刚离开学校就到微软工作的人得了解一件重要的事情。你很年轻,身处一个陌生的城市,一个人都不认识。没什么事好做,而你又是个电脑狂,对你来说工作就是乐趣,所以开车去买了外带午餐后很可能就会觉得无聊,然后只好回豪华办公室面对一片山景和高树以及程序代码。这些年轻程序员中很多人在工作以外的生活都相当寂寞空虚,但在微软的工作表现杰出,因为你把全部精力都投入真正有趣的部份,也就是开发出很酷的软件。

没有什么能像Microserfs那样,真正捕捉到身为大软件公司内年轻程序员的感觉。Douglas Coupland对90年代初期身处微软的生活描写的非常生动,完完全全的打动我。不过他却更进一步,在大家都还没察觉之前,对所发生的事提供了道德及伦理上的理解。没有人像Coupland那么了解空虚、平凡的孤独、以及现代北美人际间的联系的追寻。

ZenAndTheArt.jpg

Zen and the Art of Motorcycle Maintenance
Robert M. Pirsig
万里任禅游
罗若苹,李昆圳 译
时报出版

有些人认为程序设计只是个赚钱的好方法。不过对其他人来说这理由并不足够。程序设计工作是我们生活中很重要的一环,我们需要一个哲学上的认知才能理解它的意义。这本书对连结工程与哲学很有帮助。

GodelEscherBach.jpg

Godel, Escher, Bach: An Eternal Golden Braid
Douglas R. Hofstadter
哥德尔、艾舍尔、巴赫—集异璧之大成(简体版)
郭维德 译
商务印书馆(北京)

这本书是在我进大学前读的,读完就决定我要主修「哥德尔、艾舍尔、巴赫」。我选课的主要原则就是要涵盖这本重要而全面而且极为有趣的书中所提出的科目:人工智慧,认知科学,电脑科学,哲学,心理学,音乐以及艺术全都神奇地交织在一起。

APatternLanguage.jpg

A Pattern Language: Towns, Buildings, Construction
Christopher Alexander, Sara Ishikawa, Murray Silverstein, et al.
建筑模式语言 - 城镇.建筑.构造
王听度,周序鸿 译
六合?

是的,没错,这是一本有关建筑学的书。你知道的,房子之类的东西。我不认为整本书有任何地方提到电脑。会买这本书是因为我对建筑有兴趣。然后就注意到某件事:这本书里的内容几乎都可以应用在软件设计者的工作上。举例来说,CityDesk的开始画面就是基于Zen View这个极具影响力的模式。另外Dave WinerRadio Userland之所以能吸引大家,就是因为它遵循Windows Overlooking Life的模式。另外能体会Hierarchy of Space模式的软件也比较容易理解。

几年前类似的东西也在程序设计界短暂地流行过一阵子;我认为程序设计界的模式运动从来没有真正成功,因为它只是尝试模仿本书的形式,而非复制书中的智慧。


使用介面设计

UIForProgrammers.jpg

User Interface Design for Programmers
Joel Spolsky

我也可以列我自己的书,对吧?

UI for Programmers一书尝试教导我所认为最上层最重要,每个程序员都必须知道的UI设计原则。我所听到读者最常见的反应就是:「读了你的书之后,我发现我的程序有三个地方一定得改。」

Dont_Make_Me_Think.jpg

Don't Make Me Think
Steve Krug
如何设计好网站
上奇出版

Don't Make Me Think是一本出色而有趣的书,讨论的是网页UI设计。终于有书尝试了解良好UI设计的原则,而不仅只是列些世俗的规则(比如「不要改变连结的色彩」)。Steve Krug主要的理论在于,你让人们想得愈少,你的网站就会愈容易使用。"What a waste it is to lose one's mind. Or not to have a mind is being very wasteful. How true that is."(翻不出来)

AboutFace.jpg

About Face: The Essentials of User Interface Design
Alan Cooper
软件观念革命 - 交互设计精髓(简体版)
詹剑锋等 译
电子工业出版社

一本UI设计的经典。这是来自Visual Basic发明者的GUI设计重要圣经。

Design_of_Everyday_Things.gif

Design of Everyday Things
Donald A. Norman
设计心理学
卓耀宗博士 译
远流出版

虽然内容讨论门和冰箱多过电脑,不过Donald Norman的经典作品The Design of Everyday Things (也用"The Psychology of Everyday Things"的书名出版过)却是UI设计相关书中最好的一本。书中对于其情境支持(Affordances)理论有突破性的成果。情境支持在我UI书中的[fog0000000060.html 第4章]也有谈到,而且仍旧是对日常物品良好设计最有影响力的想法。

DesigningWebUsability.jpg

Designing Web Usability
Jakob Nielsen
Web可用性设计(简体版)
潇湘工作室 译
人民电邮出版社

我知道,我知道,可怜的Jakob因为「ClearType...每年可以替使用者节省2,000美元」和「小额付款机制就是答案」等奇怪的发言被骂得很惨。嗯,是没错。不过在这所有愚蠢的数学之间,Nielsen还是提出了很多你一定要知道而且完全正确的见解。如果你在设计任何形式的网页,一定得了解这本书里的原则。如果你设计的并不是网页,可以把它当作针对可使用度工程的优异案例研究来看。


针对程序员的资本主义

RandomWalk.jpg

A Random Walk Down Wall Street
Burton Gordon Malkiel
漫步华尔街:超越股市涨跌的成功投资策略
杨美龄 译
天下文化

如果你在这个业界待得够久,几乎无可避免地突然发现自己得管理一大笔钱。如果你不想把事情搞砸,有几件事是一定得知道的。

噢,不过你会说这些东西看起来如此地复杂,怎么比得过那么吃人不吐骨头的华尔街狡猾老狐狸呢?光是想投资获得合理收益,似乎都得不断的研究,研读,工作,阅读还有学习才做得到。有那么多的年度报表。而你还得订阅各种写得密密麻麻的无聊报纸,上面满是用小字印刷的专栏。

如果我说你只要读一本书就能学到管理投资所有必须了解的东西,你觉得怎么样?我是说所有东西哦。没错,这是事实。答案就是这本书。如果你没工夫去看其他有关投资的东西,就读这一本书吧。


创业

GrowingABusiness.jpg

Growing a Business
Paul Hawken
[http://www.books.com.tw/exep/prod/booksfile.php?item=0010032171

实现创业的梦想]
吴程远,齐若兰 译
天下文化

人们常常写电邮给我说:「啊,我好喜欢你那个以Ben and Jerry's方式[fog0000000056.html 创业]的理论,不过我要怎么开始呢?」这就是你要看的书。可能会有一点平淡无味,不过这本书能为你提供让公司有组织地成长的哲学。


绘图设计

NonDesigners.jpg

The Non-Designer's Design Book
Robin Williams

写给大家的平面设计书

哇!每个人或多或少都得做一些绘图设计,不过并非所有软件团队都能拥有专业的设计师。这本出色的薄书能让你掌握页面编排以及字型等等背后的原理。好消息是你可以在洗澡水凉之前看完,然后第二天你的对话盒和powerpoint投影片以及网页就会开始好看许多。


差异化

Influence.jpg

Influence: The Psychology of Persuasion
Robert B. Cialdini
影响力:你为什么会说“是”?(简体版)
中国社会科学出版社

Robert B. Cialdini的经典作品Influence是另一本值得一读再读的书。慈善组织请求你捐款时几乎都会在信封里附一个「礼物」,比如印有你的地址的自黏标签或是几张空白贺卡。他们会送礼物给你是基于互惠的社会性原理;因为这样你就会觉得要回馈一些东西。你也可能常常在电视购物频道上听过「快快快,数量有限!」这种台词,听到都没感觉了。不过这种台词是基于罕见(scarcity)原理,也就是你会自然地假设罕见的物品会比较值钱。业务员,行销人员以及广告主会运用这些手法以及其他技俩,影响人们进行某些行为。Cialdini出色的书中讨论了影响其他人行为的科学与实务背后的心理学理论。你得赶快在他们进行之前先看这本书!

Helplessness.gif

Helplessness: On Depression, Development, and Death
Martin E. P. Seligman

几个月前当我们刚推出新版CityDesk时,我收到一封客户寄来的电子邮件,抱怨他习惯按Alt+F及Alt+S来储存文件。不幸的是,由于某个没注意到的小问题,这个快速键组合会储存文件然后惹人厌地关闭文件。我从来没注意到这个问题,因为我习惯按Alt+F,S来存档而不是Alt+F,Alt+S(差别非常的小),而Alt+F,S完全没有问题。

当你习惯按Alt+F,Alt+S存档之后,整个动作会变成非常自发,你完全不会把这个动作想成Alt+F,Alt+S。你会直接把它想成储存。当你按下脑海里的「储存」钮,工作中的文件却消失不见,就会让你感觉无法控制你的环境。这是件小事,不过发生个四次你就会开始很不爽。这也是我会花几个小时追踪并修正这个问题的原因。不过由于墨菲定律神奇的作用,这个修正动作引发一连串的事件,让我们浪费了大约一个星期,不过那不是重点。我们花的时间是值得的。这就是重视可使用度的意义。如果你仍旧认为,Alt键要压多久才能叫出功能表,是件无关紧要的小事,那么你的软件就会让使用者不快乐。Swing的应用程序正是因为这些细微的不协调,才会让人觉得无法忍受的厌恶。就我的意见来看,这也是没有成功的商业化Java GUI应用程序的原因。

我不时地一再说过,良好UI设计之所以重要,是因为它会让大家快乐。我讲这个话是很实在的。如果你的UI设计良好,使用你的软件的人就会比较快乐。如果设计不良,他们就会不快乐

这个讲忧郁症的书有什么关系呢?是这样的,当人们感觉无法控制自己的生命和环境时,就会转变成临床上的忧郁症。而Seligman这位先驱发现,对抗忧郁已知最有效的非药物疗法,就是鼓励人们小幅地逐渐控制他们的环境。


我想当个程序员

针对想学习程序设计的非程序读者的几本书。

Code.jpg

Code
Charles Petzold
编码的奥秘(简体版)
伍卫国,王宣政,孙燕妮 译
机械工业出版社

这本书的对象绝对不是程序员,它是针对非程序员的读者,不管是想要成为程序员,或是想了解程序员所做的事,还是仅仅想探索一下位元与字节的疯狂世界,通通都可以。你可以先看这本书作为开始,如果你觉得它很迷人,认为自己想成为程序员,接下来就去读(而且要彻底的精读)The C Programming Language。

KandR.jpg

The C Programming Language
Brian W. Kernighan and Dennis M. Ritchie
C语言程序设计(增订版)
蔡文能 译
培生教育

程序设计教学上最误导的想法,就是必须由简单有趣图形化的东西开始,才能引诱人们来设计程序。有些人认为学程序设计最好的方法是由HTML(举个例子)开始,然后再学习如何剪贴javascript程序,再慢慢深入。另一个误解是应该由流行有需求的程序设计技术(如Java或Web数据库程序设计)开始。

好吧,这些人都错了。

基于各种太复杂无法在此详述的[fog0000000319.html 理由],我相信你必须由一个尽可能合理地接近机器的层级开始学程序设计。我认为这本俗称为K&R的书,正是每个想当程序员的人必须先学习的书籍。找一本来彻底的研读。如果你在研读过程中都很快乐,就可以当个程序员。如果你觉得这种老旧文字式的程序设计很无聊,或者发现指针让你发狂,相信我吧,你不会衷心喜欢程序设计的。如果你必须被引诱来设计程序,或者你并没有耐性找出这些疯狂星号的意义,去做别的事会比较快乐。我是说真的。不过如果你可以自己读完这整本书,就已经获得成为精英程序员所需的条件,同时也奠定要学习其他东西所需的厚实基础。

读者对自己最爱的书的讨论。有其他应该列在这里的书吗?把你的意见写在讨论区吧!

这些网页的内容为表达个人意见。
All contents Copyright © 1999-2006 by Joel Spolsky. All Rights Reserved.

Retrieved from "http://local.joelonsoftware.com/wiki/%E7%B4%84%E8%80%B3%E7%9A%84%E7%A8%8B%E5%BC%8F%E5%B8%AB%E6%9B%B8%E6%AB%83"

 

原创粉丝点击