1. 務實優於抽象#

Joel 鼓勵開發者專注於實際可用的解決方案,而非迷失在過度抽象的理論中。軟體業中存在一群人,他們熱衷於將所有事物抽象化到極致——Joel 稱他們為「架構太空人」(Architecture Astronauts)。

2. 架構太空人的特徵#

架構太空人有幾個明顯的共同特質:

  • 他們嘗試建立通用的萬能抽象,試圖用一個架構解決所有問題
  • 他們談論的概念越來越抽象、越來越模糊,最終失去實際意義
  • 他們很難產出可運作的程式碼——因為他們忙於設計「完美的架構」
  • 他們通常出現在大型企業中,因為只有大公司能容忍長期不產出的團隊

當有人向你推銷一個「能解決一切問題」的架構時,請提高警覺。真正好的解決方案通常是針對特定問題的具體方案。

3. 抽象的陷阱#

架構太空人常犯的錯誤是過度強調架構元素,而忽略了實際應用。例如:

  • 他們會花大量時間討論「peer-to-peer」的架構優勢,卻無法說清楚這個架構要用來做什麼具體的事
  • 概念被包裝得越來越華麗,但距離使用者可以觸摸到的功能越來越遠
  • 每一層抽象都增加了複雜度,卻不一定增加了價值

4. 技術炒作的實例#

許多被大肆宣傳的技術平台與標準,實際上可能並沒有解決開發者的真正問題:

  • Java 被宣傳為「一次編寫,隨處執行」,但實務上的跨平台體驗並不如預期
  • .NET 被描繪為革命性的開發平台,但對多數開發者而言,改變的是工具而非解決的問題
  • XML 被吹捧為資料交換的終極方案,但 XML 本身只是一種格式,不會自動解決互通性問題

這些技術本身可能是好的,但問題在於誇大的宣傳讓人分不清哪些是真正的進步,哪些只是行銷包裝。

如何辨識過度炒作
  • 宣傳中充滿了「革命性」「顛覆性」「全新範式」等詞彙
  • 無法用一句話說清楚它解決了什麼具體問題
  • 示範總是用極簡化的例子,迴避真實世界的複雜性
  • 批評者被指為「不理解」或「跟不上時代」

5. 務實開發者的態度#

面對架構太空人的華麗辭藻,務實的開發者應該:

  • 專注於解決使用者的實際問題
  • 評估技術時問:「這能幫我的使用者做到什麼之前做不到的事?」
  • 避免被抽象概念牽著走,堅持看到可運作的成果
  • 記住:使用者不在乎你的架構有多優雅,他們在乎的是軟體能不能幫他們完成工作

真正有價值的創新通常可以用簡單的語言描述它解決了什麼問題。如果一個概念需要十頁投影片才能解釋,它可能不是在解決真正的問題。