最佳軟體文選I - 介紹 Introduction to Best Software Writing I

作者:周思博 (Joel Spolsky)
June 20, 2005
屬於 Joel on Software, https://www.joelonsoftware.com/2005/06/20/introduction-to-best-software-writing-i/

這是 The Best Software Writing I, Selected and Introduced by Joel Spolsky 的介紹,此書目前已發行。

BestSoftwareWritingI.jpg

紐約市的風正大。

就如往常,當我走過四條街要從我的辦公室到地鐵站時,有趣的事正在發生。

其實不是真的有什麼有趣的事,只是適度有趣的事。

例如,有些傢伙正在人行道上瘋狂地跑著,看起來非常像 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)
Cory Doctorow - 由WIPO拯救加拿大的Internet (Save Canada's Internet from WIPO)
ea_spouse - 美商藝電:人的故事 (EA: The Human Story)
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))

這些網頁的內容為表達個人意見。
All contents Copyright © 1999-2006 by Joel Spolsky. All Rights Reserved.