最佳软体文选I - 介绍

这是The Best Software Writing I, Selected and Introduced by Joel Spolsky的介绍,此书目前已发行。

纽约市的风正大。

就如往常,当我走过四条街要从我的办公室到地铁站时,有趣的事正在发生。

其实不是真的有什么有趣的事,只是适度有趣的事。

例如,有些家伙正在人行道上疯狂地跑着,看起来非常像R. Crumb漫画中的角色,挥动他的手臂并发出鸡的叫声。“跑"并不是正确的词。他比较像不断地要坐倒却在他着地之前把自己接起来。

然后一台计程车转进附进的转角撞倒一个过街老人,他只是走得有点慢而使司机耐不住性子。

一对圆胖、红脸的外地客问我附近是不是有任何一间酒吧(的确有。我们就在酒吧前面)

某些人在地铁站的入口发广告卡。当然了,地铁站的里面到处都是这种卡片,因为每个拿到的人立刻就把它丢在地上,用你所能丢4 x 6大小卡片的最粗暴方式。我在下楼时差点因踩到一张滑倒。

适当有趣的内容,但在纽约市相当容易就被忘记。

隔天我正在跟我们刚雇用的暑期实习生谈话。基于某种原因,今年的暑期实习课程包含了75%不是从印弟安那来就是要去印弟安那的学校就读的人。印弟安那,这是你在美国印象中并不熟悉的那一块,是在中部的某处,充满农田的一州,充满生气的大学里有着吃玉米、打篮球长大的孩子,诺曼- 洛克威尔式(Norman Rockwell)的城镇,而有时候生锈黑嘴的旧工业城还在抓紧着它最后一口的呼吸。当我在写这些文字时,我准备好跟从印弟安那旅游与基础设施部门的愤怒信周旋。他们推销刺激的文化景观、如诗如画的湖泊、世界级的电信系统、与多样种族的旅馆。你也许可以在同一条街上找到墨西哥旅馆与义大利旅馆!)

不管如何,那个实习生说他从来没有住在纽约市,问我说这里像什么。我实在没有一个好的答案,不过我说「在印地安那州的伯明顿,每天去坐地铁的路上会遇到十件足以当作午餐闲聊题目的趣事,但在这里你全都不屑一顾,纽约大概就像是这样的地方。」

我自呜得意,然后由书架拿出一张地图找另一个州来侮辱。

不过,我忘记为什么要讲这个故事。

噢,等一下,我记起来了,不过我得先告诉你另一个故事。

几个月前,我由另外一个出版社(不是这本书的出版社)那里拿到一本书的审阅版。出版社、 作者和书的名字我都保留,因为我怕我对这本书讲不出什么好话。

那家出版社希望我谈谈这本书有多好,然后在书背上引用我的话。通常我都很乐意这样做:我是个曝光狂,为了让我的名字出现在阅读大众面前什么事都会做。我的心愿是如果我曝光得够多,打电话到我家的电话销售人员就能够念出我的名字。

这本书一开始看起来很有说服力。它满足了真正的需要。我记得有好几次在书店绝望地想找本针对特定题目的书籍,可是一无所获。所以我满心期待地阅读手稿。

Bleah.

我几乎读不下去。

作者一直在谈论聪明以及有趣的事。

他的文笔也很清晰。

不过这本书却是彻底的完全的无聊。而且更糟的是它完全没有说服力。

作者违反了良好写作的头号规则,那一条「呈现,不要讲述」的规则。这本书里一个故事都没有。到处都充满了「良好的团队领导人会设定一个正面的范例来提供灵感」这种句子。这是什么鬼东西?

注意啦。下面的方法可以让你说「良好的团队领导人会设定一个正面的范例来提供灵感」而不让你的读者睡着:

我当兵时在餐厅做了几个月,每天16小时不停地擦桌子和洗盘子,只有下午可以休息半小时,不过得洗碟子洗得非常快才有可能。我的手永远都是红的,我的上衣前襟永远都又湿又臭,而我再也受不了了。

反正我找到方法离开厨房,调去为高阶军士长工作。这个家伙有很多年的经验。他可能比单位中其他的小朋友大上20岁。即使是在野外,不管周遭的世界多么脏乱泥泞,他总是保持光鲜亮丽,穿着全套干净浆熨的军服,皮鞋也总是擦得光亮无比。你会有种感觉,当我们睡在地上脏乱的睡袋里时,他是睡在400针的埃及棉床单上。

他负责两件事:军纪以及基地的实体设施。由于他是主军纪官,营里每一个人都有点怕他。大多数人只知道他趾高气扬地在基地里到处检查,大声吼叫并要求不可能达成的高标准命令和清洁,因为我们的基地基本上是沙漠中的一堆帐篷,不是充满灰尘就是充满泥泞,视天气状况而定。

反正替军士长工作的第一天,我不知道会遇到什么事。我相信会很恐怖,不过总比整天洗盘子和擦桌子要好,而且it's not like the guy in charge of the mess hall was such a sweetheart, either!
一天他带我到军官的浴厕,告诉我要负责保持这里的清洁。他说:「这是清洁厕所的方法。」
然后他跪在小便斗前,身上还穿着干净浆熨的制服,然后用双手去擦洗厕所。

