Ryan Brush
一個思想實驗#
想像明天醒來,發現建築業有了世紀性的突破:數以百萬計便宜、快速的機器人可以憑空製造材料、近乎零能源消耗、能自我修復。只要給它們一份明確的藍圖,機器人就能在不需要人類介入的情況下建造任何東西,而且成本幾乎為零。
如果建造成本為零會怎樣#
建築業會發生什麼?建築師和設計師的行為會如何改變?
- 今天我們在投入建造之前會建立實體和電腦模型並嚴格測試。如果建造基本上免費,我們還會這麼做嗎?
- 如果一個設計倒塌了,沒什麼大不了——讓機器人再蓋一個就好
- 模型變得過時,未完成的設計透過反覆建造和改進來演進
- 外行觀察者可能難以區分一個未完成的設計和一個完成的產品
時程預測變得困難#
我們預測時程的能力會消失。建造成本(construction costs)比設計成本更容易計算——我們知道安裝一根樑的大概成本。當可預測的工作趨近於零,較不可預測的設計時間開始主導。結果產出得更快,但可靠的時程卻消失了。
品質的下降#
在競爭經濟的壓力下,能快速完成設計的公司獲得市場優勢。不可避免地,不深入了解設計的人會看到提前發布未驗證版本的市場優勢,說出「這看起來夠好了」。
有些生死攸關的專案會更謹慎,但在許多情況下,消費者會學著忍受不完整的設計。公司可以隨時派出機器人去「修補」壞掉的建築和車輛。這一切指向一個違反直覺的結論:我們唯一的前提是大幅降低建造成本,結果品質反而下降了。
這就是軟體的現況#
這個故事在軟體中已經上演。如果我們接受程式碼就是設計——一個創造性的過程而非機械性的過程——那麼軟體危機(software crisis)就可以被理解了。我們面對的是一個設計危機(design crisis):對高品質、經過驗證的設計的需求超過了我們創造它們的能力。使用不完整設計的壓力很大。
如何改善#
這個模型也提供了改善的線索。實體模擬對應到自動化測試——軟體設計在通過嚴格的測試電池之前不算完成。要讓測試更有效,我們需要在大型系統的龐大狀態空間中找到約束的方法。改進的語言和設計實踐給了我們希望。
最終,有一個無法逃避的事實:偉大的設計來自於將自己奉獻給技藝精進的偉大設計師。程式碼也不例外。