The Joel on Software Translation Project:策略書之二

From The Joel on Software Translation Project

Jump to: navigation, search

策略書之二:雞生蛋蛋生雞問題

作者:周思博 (Joel Spolsky)
譯:Paul May 梅普華
Wednesday, May 24, 2000
屬於Joel on Software, http://www.joelonsoftware.com

做廣告就是要說謊但不能被抓到。大部份的公司做宣傳活動,都只是把公司最差的事實拿出來反過來講(「說謊」),然後深入徹底的撒謊。讓我們稱之為「以反複主張來證明」。舉例來說,坐飛機旅行很狹又不舒服,空服員粗魯又讓人不快,事實上整個航空系統就是種折磨。所以幾乎所有的航空公司廣告都在說坐飛機是多麼的舒服愉快,整個過程中你又多麼的被照顧。英國航空有個廣告是一個商人坐在飛機上夢到自己是個襁褓裡的嬰兒,看到這個廣告時所有合理性蕩然無存。

要舉別的例子嗎?造紙公司一直在大量砍伐我們國家的森林,把根本不屬於他們的老樹林砍得乾乾淨淨。所以他們做廣告時當然就會展現漂亮的老松林,然後說他們有多麼在意此環境。香煙會害死人,所以煙廣告就展示生命,比如拍健康的人微笑著在戶外運動。如此類推。

麥金塔第剛問世時根本沒有軟體可以用。理所當然的蘋果公司就編了一大本光面目錄列出所有「可用」的偉大軟體。不過有一半的項目用小字印著「開發中」,而剩下一半是不管怎麼都拿不到的。其中有些產品爛到不會有人買。不過即使有了這樣一本厚厚的光面目錄,即使裡面每一頁都有一個用美麗說明包裝的軟體「產品」,還是無法掩飾你的128KB麥金塔買不到文書處理器或試算表的事實。NeXT和BeOS都有類似的「軟體產品指南」。(NeXT和BeOS的盲目崇拜者注意:我不需要任何有關你這些該死的作業系統的鬼扯,好嗎?要的話在你自己的專欄裡寫。)軟體產品指南唯一的意思就是該系統沒有軟體可用。當你看到這些巨獸時,朝反方向全速逃離吧。

Amiga、Atari ST、Gem、IBM TopView、NeXT、BeOS、Windows CE、General Magic,一長串失敗的「新平台」不斷出現。由於它們是平台,照字面上如果沒有好軟體就不會太有趣。雖然有極少數的例外(我相信像Amiga或RSTS-11這種神秘而冷門平台的無聊支持者會寄一大堆電郵給我),稍有常識的軟體開發者在景氣好時,都不會刻意為有十萬用戶的平台寫軟體,因為花同樣的工夫可以為Windows這種有上億用戶的平台寫軟體。依舊有人替這些怪胎系統寫軟體,證明了利益並不是唯一的動機,而宗教狂熱仍然長存。親愛的,祝你好運。你替Timex sinclair 1000寫了一個不錯的microEmacs複製品。做得好!給你兩毛五,去買顆糖果吧。

所以說如果你身在平台創造的產業,可能會面臨一般稱之為雞生蛋蛋生雞的問題。除非擁有好的軟體可用,否則沒人會買你的平台,可是你的平台要有很多用戶,才會有人替你寫軟體。痛苦啊!這就有點像是一個哥帝安結(Gordian Knot),不過說是哥帝安死亡漩渦可能更貼切。

雞生蛋蛋生雞問題者以及類似狀況是定策略時不可不知的最重要元素。嗯,是啦,你不知道或許也還是能生存:事實上Steve Jobs在不管這個問題的狀況下兩度創立了一個事業。不過我們其他人並沒有Jobs的個人現實扭曲場(Personal Reality Distortion Field)可用(譯註:很多人說Jobs有神奇的影響力,驅使別人不顧現實為他賣命),所以必須認真努力研究。

第一課。雞生蛋蛋生雞問題的典型範圍是在軟體平台。不過這裡有另一個雞生蛋蛋生雞問題:每個月數百萬家信用卡公司郵寄出幾億份帳單給客戶。大家就會簽好書面支票塞進上兆的信封再寄回去。這些信封會裝到大箱子裡,運到人工便宜的國家再開箱處理。不過整個過程相當花錢,我最後聽到的數字是每張帳單超過一美元。

對我們這些Internet的聰明人來說真是個笑話啊。「把帳單電郵給我,」你會說「我要線上付款!」你還會說:「假設這樣只要花大概十萬分之一分錢。你可以省下幾百萬」或是其他類似的話。

