飆高音(譯文)

阮一峰發表於2009-07-12

是的,我還在翻譯More Joel on Software這本書。

300頁,我幹了8個月還沒完工。出版社都快對我絕望了。

Joel的文章很不好譯。他喜歡東拉西扯,喜歡文字遊戲,喜歡使用延綿不斷的長句,喜歡炫耀自己的知識面,這些都是對譯者的折磨。就像下面這篇5000字的文章,整整花了我三天。現在,上海天天是37度的高溫,我真是幹得揮汗如雨(不是比喻用法喔)。

這本書的翻譯費,扣除合同上的延期罰金後,已經可以忽略不計了。支援我的唯一動力,就是我覺得這本書有價值,值得傳播。我還希望,在我徹底放棄譯書之前,留下一本能夠代表自己翻譯水平的好書。

還是以下面這篇文章為例,Joel談了一個重大問題:"最好的程式設計師"到底意味著什麼。為什麼我說這個問題很重大?因為你讀完就會知道,在現行的商業規則中,平庸者是沒有報償的,只有最優秀的人才能拿到超額報償。用Joel的話說,就是"贏家通吃"。我認為,每個人都應該從這個角度,思考自己的人生規劃。當然,Joel的這篇文章寫得太分散了,重點不突出,但是無論如何是非常具有啟發性的。

我暗中為自己訂下一個目標,就是希望我的翻譯10年後還有人讀。真的會有嗎?.........

老實說,我覺得沒問題。

=========================

飆高音

作者:Joel Spolsky

譯者:阮一峰

原文網址:http://www.joelonsoftware.com/articles/HighNotes.html

發表日期 2005年7月25日,星期一

2000年3月,我的網站"Joel談軟體"開張了。我在上面大言不慚地說,大多數人都有一種錯誤的想法,他們認為必須先有一個好的點子,然後才能開辦一家成功的軟體公司(www.joelonsoftware.com/articles/fog0000000074.html):

常見的看法是,你在開辦軟體公司之前,必須先找到一個好點子,認清你的目標市場是什麼,想清楚你到底要解決前人沒有解決的什麼問題,然後再動手實踐,去掙大錢。我們把這種想法稱為"先做好老鼠夾,再抓老鼠"(build-a-better-mousetrap)。但是,開辦軟體公司的真正目的,應該是將資本轉化為有用的軟體。

過去5年中,我一直在現實中驗證我的理論。2000年9月,我同Michael Pryor一起創辦了Fog Creek軟體公司,我們的理念可以總結為四個步驟:

飆高音(譯文)

這樣的總結很合乎我們的情況,尤其反映了我們創辦Fog Creek的真正目的,那就是創造一家我們願意為之工作的軟體公司。那個時候,我斷言好的工作條件(或者,說得囉嗦一點,"開一家世界上最好的程式設計師想要為之工作的公司")將帶來利潤,這是很自然的事情,就好像巧克力導致發胖、色情電子遊戲導致犯罪率升高一樣。

不過,今天我不想深究這個話題,而只想談一點,因為如果這一點不成立,我的整個理論一瞬間就灰飛煙滅了。這一點就是,談論"最好的程式設計師"到底有沒有意義?換句話說,程式設計師之間的能力差別真的有這麼重要嗎?

這個問題的答案,對我們來說顯而易見,但是可能對其他許多人來說,它依然需要被證明。

幾年前,一家大軟體公司考慮併購Fog Creek。那家公司的CEO說,他不是很認同我的觀點,不覺得僱傭最好的程式設計師有那麼重要。我一聽這話,就知道併購沒戲。他用了《聖經》中的一個隱喻----你需要的只是一個大衛王[1](King David),然後再配上一支執行命令的軍隊就夠了。沒過多久,那家公司的股價快速地從20美元跌到了5美元,因此我們此前拒絕他們的併購要求,看上去就很明智。當然,股價下跌的原因,不能歸咎於那個CEO崇拜大衛王。

事實上,對於那些喜歡抄來抄去的財經記者,以及那些自己懶得思考、依賴高價請來的諮詢公司代替思考的大公司,常識似乎就是,如果想要賺到錢,最重要的莫過於壓低程式設計師的勞動力成本。

