歷史不斷重演#

Joel 以 IBM Lotus Symphony 的發布為引子,指出軟體產業的策略困局正以三種不同的方式重演,而最聰明的應對策略就是押寶在同樣的結局上。

三個歷史階段#

階段一:低速 CPU 和小容量記憶體#

  • 早期程式設計師極其關注軟體效率,因為記憶體不夠、CPU 主頻不夠高
  • 到了 1990 年代,隨著 Moore’s Law 生效,微軟和蘋果等公司意識到:只要把酷的功能做出來,硬體升級會解決效能問題
  • 唯一例外:瀏覽器中的 Ajax/JavaScript 應用程式,因為這是當前幾乎所有軟體開發的方向,瓶頸已從記憶體和 CPU 轉移到頻寬和編譯時間

歷史正在重演——有人投入大量精力優化 JavaScript 效能,但長遠來看,硬體進步會讓這些努力變成白忙一場。不關心效能、專注於加入高級功能的程式設計師最終將擁有更好的產品。

階段二:跨平台的程式語言#

  • C 語言的設計目標是讓跨平台應用程式更容易編寫,後來 Java 更進一步
  • 當前跨平台的高潮是客戶端 JavaScript 的瀏覽器相容性問題(DOM 差異)
  • 沙箱(sandbox)方案(如 Java applet、p-code 虛擬機)只能得到底層系統 1/10 的效能

獲勝的策略正是貝爾實驗室在 1978 年的決定:開發一種可將程式編譯成不同平台「本地碼」的高效語言(即 C 語言)。未來的贏家將是能把 JavaScript 編譯成本地碼、統一獲取 DOM 模型、融合 IE 和 Firefox 核心代碼的方案。

階段三:完善的互動性和使用者介面標準#

Joel 將使用者介面歷史分為三個階段:

  1. 大型主機時代(IBM 3270 終端):表單式介面,相當於 HTML 階段
  2. PC 時代:程式設計師可隨意操控螢幕任意角落的文字,但缺乏統一的 UI 標準
  3. GUI 時代(Mac/Windows):統一的視窗、剪貼簿標準,應用程式間可以協同工作

當前的 Ajax 開發正處於第二階段——沒有統一的 UI 標準,應用程式之間無法剪切和粘貼。歷史預示著 Ajax 程式的使用者介面終將出現某種程度的統一,其誕生方式將如同 Windows 的誕生。

策略預測#

  • 總會有人寫出一個具備倒性優勢的 SDK,其他人用它來開發功能強大的 Ajax 應用程式
  • 使用共同 SDK 的程式將共享統一的 UI 標準,具備壟斷性的競爭優勢
  • Joel 以一個虛構的 NewSDK 故事,類比了 Lotus 1-2-3 如何被 Windows/Excel 取代的歷史

在互聯網上,同樣的市場顛覆將再次發生——所有影響市場的因素和背後的動力與當年完全一樣。唯一不知道的是:它會在何時、何地、何人身上發生。