你說得沒錯。所以很多公司都想進入這個技術上稱為帳單遞交(Bill Presentment)的領域,而微軟是其中之一(想不到吧)。他們的方案TransPoint是這樣子的:提供一個網站讓你可以上去看帳單,然後你付款給他們。

所以現在如果你用這個微軟的系統處理帳單,每幾天就得去該網站看看有沒有新帳單來以免漏繳。假設你一個月有十張帳單,這應該不算大麻煩。不過還是有別的問題:只有少數商家會透過這個系統收帳,所以其他帳單還是得用別的方法處理。

最後的結果呢?就是不值得。這樣的系統能找到十萬人來用,我都會覺得很驚訝。於是微軟就必須去找商家商量:「請透過我們的系統來收帳!」然後商家會問:「可以啊,價錢怎麼算?」微軟回答:「五毛錢!這比一美元便宜多啦!」於是商家說「不錯,還有其他費用嗎?」微軟就說啦:「哦,對了,你還得安裝軟體並把你我的系統連接起來,再加上整個運作費用,大概要廿五萬美元。」

由於微軟這個系統的用戶數量太少,實在無法想像誰會為了節省37個客戶的五毛錢而付廿五萬美元。啊哈!雞生蛋蛋生雞問題悄悄出現了!除非商家參與否則客戶不會來,可是沒有客戶的話商家是不會參與的!最後微軟只能花錢脫離困境。不過較小的公司可沒法子這麼做。那麼你能怎麼辦呢?

就雞生蛋蛋生雞問題的處理來說,軟體平台其實可以給我們一些不錯的提示。讓我們稍微看看由IBM-PC起這些年間,個人電腦軟體平台的歷史;或許能發現某些東西!

很多人認為IBM-PC需要用PC-DOS。這並不正確。IBM-PC剛出來時有三種作業系統可以選擇:PC-DOS、XENIX(一套8位元的爛UNIX,是「微軟」出品的),還有某個叫UCSD P-System的東西(信不信由你,這東西就像Java:美好、緩慢、可攜的bytecode,還比Java早20年。)

如今大多數人都從未聽說過XENIX或UCSD這些怪東西。你們這些現代的小朋友可能會認為,這是因為微軟用行銷勢力或其他手法奪取了小小的作業系統市場。這絕對不是真的;那時候微軟還很小,當時最有行銷勢力的公司是擁有多個作業系統的Digital Research。那麼為什麼PC-DOS會是這三家競賽的贏家呢?

在PC出現前能用的真正作業系統只有CP/M,不過用約需一萬美元的CP/M電腦市場太小了。這些電腦貴又不穩用,起來也不方便,不過還是有人買來當文書處理器用,因為CP/M上有一套相當好的文書處理器WordStar,而Apple II根本不能做文書處理(連小寫字母都沒有)。

現在有件已知的小小事實:連DOS 1.0的設計都內建了CP/M相容模式。DOS不只有一套很好的新程式介面(硬派程式師所知道的INT 21),還完整地支援了原本的CP/M程式介面。它幾乎可以執行CP/M軟體。事實上WordStar的程式碼只改了一個位元組就移植到DOS了(真正的程式師可以告訴你是哪一個位元組,不過我早就忘了)。

這件事值得再說一次。把WordStar移植到DOS時,程式碼只改了一個位元組。好好想一下。

好啦。

想到沒?

DOS是因為一開始就有軟體用才會流行。而它能有軟體用是因為Tim Paterson想到要提供CP/M相容功能,因為在那個黑暗時代某人就有智慧去處理雞生蛋蛋生雞問題。

快轉一下。在整個PC平台的歷史裡,只發生過兩次足以影響到每一個PC用戶的重大典範轉移,我們都轉移到Windows 3.x,然後又換到Windows 95。只有極少數人轉移到其他地方。微軟陰謀要接收全世界嗎?很好,你大可那樣子想。不過我想到另一個更有意思,可以回歸到雞生蛋蛋生雞問題的原因。

我們都轉移到Windows 3.x。這句話裡的3是個重要的線索。我們大家為什麼不是都轉換到Windows 1.0或Windows 2.0?又或後來的Windows 286或Windows 386呢?因為微軟發行了五個版本才終於「做得好」嗎?錯。