对于必须去洗厕所(几乎就是世界上最烂的工作)的19岁青年来说,看到这个38岁穿得光鲜整洁的高阶军纪官清洁厕所,彻底改变了我的态度。如果他能够清理厕所,我也能够清理厕所。打扫厕所并没有什么不对。从此刻开始,我的忠诚和激励就不再减弱。这就是领导。

看到我在做什么吗?我在说一个故事。我敢打赌你宁愿看这篇400字的故事,胜过听某人打混的说法「良好的团队领导人会设定一个正面的范例来提供灵感」。

总而言之,我打电话给希望我称赞这本书的编辑,说我没办法真心推荐一本没有任何故事的无聊书,虽然这本书除此之外写得很好而且完全正确。我想现在他们很讨厌我。

所以事情就是这样。

软体开发的世界极度需要更好的文章。如果我必须读另一本由16个母语非英语的人合写,谈论某个类别程式库的书,我就会疯掉。如果我看到另外一本充满强烈假学术傲慢的物件导向模型精装书,我再也不会把它收藏在Fog Creek藏书里:它会被直接丢到垃圾桶。如果我必须去读另一篇某个Slashdot上狂热的九岁星舰迷所写,对微软程式问题很多大加攻击的文章,我可能会用削尖的铅笔戳自己的眼睛。够了,够了,真是够了!

而这就是Gary Cornell建议这本书的原因,我也欣然接受这个想法。这是个展示过去一年(大约)软体相关好文章的机会。原本的想法是要每年一本,这样子你手上的就会是「2004年最佳软体文章」,可是2003年有很多我们想收录的文章,而且我们担心如果再书名上有年份,书商便会在年末时退书。我在我的网站Joel on Software上征求忠实读者的提名,然后自己选择最后的文章,所以收录或不收录全是我的责任,不过极佳写作的所有荣耀(在这个很少能获得的领域中)都归于贡献者。

最佳软体文选第一辑(The Best Software Writing I)已经上市。里面包括:
Ken Arnold - 编程风格是根本(Style Is Substance)
Leon Bambrick - 最蠢使用介面奖:Windows搜寻功能(Award for the Silliest User Interface: Windows Search)
Michael Bean - 程式师外包的陷阱(The Pitfalls of Outsourcing Programmers)
Rory Blyth - 当资料库用的Excel (Excel as a Database)
Adam Bosworth - ICSOC04讲座(ICSOC04 Talk)
danah boyd - 自主观念的社会式软体(Autistic Social Software)
Raymond Chen - 为何不干脆挡掉依赖未公开行为的程式(Why Not Just Block the Apps That Rely on Undocumented Behavior?)
Kevin Cheng and Tom Chi - 踢骆驼([Kicking the Llama](http://www.ok- cancel.com/archives/article/2003/10/kicking-the-llama-2.html))
Cory Doctorow - 由WIPO拯救加拿大的Internet (Save Canada's Internet from WIPO)
ea_spouse - 美商艺电:人的故事([EA: The Human Story](http://ea- spouse.livejournal.com/274.html))
Bruce Eckel - 强型别与重度测试(Strong Typing vs. Strong Testing)
Paul Ford - Processing Processing (译注:Processing是一种程式语言)
Paul Graham - 伟大的骇客(Great Hackers)
John Gruber - 网址列就是新的命令列(The Location Field is the New Command Line)
Gregor Hohpe - 星巴克不用两段式委任(Starbucks Does Not Use Two-Phase Commit)
Ron Jeffries - 热情 (Passion)
Eric Johnson - C++ - 被遗忘的特洛依木马(C++ – The Forgotten Trojan Horse)
Eric Lippert - 换一个灯泡需要几个微软的员工?(How Many Microsoft Employees Does it Take to Change a Lightbulb?)
Michael “Rands” Lopp - 当你搞砸时能做什么(What to do when you're screwed)
Larry Osterman - Larry的软体工程原则之二:用测试指标来度量测试人员是行不通的(Larry's Rules of Software Engineering #2: Measuring Testers by Test Metrics Doesn't)
Mary Poppendieck - 团队补偿(Team Compensation)
Rick Schaut - [Mac Word 6.0 Mac Word 6.0]
Clay Shirky - 一个团体是它自己最糟的敌人(A Group is its Own Worst Enemy)
Clay Shirky - 以团体为使用者:社会软体的结构与设计(Group as User: Flaming and the Design of Social Software)
Eric Sink - 缩减缝隙(Closing the Gap)
Eric Sink - 雇用的风险(Hazards of Hiring)
Aaron Swartz - PowerPoint再混和(PowerPoint Remix)
why the lucky stiff - 与卡通狐狸来趟快速(而且希望无痛)的Ruby之旅(A Quick (and Hopefully Painless) Ride Through Ruby (with Cartoon Foxes))