在有些行業,價格比質量重要。沃爾瑪是世界上最大的公司,它的發家祕訣就是賣便宜貨,而不是賣好貨。如果沃爾瑪只賣高質量的商品,商品的成本就要上升,那麼沃爾瑪整個的價格優勢就將喪失。以直筒襪(tube sock)為例,如果沃爾瑪想出售經久耐穿的直筒襪,能夠經得起各種各樣的損耗,比如說,被洗衣機一直洗,也不會破,那麼這樣的直筒襪的各種成分,都必須使用最好的原料(比如棉花),才能製造出來合格的成品,每雙襪子的成本就必然上升。

既然如此,那麼為什麼低成本的軟體供應商,就不能在軟體業中生存下來呢?我們只僱傭最便宜的程式設計師,為什麼就是不行?(說到這裡,我想起了Quark軟體公司,我很想去問問他們,將整個開發團隊都解僱,用低工資的程式設計師全部取代原來的高工資程式設計師,會有什麼結果[2]。)

讓我來告訴你原因,根本的一點就是軟體的複製成本為0。這意味著,程式設計師的勞動力成本分攤在你銷售出去的所有軟體中。對軟體來說,如果銷售量很大,質量的改進並不會造成單位軟體成本的上升。

本質上,軟體質量的改進會創造出新價值,而且價值創造的速度要快於成本提升的速度。

或者,換一種不太嚴格的說法,如果你想壓低程式設計師的工資,那麼你就會得到質量很垃圾的軟體,而這實際上也不會為你省下很多的錢。

這個現象在娛樂業中也存在。如果你想拍攝一部大片,花錢去請好萊塢大明星布拉德·皮特(Brad Pitt)主演,還是物有所值的。雖然他的開價很高,但是因為他是當紅大明星,擁有巨大的票房號召力,幾百萬人會因為他而來看你的電影,你就能把他的報酬分攤到這幾百萬人頭上。

或者,改成這樣說,如果你想拍攝一部大片,花錢去請好萊塢大明星安吉麗娜·朱莉(Angelina Jolie)主演,還是物有所值的。雖然她的開價很高,但是因為她是當紅大明星,擁有巨大的票房號召力,幾百萬人會因為她而來看你的電影,你就能把她的報酬分攤到這幾百萬人頭上。

不過,我到現在依然沒有證明任何東西。"最好的程式設計師"到底什麼意思?不同的程式設計師開發的軟體,在質量上真的有重大差異嗎?

讓我們從傳統的生產率開始看起,這個指標很直觀。但是,衡量程式設計師的生產率是很困難的,幾乎所有你能想到的衡量標準(錯誤修正涉及的程式碼行數,功能點(function point)的個數,命令列介面中的引數個數)都很不準確,無法採用。而且,在大型專案中,想要得到具有可比性的資料,難度很大,因為很少會讓兩個程式設計師去做同樣的事情。

我依靠的資料來自耶魯大學的Stanley Eisenstat教授。每年,他都開設一門需要大量程式設計的課程,課程編號是CS 323。這門課的作業,主要是5道程式設計題,每一題都要用2星期左右才能完成。這些題對於本科生來說,真是相當艱鉅,比如開發一個Unix作業系統的命令列shell程式,寫一個ZLW壓縮格式的解壓程式等等。

學生們對於這麼重的作業負擔怨聲載道,以至於Eisenstat教授開始要求大家,將做每道題用了多少時間反饋給他。他很用心地收集這些資料,持續了好幾年。

我花了一些時間,研究這些資料。它們記錄了幾十個學生在同樣的時間,用同樣的技術做同樣的題,這是我知道的唯一一個這樣的資料集。所有外界條件都被很好地控制了,就像在做試驗一樣。

資料集一共包括12道題,我做的第一件事,就是計算學生在每道題上花費的平均小時數、最小小時數、最大小時數和標準差。下面就是結果:

飆高音(譯文)

你從中注意到的最明顯的東西,就是資料的變動幅度非常大。最快的學生做題的速度,比普通學生快三到四倍,比最慢的學生快十倍。標準差之大非常驚人。嗯,我因此想到,可能其中有些學生是在敷衍了事,馬馬虎虎地做作業。他們只花四個小時就完成了作業,但是寫出來的程式卻無法執行,我決定把這樣的學生排除在外。於是,我對資料進行了篩選,只包括那些成績排在第一個四分位數之前的學生......也就是程式碼質量最高的前25%的學生。我必須在這裡說,Eisenstat教授的評分是極端客觀的。學生交上來的程式碼,都通過自動測試進行打分,通過的測試個數決定了分數的高低,分數就像公式那樣被計算出來,不考慮任何其他因素。不良的編碼風格,或者遲交作業,都不會被扣分。

