重點摘要#
- 如果你只能想到一個解決方案,你就有麻煩了
- 軟體架構是在給定約束條件下找到最佳可能方案,而非第一個方案
- 只有一個方案意味著沒有協商空間,無法應對需求變化
- 當你自動「知道」答案而沒有做任何比較時,停下來求助
詳細內容#
一個方案等於沒有方案#
軟體架構是在任意數量的約束條件下為問題找到最佳可能方案。第一個想到的方案很少能滿足所有需求和約束條件。通常需要在最佳滿足最關鍵優先事項的方案之間做出權衡取捨。
如果你只有一個方案,意味著:
- 沒有協商這些權衡的空間
- 這個唯一方案很可能無法讓利害關係人滿意
- 當業務環境改變導致優先事項轉移時,系統可能無法適應新需求
問題的根源#
這種情況很少是因為真的缺乏選項,更可能是因為架構師在這個特定問題領域經驗不足。如果你知道自己有這個問題,請主動尋求更有經驗的人的幫助。
一個更隱蔽的問題是習慣性設計。架構師可能只熟悉一種架構風格(例如三層式、分層客戶端-伺服器系統),但不知道如何辨識這種風格不適用的情況。如果你發現自己不假思索地自動「知道」答案,而沒有做任何比較,停下來問問自己是否能想到其他方法。
一個真實的故事#
作者的一位朋友負責一個小型但成長中的網路新創公司。隨著用戶增加,系統效能開始下降。老闆問:「我們能做什麼來改善效能?」朋友回答:「買一台更大的機器!」「還能做什麼?」「呃 ⋯ 就我所知,就這樣了。」結果朋友被當場開除了。
當老闆說得對。作為架構師,你必須能夠提供多個選項,並解釋每個選項的權衡。如果你做不到,請尋求第二意見。
— By Timothy High