本书意在用这些最优秀的软件开发类文章来激励程序员们编写出更优秀的软件。目的很简单,就是好好编写软件。编程工作充满魅力,因为它的趣味性、条理性、重要性无一不吸引您沉醉其中。希望通过本书,软件开发人员可以明白如何才能写出令读者感兴趣的软件,因为沟通是软件开发过程中最易被忽略的技能。\r\n 本书中的文章介绍了大量涉及软件的出色想法,它们也是我们在近期所见过的最棒的观点。文章的作者们用各种有趣、清晰、吸引人的方式用心地将这些想法展示给我们。相信这些想法会不断为人们所接受,并且很快会在软件开发领域产生深远影响。
Ken Amold编程风格是主旨\r\nLeon Bambrick最愚蠢用户界面奖颁给:Windows搜索界面\r\nMichael Bean程序员外包的隐患\r\nRory Blyth把Excel当数据库用\r\nAdam Bosworth ICSOC04讲座\r\ndanah boyd自闭的社会软件\r\nRaymond Chen为何不禁用依赖于未公开机制的应用程序\r\nKevin Cheng and Tom Chi踢骆驼\r\nCory Doctorow从WlPO中拯救加拿大的Internet\r\nea spouse EA:关于员工的故事\r\nBruce Eckel强类型与强测试\r\nPaul F0rd Processing Processing\r\nPaul Graham伟大的黑客\r\nJohn Gruber地址栏就是新的命令行\r\nGregor Hohpe星巴克不使用两阶段提交\r\nRon Jeffries激情\r\nEric Johnson C++——被遗忘的特洛伊木马\r\nEric Lippert更换一个灯泡需要多少名微软员工?\r\nMichael“Rands”Lopp事情搞砸了怎么办?\r\nLarry Osterman Larry的软件工程规则之二:用测试指标来衡量测试人员是行不通的\r\nMary Poppendieck团队补偿\r\nRick Schaut Mac Word 6.0\r\nClay Shirky群是其自身最大的敌人\r\nClay Shirky群作为用户:社会软件的结构与设计\r\nEric Sink填补鸿沟:第1部分\r\nEric Sink填补鸿沟:第2部分\r\nEric Sink雇用的风险\r\nAaron Swartz PowerPoint Remix\r\nWhy the lucky stiff与卡通狐狸来趟快速(且希望无痛)的Ruby之旅
Joel Spolsky是世界知名的软件开发专家。他的站点Joel on Software(www.joelonsoftware.com)已被翻译成30多种语言,备受全世界软件开发人员欢迎。作为纽约Fog Creek Software的奠基人,他创建了著名的软件小组项目管理系统FogBugz。Joel曾就职于微软,在Excel小组工作时设计了VBA。他也曾在Juno Online Services工作过,并于那段期间开发了Internet客户机——现在有无数用户在使用。在本书之前Joel还编著了两本书:User Interface Design forProgrammers(Apress,2001)和Joel On Software(Apress,2004)。Joel是耶鲁大学学士,而在此之前他是一名伞兵,曾在以色列国防军(Israeli Defense Forces)服役。此外,Joel还是Kibbutz Hanaton的奠基人之一。
如今纽约城的节奏就像一阵风。
如同往常,在我从办公室穿过4条街去地铁口的路上,不断发生着些有趣的事。
比如说吧,有个小伙子沿着人行道一路飞奔(看起来非常像R. Crumb漫画中的一个人物),大幅地摆动着手臂,呼哧呼哧地喘着粗气。“奔跑”这个词还不能准确地描述出他当时的状态 —— 他多次踉踉跄跄几乎要跌倒了,然而在快摔倒时却又站住了。
再比如一辆出租车拐了个弯,差点儿撞倒一位过马路的老人,出租车司机便不停抱怨着这位老人过马路的速度太慢了。
还有,两个胖胖的、满脸尴尬的外地人向我打听,问我附近有没有酒吧——哈哈,当然有啦,我们就站在酒吧前面。
有人在地铁入口发放小广告,地铁站内也因此到处都是人们扔掉的卡片垃圾——人们往往看都不看一眼就将它们扔在地上。我在下台阶时几乎每一阶都能踩到卡片。
这些是发生在纽约街头的一些小趣事,不过很快就会被忘记了。
第二天我跟一名暑期工(summer intern)聊天。因为某种原因,今年的暑期工作班上几乎75%的实习生是印第安纳人或在印第安纳上学的人。熟悉美国地图的人都知道印第安纳差不多在美国中部——这个州有农场、有散发着朝气和纯朴气息的大学校园、有诺曼•洛克威尔式(Norman Rockwell)的小镇,还有一些老工业城在苟延残喘。(当我写这些文字时,还算比较平静,要是让印第安纳的旅游与基础设施部门的人来描述的话,他们一定会用激动人心的语气告诉您,印第安纳州有着深厚的文化背景、风景如画的湖、国际水准的电话系统,还有各种民族餐馆。您也许可以在一条街上同时找到墨西哥餐馆与意大利餐馆!)
但是,这名实习生说他从来没有在纽约住过,让我告诉他纽约是什么样的。我不知道如何确切地向他描述,于是我说,“纽约是这样一个地方:在你每天去地铁口的路上,可能会发生10件事,这些事在布卢明顿与印第安纳一定是茶余饭后有趣的谈资,然而在纽约却没有人注意。”
我很有些自鸣得意,于是从书架上取下一份地图,想寻找另一个城市来嘲弄一番。
然而,我似乎忘了我给您讲这个故事的初衷。
噢,等一下,想起来了,不过在此之前我得先给您讲另一个故事。
几个月前,我从一家出版社那里收到一本书的评审副本(并不是这本书的出版社),这里我就不提那家出版社的名称、书名以及作者名字了,因为我恐怕对那本书的评价不会太好。
这家出版社想让我对这本书作个好评,放在书的封底上。通常情况下我是乐意这么做的:我是个公众人物,我愿意将名字公开在读者面前。我希望从此以后,上门推销的电话推销员能正确地念出我的名字。
乍看起来这本书很有说服力,因为它解决了一个实际需求。我曾经多次站在书店的书架前,试图找到一本关于这个主题的图书,然而一直没有找到。因此我充满希望地开始阅读这本书的手稿。
可惜呀!我几乎无法将这本书读下去:作者一直在讲新鲜有趣的事情,他写得也很清楚简洁,然而这本书真的十分无聊。更糟糕的是,它根本无法令人信服。
作者违反了优秀作品的第一个规则:“展示,而不是讲述(show,don’t tell)。”书中到处都是类似这样的句子:“优秀的团队领导用榜样激励员工。”这是什么跟什么嘛!读者很难理解。
下面的示例展示了如何阐述“优秀的团队领导用榜样激励员工”的一种方式,通过这种阐述方式读者一定不会看得昏昏欲睡:
在部队里的时候,我有几个月是在食堂工作,天天擦桌子、洗碗,每天要工作16小时。如果洗得够快的话,可以在下午挤出半个小时休息一会。我的双手永远是红肿的,衬衫前襟永远又湿又难闻——我真的无法忍受下去了。
通过某种途径,我离开了食堂,谋到一份新工作—— 侍侯一名高级别的军士长(Sergeant Major)。这家伙可有点来头,他比单位里的小伙子们差不多要大20多岁。即使在战场上,哪怕周围的环境又脏又湿,他也总是衣着整洁:穿着全套干净笔挺的制服,皮鞋也总是擦得光亮无比。你会有种感觉:当我们睡在地上脏兮兮的睡袋里时,他也许是睡在柔软舒适的高级埃及棉被里。
他的工作包括两件事:军纪以及基地的物质基础设施。由于他是首席训练长官,所以部队里的人都有些怕他。大部分人对他的了解只能通过他昂首阔步的视察、声嘶力竭的狂吼、要求着极高的几乎不可能实现的秩序与整洁标准——因为我们基地基本上就是沙漠中的一堆帐篷,不下雨尘土满天,一下雨泥泞潮湿。
因此,当我第一天为这位军士长工作时,我不知道会发生什么事。我想一定很可怕,但是再可怕也好过整天擦桌子洗碗吧(而且他也没有食堂负责人那么和蔼可亲!)。
上班第一天,军士长把我带到厕所,告诉我我的工作是负责保持厕所的清洁。他说:“我来教你如何清洁厕所。”
然后,他开始示范:跪在陶瓷马桶前面的地上,穿着他笔挺干净的制服,不戴手套,用两只手擦洗马桶。
对于一个只有19岁不得不洗厕所的男孩来说,这几乎是世界上最可怕的工作了。然而竟亲眼看到这位38岁穿着光鲜整洁的高级别训练长官洗厕所,这彻底改变了我的态度——“如果他都能洗厕所,那么我也能;洗厕所没什么不好!”我的忠诚与热情从那一刻起被激发出来—— 这就是领导力量。
正如你所看到的—— 我讲了一个故事。我打赌,您一定宁可看10篇这样400字的故事,也不愿意听人唠唠叨叨地讲“优秀的小组领导如何用榜样激励员工”。
不过,我还是给希望我为这本书写赞语的编辑打了个电话,告诉他我无法给出好评,因为我不能违心地去推荐一本没有情节的无聊的书,即使它是100%正确的,写得也很好。我想他现在一定很讨厌我。
但是事实就是如此。
软件开发领域极需更好的作品。如果让我再读一本由16个人(其母语非英语)合写的谈论关于某个类库的书的话,我一定会疯掉;如果看到另一本关于对象导向模型而又充满许多自命不凡的伪学术的精装书,我绝不会把它放回到Fog Greek图书馆的书架上,而是直接扔进垃圾箱!如果我再看到一本由Slashdot上一个热情的9岁星球迷写的攻击Microsoft问题代码的书,我可能会用铅笔把自己的眼珠抠出来。够了,再也不要出现这些书了!
这就是为什么当Gary Cornell推荐本书时我欣然接受的原因。本书展示了去年前后的最佳软件文献—— 最初是想每年重编一次,所以您看到的版本可能是“2004年最佳软件编写”。但是我们还想将从2003年起的大量优秀文章都包括进去,于是我向我的站点Joel on Software上的读者征求本书提名意见,由我最终定夺。因此,本书包括或是不包括哪些文章完全是我一个人的事,不过这本书真的是值得一读。
无封面