下面就是成績排在第一個四分位數之前的學生的資料:

飆高音(譯文)

看到了嗎,幾乎沒有差別!前25%的資料得到的標準差,幾乎與整體標準差完全一樣。事實上,你仔細審視這些資料,會很清楚地看到,時間和成績之間不存在明顯的相關性。下面就是其中一道題目的散點圖,很具有代表性。......我選擇的題目是COMPRESS01,那是一道2001年的題目,要求學生開發一個Ziv-Lempel-Welch壓縮器。我選擇這道題的原因,是因為它的標準差很接近總體的標準差。

飆高音(譯文)

從圖中根本看不出什麼東西,不過這就是我想說的。作業的質量與所花費的時間基本上是不相關的。

關於此事,我問過Eisenstat教授,他指出還有另外一個因素。因為每次都規定交作業的時間(通常是在某一天的午夜之前),遲交會受到很嚴厲的批評,所以許多學生眼看時間要到了,就停下來將還沒做完的作業交上來。換言之,部分因為佈置作業和交作業之間的時間是有限的,所以學生花在這些作業上的最長時間是有上限的。如果學生們有無限的時間做作業(這更接近現實世界中的情況),那麼資料之間的極差(最大值與最小值的差)還會更大。

當然,這些資料並非完全可靠,可能存在謊報。有些學生也許會誇大用來做題的時間,希望以此博得一點同情,下次就會換來更容易的題目。(祝君好運!今天CS323的作業,同我在80年代上大學時是一樣的。) 另一些學生可能會少報,因為他們忘了記錄時間。但是,就算存在這樣對資料的扭曲,我依然相信這些資料說明了,程式設計師的生產率有5倍或10倍的差距。

等等,我還沒說完