真正的原因遠比這個更微妙,它跟Windows 3.0所需的Intel 80386晶片中一個很神秘的硬體功能有關。

    1. 功能一:舊的DOS程式在顯示畫面時是直接寫入文字字元在螢幕上對應的記憶體位置。要讓程式輸出快速而專業,這是唯一的辦法。不過Windows是以繪圖模式執行。使用舊的Intel晶片時,微軟的工程師在執行DOS程式時沒有其他選擇,只能切到全螢幕模式執行。不過用80386就可以設定虛擬記憶體區塊和中斷,讓在程式試圖寫入顯示記憶體時通知作業系統,然後Windows就可以立即在圖形視窗繪出相同的文字。
    2. 功能二:舊的DOS程式假設自己擁有整顆晶片,所以通常不能共存。不過Intel 80386有能力創造多個「虛擬」PC,而且每一個就和一顆完整的8086一樣,所以雖然還有其他程式一起執行,可是舊PC程式還是能假裝自己獨佔整台電腦。

所以用Intel 80386上運行的Windows 3.x是第一個能完整執行多個DOS程式的版本(就技術上Windows 386也可以,不過在Windows 3.0問世前80386數量少又貴)。Windows 3.0是第一個真正能執行你所有舊軟體的版本。

Windows 95?也沒問題。它有很好的32位元新API,不過還是能正常執行舊的16位元程式。微軟非常重視這件事,花了很多工夫Windows 95在上測試所有找得到的舊程式。Jon Ross是Windows 3.x版SimCity的作者,他告訴我他不小心在SimCity裡留了一隻蟲,會去讀取剛釋放掉的記憶體。是的,這在Windows 3.x是可以的,因為記憶體不會跑掉。接下來的事非常神奇:SimCity在Windows 95的beta版上測試有問題,微軟追查到這個問題然後在Windows 95裡加一段找尋SimCity的程式碼。如果發現SimCity正在執行,記憶體配置程式就會進入特別模式,這時並不會馬上釋放記憶體。就是這種向後相容的堅持讓大家願意升級到Windows 95。

要如何破解雞生蛋蛋生雞問題,你應該開始有些概念了吧。就是用一個向後相容模式,依你的需要提供一卡車的雞或蛋,然後坐下來大賺鈔票。

哈!現在回到帳單遞交的事情。還記得帳單遞交吧?這個雞生蛋蛋生雞問題是說,這個服務只能替你處理少部份的帳單,所以你不會去用。要怎麼解決呢?微軟沒有想出來,不過PayMyBills.com和其他幾家矽谷新創公司都同時找到答案。提供一個向後相容模式:如果商家不支持這個系統,就請他們把可惡的書面帳單寄到公司在加州的地址,再找一堆人來拆信封掃描進電腦,現在你所有的帳單都在他們的網站上了。由於世界上所有商家都可以用這個系統,客戶可以也很樂意採用。花旗會員銀行會先把電子型式的帳單送到印表機,印成紙帳單後塞進信封,用郵遞走1500英哩到加州再拆開,上面印著爛廣告的笨信封就丟到垃圾桶,而書面帳單則掃描進電腦,然後放到應該一開始就直接送達的網站上。雖然這種相容模式很誇張,不過最後終究會消失,因為PayMyBills.com畢竟不像微軟,它可以讓客戶真的來用這個系統,所以不久就可以去找愚蠢的花旗會員銀行談:「嘿,我這裡有93,400個你們的客戶。為什麼不直接和我們連線然後每個月省下93,400美元呢?」於是突然間PayMyBills.com就變得非常賺錢,而同時微軟還在努力要簽下第二個電子化公用事業(或許某家喬治亞州事業會是個好的備案。)

不能認清雞生蛋蛋生雞問題的公司可以視為想煮沸大海(boil the ocean)的公司:他們的商業計畫書需要有九千三百萬人配合他們瘋狂的想法後才能實現。我看過最無可救藥的笨點子叫ActiveNames。他們的豬頭點子是讓全世界所有人都在電郵軟體上裝個附加軟體,它會在該公司的中央伺服器用人名搜尋取得真實的電郵地址。這樣就不必告訴大家說你的電郵地址是kermit@sesame-street.com,只要說你的ActiveName是「spolsky」就可以了。另外別人想電郵給你時,也得安裝這套特別的軟體。嗶!答錯了!我根本懶得開始數落這個點子為什麼行不通。

結論:如果你身在一個有雞生蛋蛋生雞問題的市場,最好有個向後相容答案來解決這個問題,否則就得花很長很長的時間(比如無窮久)才能開始。

還是有很多公司認清面對,並且聰明地解決雞生蛋蛋生雞的問題。當Transmeta公開他們的新CPU時,長久以來第一次有Intel的公司終於承認一件事,就是如果想把CPU賣給很多很多人時,就必須能執行x86的程式。Hitachi、Motorola、IBM、MIPS、國家半導體還有其他數不清的公司都欺騙自己,認為自己有權利發明一組新指令集,而Transmeta架構則從一開始就認定,任何打算做一台不能執行Excel的電腦的商業計畫書都是不可行的。

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


Personal tools