重點摘要#

  • 如果你只能想到一個解決方案,你就有麻煩了
  • 軟體架構是在給定約束條件下找到最佳可能方案,而非第一個方案
  • 只有一個方案意味著沒有協商空間,無法應對需求變化
  • 當你自動「知道」答案而沒有做任何比較時,停下來求助

詳細內容#

一個方案等於沒有方案#

軟體架構是在任意數量的約束條件下為問題找到最佳可能方案。第一個想到的方案很少能滿足所有需求和約束條件。通常需要在最佳滿足最關鍵優先事項的方案之間做出權衡取捨

如果你只有一個方案,意味著:

  • 沒有協商這些權衡的空間
  • 這個唯一方案很可能無法讓利害關係人滿意
  • 當業務環境改變導致優先事項轉移時,系統可能無法適應新需求

問題的根源#

這種情況很少是因為真的缺乏選項,更可能是因為架構師在這個特定問題領域經驗不足。如果你知道自己有這個問題,請主動尋求更有經驗的人的幫助。

一個更隱蔽的問題是習慣性設計。架構師可能只熟悉一種架構風格(例如三層式、分層客戶端-伺服器系統),但不知道如何辨識這種風格不適用的情況。如果你發現自己不假思索地自動「知道」答案,而沒有做任何比較,停下來問問自己是否能想到其他方法。

一個真實的故事#

作者的一位朋友負責一個小型但成長中的網路新創公司。隨著用戶增加,系統效能開始下降。老闆問:「我們能做什麼來改善效能?」朋友回答:「買一台更大的機器!」「還能做什麼?」「呃 ⋯ 就我所知,就這樣了。」結果朋友被當場開除了。

當老闆說得對。作為架構師,你必須能夠提供多個選項,並解釋每個選項的權衡。如果你做不到,請尋求第二意見。

— By Timothy High