如果程式設計師之間僅有的差別就是生產率的話,那麼你也許會想,你可以用5個平庸的程式設計師,代替一個優秀的程式設計師。顯然,這是行不通的。還記得布魯克斯法則(Brooks' Law)嗎?"向一個已經延誤的軟體專案增加人手,只會使它更加延誤"(Fredrick Brooks, The Mythical Man-Month: Essays on Software Engineering, Addison-Wesley, 1975)。這就是原因。一個優秀的程式設計師獨自完成一項任務,就不需要額外的溝通和協調。如果同樣的任務讓5個程式設計師一起完成,他們之間就必須溝通和協調。這會花掉大量時間。開發團隊越小,就越能獲得額外的收益。人力與工時的互換,真的是一個神話[3]。

等等,我還是沒說完

用許多平庸的程式設計師取代少數優秀的程式設計師,這種做法的真正問題在於,不管平庸的程式設計師工作多長時間,他們做出來的東西,都無法像優秀程式設計師做得那樣好。

五個Antonio Salieris[4]也寫不出莫扎特的《安魂曲》。永遠也寫不出,埋頭寫100年也沒用。

五個Jim Davises----他是一點都不好笑的卡通人物加菲貓的創造者,"加菲貓"裡面20%的笑話是在講星期一有多糟糕,剩下的笑話則是那隻貓有多麼喜歡義大利麵(而且這些話都被當作妙語)......哪怕五個Jim Davises把餘生都用來寫喜劇,也永遠寫不出電視連續劇《宋飛傳》(Seinfeld)中"Soup Nazi"那一集的劇本。

Creative公司的音樂播放器Zen的開發團隊即使再花上許多年,對他們那個醜陋的iPod仿製品進行美化,也永遠造不出像蘋果公司的iPod那樣優美雅緻、令人陶醉的播放器。他們不會對蘋果公司的市場份額,造成任何影響,因為他們的團隊中沒有那種神奇的設計天才。他們就是缺少設計的天賦。

一流的歌唱演員不管在什麼時候,都可以很輕鬆地唱出高音,而平庸的歌唱演員就是永遠做不到這一點。莫扎特的歌劇《魔笛》中有一段著名的詠歎調"Queen of the Night",音高必須達到F6[5]才能唱好這首歌,世界上能達到這個標準的女高音都快要絕跡了,而飆不到著名的F6,你就是不能表演"Queen of the Night"。

軟體真的與歌唱家的高音有關係嗎?"可能只是某些方面吧,"你說,"不過應該同我關係不大,我為醫療廢物行業開發應收賬款的使用者介面。"說得不錯。我針對的是生產最終產品的公司,它們的成敗完全取決於產品的質量。如果你開發的軟體,只是為了在公司內部使用,開發的目的是為了配合公司的運營,而不是銷售,那麼這種軟體對你來說,可能只要夠用就行了,而不需要特別優秀。

在過去的幾年中,我們已經看到了非常多的優秀軟體,它們是真正的高音選手,它們的音高是平庸的程式設計師所無法企及的。

回想2003年的時候,Nullsoft軟體公司釋出了Winamp的一個新版本,他們的網站上貼出瞭如下的告示:

* 華麗的新外觀!

* 絕妙的新功能!

* 大部分功能真的能用!

最後一句話----"大部分功能真的能用!"----讓每個人都笑出了聲。使用者因此覺得很開心,對Winamp感到興奮。他們使用它,並且告訴朋友,心裡覺得Winamp真是棒,這都是因為Winamp的網站上寫著"大部分功能真的能用!"。這難道不是很酷嗎?

如果你將一大堆多餘的程式設計師,塞進Windows Media Player的開發團隊,他們能不能唱出高音?想也別想,一千年都沒有這種可能。因為你向開發團隊中加進去的人越多,其中就越可能有一個壞脾氣的傢伙,他認定在網站中寫上"大部分功能真的能用!",是一種不專業、不成熟的表現。

更不要提了,網站上還有另一句話,"Winamp 3:差不多與Winamp 2一樣新穎!"

就是這樣的東西,讓我們愛上了Winamp。

當AOL時代華納集團的那些豬頭們,將黑手伸向Winamp[6],網站上好玩的東西從此就消失了。這些人看上去,簡直就像電影《莫扎特傳》(Amadeus)中的反派角色Antonio Salieris,怒氣衝衝、抱怨不滿、哭哭啼啼,一心一意要把所有創造力的標誌都摧毀,因為這些標誌可能會嚇到明尼蘇達州的某位老太太,他們為了這個,不惜將所有使得人們喜歡這個產品的因素都清除得乾乾淨淨。

換個例子,再來看看iPod。它是不能換電池的。所以,如果電池壞了,那就太糟糕了。你只好去買一個新的iPod。當然,你事實上可以把它送回蘋果公司,他們會幫你拿到工廠裡換個電池,不過收費是65.95美元。哇塞。

為什麼不允許你換電池?

我的理論是,蘋果公司要把iPod做成一個優美、性感的播放器,不希望破壞它無比光滑、天衣無縫的表面,不希望它像其他很便宜、很垃圾的電子類消費產品一樣,背後有一個巨大丑陋的電池蓋,因為電池蓋的閂鎖總是很容易斷掉,而電池蓋的細縫中總是嵌滿了口袋布料的絨毛和其他各種各樣噁心的東西。iPod是我見過的表面最光潔無縫的消費類電子產品。它是那樣優美。你能感覺到這種優美,彷彿河流中一塊光滑的鵝卵石。一個電池蓋的閂鎖能把整個鵝卵石效果全毀掉。

蘋果公司的決定完全出於風格(style)的考慮。事實上,iPod裡面到處都考慮到了風格。這種風格不是微軟公司的100個程式設計師、或者Creative公司的200個工業設計師(這家公司真是叫錯了名字[7])所能達到的,因為這些公司沒有Jonathan Ive[8],而外頭能找到的Jonathan Ive並不多。

很抱歉,我一談起iPod,就停不下來。那個漂亮的拇指轉輪,還配上了輕輕的咔嗒聲......蘋果公司花了額外的錢,在iPod中裝了一個喇叭,就為了讓拇指轉輪的咔嗒聲,聽起來好像就來自轉輪本身一樣。他們原本可以省下這幾分錢----幾分錢啊!----將咔嗒聲通過耳機傳出來。但是拇指轉輪讓你覺得你在控制。人們喜歡控制的感覺。控制的感覺讓人們感到開心。拇指轉輪對你的操作,反應非常快速流暢,還帶有聲音,這一點就會讓你感到開心。它與世界上其他6000種行動式消費類電子廢物不一樣,那些產品的啟動時間是那樣漫長,你按下on/off開關,等上一分鐘才能知道是否有任何事情發生。你在控制它嗎?誰知道呢?想一想,上一次你使用按下電源開關後立刻就能通話的手機,是什麼時候的事情了?

風格。

開心。

情感的訴求。

這些就是大熱門產品的成功要素,不管這種產品是軟體,還是電影或者消費類電子產品,都一樣。如果你沒有把這些要素做對,雖然你可能依然能夠解決問題,但是你的產品不會成為排名第一的熱門商品,也就無法讓你公司中的每一個人致富,無法讓你們都開上很有風格、很讓人開心、很打動人的汽車(比如法拉利的Spider F1),無法讓你們還剩下足夠的錢,在後院蓋一所隱居的小屋。

這不僅僅是"生產率高十倍"的問題,而是"普通"程式設計師永遠都唱不出,開發優秀軟體所需要的那種高音。

令人難過的是,對於非商業性的軟體開發,這一點並不完全適用。內部使用的軟體,很少重要到需要僱傭巨星來開發。沒人會花錢請Dolly Parton[9]在婚禮上演唱。這就是為什麼最令人滿意的職業生涯(如果你是程式設計師的話),往往是在真正的軟體公司裡,而不是在銀行裡擔任IT技術人員。

眼下的軟體市場,有點"贏家通吃"(winner-takeall)的味道。除了蘋果公司,沒有其他人能在MP3播放器市場上賺到錢。除了微軟公司,沒有其他人能在電子表格和文書處理器市場上賺到錢。沒錯,我知道,他們做了破壞競爭的事情,才得到今天的市場地位,但是這改變不了這是一個"贏家通吃"市場的事實。

在市場上排名第二,或者有一個"還不錯"的產品,對你來說,就意味著失敗。你的產品必須非常優異,我的意思是,好到大家願意談論它。想要開發優異的軟體,你的唯一希望就是依靠那些真正優秀的軟體天才,只有他們才能為你創造出來。下面就是整個的計劃:

飆高音(譯文)

註釋:

[1] 根據《聖經》的記載,大衛是以色列王國的第二任國王,也是一位英勇的戰士。他率領以色列,擊敗了腓力士,殺死了巨人歌利亞。

[2] 這裡的"Quark軟體公司"指的是QuarkXpress,它曾經是世界上排名第一的排版軟體。原創辦人出售公司後,新的出資方解僱了整個開發團隊,將開發工作外包到了印度。結果,QuarkXpress 6.0版延遲了兩年才釋出,實際成本遠遠高於預算,更糟糕的是,軟體中還存在許多錯誤。6.0版釋出的時候,QuarkXpress的市場份額已經從90%降到了50%,之後更是一路下跌,排版軟體市場的老大被Adobe公司的InDesign搶走。關於此事的詳細情況,請參閱http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=86852。

[3] 此處指的是Frederick Brooks所寫的軟體專案管理名著《人月神話》(The Mythical Man-Month)。所謂"人月"就是一個人在一個月內所能完成的工作量。假如有個專案預估需要12個人月,那麼派4個人來處理這個專案,理論上只要三個月就能完成。但是,Brooks認為這種換算機制在軟體業中行不通,是一個神話,因為軟體專案是互動關係複雜的工作,需要大量的溝通成本,人力的增加會使溝通成本急劇上升,反而無法達到縮短工時的目的。在本質上,軟體專案的人力與工時是無法互換的,當專案進度落後時,光靠增加人力到該專案中,並不會加快進度,反而有可能使進度更加延後。

[4] Antonio Salieris(1750-1825)是義大利作曲家。傳說中,他的才能不及莫扎特,在嫉妒心的驅使下,毒死了莫扎特。

[5] F6是女高音的最高音高。

[6] Nullsoft成立於1997年,同年推出Winamp後一舉成名,Winamp成為最受歡迎的MP3歌曲播放軟體之一。1999年6月1日Nullsoft被美國線上(AOL)購併,成為AOL旗下的子公司。

[7] Creative的意思是"創新",公司的中文名也是這個詞。

[8] Jonathan Ive是蘋果公司工業設計部門的高階副總裁,也是iMac、MacBook、iPod和iPhone的主要設計者。

[9] Dolly Parton(1946-),美國著名流行歌手。

(完)

相關文章