重點摘要#
- 程式設計是一種設計行為,而非建造行為——源始碼才是真正的設計文件
- 傳統工程和建造的概念套用在軟體開發上行不通,這個問題已被討論超過 30 年
- 軟體開發的本質是發現與學習的過程,應該採用管理創意工作的方法
- 接受程式設計是設計行為,有助於採用敏捷和精實生產等有效實踐
詳細內容#
Kristen Nygaard(物件導向程式設計之父、Simula 語言創造者)曾說:程式設計就是學習。接受程式設計是一個發現與學習的過程,而非工程和建造的過程,這對推動軟體實踐至關重要。
從其他產業學習#
軟體產業應該向精密量產產品的產業借鏡,例如汽車、醫藥或半導體。以汽車產業為例,製造一輛新車涉及兩個過程:
- 創意設計過程:包括建立所需的組裝線
- 製造過程:根據客戶規格生產客製化版本
軟體產業的挑戰在於我們經常混淆這兩個過程。
源始碼即設計文件#
Jack Reeves 在其文章「What is software design?」中指出:軟體工程中唯一滿足設計文件標準的產出物就是源始碼。軟體的「製造」則由編譯器、建置工具和測試腳本自動完成。
接受源始碼是設計行為而非建造行為,我們就能採用那些適合管理創意性和不可預測性工作的實踐方法,例如:
- 敏捷產品管理(如 SCRUM)
- 精實生產原則
- 這些實踐聚焦於最大化客戶價值的投資報酬率
軟體產業必須記住:程式設計是設計行為,而非建造行為。
— By Einar Landre