重點摘要#

  • 不要對簡單的問題套用複雜的解決方案 – 簡單問題配複雜方案是常見的陷阱
  • 聰明的人容易因為想展示知識而過度設計,需要時刻保持自覺
  • 在架構層級的過度工程,其負面影響會被放大到開發層級
  • 猜測未來需求時,50% 的時候你是錯的,49% 的時候你大錯特錯

詳細內容#

簡單問題的複雜方案陷阱#

軟體架構師解決很多困難的問題,但也會遇到相對簡單的問題。最不應該做的事就是對簡單問題套用複雜的解決方案。設計軟體的人非常聰明,而「簡單問題配複雜方案」這個陷阱很容易掉入,因為我們喜歡展示自己的知識。

如果你發現自己正在設計一個過於巧妙的解決方案,停下來想一想:解決方案是否符合問題的規模?如果答案是否定的,重新考慮你的設計選項。

過度工程的代價#

這不是說不應該實作優雅的解決方案,而是說如果任務只需要支援一種 SKU 型號的銷售系統,就不應該設計一個支援動態可配置產品層級結構的系統。

複雜方案帶來的成本往往比你想像的更大:

  • 在架構層級的過度工程會造成與開發層級相同的問題,但負面效果會被倍增放大
  • 設計層級的糟糕決定更難實作、更難維護,且最難逆轉
  • 在簡單問題上花過多時間,會讓你在複雜問題出現時缺乏時間
  • 你的架構決定可能無意間製造了範圍蔓延和不必要的風險

解決今天的問題#

記住這個原則:當你嘗試猜測未來需求時,50% 的時候你是錯的,49% 的時候你大錯特錯。解決今天的問題,按時交付應用程式,等待回饋來產生真正的需求。

簡單的設計反而更容易在新需求到來時整合它們。如果你猜對了未來需求,你已經有了解決方案的想法;但差別在於你現在可以在估算中合理分配時間,因為需求已經被確認。這樣你就會擁有一個能做出好估算、按時交付的團隊聲譽。

— By Chad LaVigne