重點摘要#

  • 程式設計是一種設計行為,而非建造行為——源始碼才是真正的設計文件
  • 傳統工程和建造的概念套用在軟體開發上行不通,這個問題已被討論超過 30 年
  • 軟體開發的本質是發現與學習的過程,應該採用管理創意工作的方法
  • 接受程式設計是設計行為,有助於採用敏捷和精實生產等有效實踐

詳細內容#

Kristen Nygaard(物件導向程式設計之父、Simula 語言創造者)曾說:程式設計就是學習。接受程式設計是一個發現與學習的過程,而非工程和建造的過程,這對推動軟體實踐至關重要。

從其他產業學習#

軟體產業應該向精密量產產品的產業借鏡,例如汽車、醫藥或半導體。以汽車產業為例,製造一輛新車涉及兩個過程:

  • 創意設計過程:包括建立所需的組裝線
  • 製造過程:根據客戶規格生產客製化版本

軟體產業的挑戰在於我們經常混淆這兩個過程。

源始碼即設計文件#

Jack Reeves 在其文章「What is software design?」中指出:軟體工程中唯一滿足設計文件標準的產出物就是源始碼。軟體的「製造」則由編譯器、建置工具和測試腳本自動完成。

接受源始碼是設計行為而非建造行為,我們就能採用那些適合管理創意性和不可預測性工作的實踐方法,例如:

  • 敏捷產品管理(如 SCRUM)
  • 精實生產原則
  • 這些實踐聚焦於最大化客戶價值的投資報酬率

軟體產業必須記住:程式設計是設計行為,而非建造行為。

— By Einar Landre