重點摘要#

  • 設計是美好的,但規格本身沒有價值 — 軟體專案的最終目標是產出可運作的系統
  • 設計只是達成目的的手段,而非目的本身
  • 當團隊成員在實作中遇到困難,很可能是設計有問題,而非他們的能力不足
  • 架構師若同時也寫程式碼,將大幅提升對巨觀與微觀層面的理解

詳細內容#

設計是軟體開發中不可或缺的環節。系統性地呈現問題空間與解決方案,能以令人驚訝的方式揭露錯誤與改進機會。規格之所以重要,是因為它們為建構提供了藍圖。花時間思考架構 — 無論是元件之間的巨觀互動,或是元件內部的微觀行為 — 都是必要的。

太容易沉迷於抽象設計的過程中。事實上,規格本身沒有任何價值。軟體專案的終極目標是一個可運作的生產系統。

架構師必須始終牢記這個目標,記住設計只是手段而非目的。就像建築師如果無視物理法則,只為讓建築更美觀,很快就會後悔一樣。失去對可運作程式碼目標的關注,對任何專案都是嚴重的問題。

重視實作團隊的回饋#

當團隊成員在實作願景時遇到問題,架構師應該傾聽他們的聲音。他們提出的問題很可能意味著設計是錯誤的,或至少是不夠清楚的。架構師的職責是與團隊合作,修改設計以符合現實世界的限制。

沒有設計是從一開始就完美的。所有設計都需要在實作過程中被修改。

親自動手寫程式碼#

如果你同時也是專案的開發者,珍惜你花在寫程式碼的時間。不要相信任何人告訴你這是對架構師工作的分心。你在第一線實作的經驗,將大幅提升你對巨觀與微觀層面的視野。

— By Allison Randal