文章

目前顯示的是 十一月, 2019的文章

軟體開發中的「無緒」

圖片
無緒 (Cluelessness)

由 Martin Rinard 提出。他在演講時指出:
在開發和維護軟體系統時,應該避免讓開發人員深入了解系統。 因為人的大腦可以處理的資訊有限。若要建立一個日益變大的應用程式,就必須學習「如何讓每個開發人員在不了解整個應用程式的情況下,也能完成軟體開發」。

 “無緒” 並不是一個貶義詞。它用來區別兩種層次的理解水平。

1. 淺層理解:指對事物的了解程度僅限於掌握使用方法即可。
2. 深層理解:指對掌握了事物背後的原則、規律、原理。
在日常生活中的“無緒” 生活中我們通常只需要用到 淺層理解。例如,刷牙不需要知道化學式。不需要理解冰箱原理就可以冷凍食品。當然,也有一些人需要了解更深入的內容。像是冰箱的維修人員就要了解較深入的領域知識。但即便如此,維修人員所需要的知識仍屬於 淺層理解,因為他們也不需要了解事物背後的每個小細節和原理。

當然也可以學習每件事物背後的知識原理,但是必要性與 CP 值通常不大。因此大多數人在日常生活中只需要 淺層理解 就足夠了。
軟體開發中的“無緒” 在軟體開發中,“無緒” 也表示大部分的時間中,開發人員只需要 淺層理解 就足以應付工作。這裡的 淺層理解 並不是指開發人員不需要懂得編寫程式。以下舉個例子來說明軟體開發中的 淺層理解 與 深層理解 之間的差異。
「電子商務網站」: 某天 PM 告知下一個專案是「電子商務網站」。那麼,實作這個網站有兩種做法:
實作方法一:在專案初始階段,我需要打開 HTTP 協定的文件,解析 HTTP 傳輸格式、 研究如何實現 POST、GET 請求....等等。  此外還要閱讀 RFC 文件,並實現文件中的各項內容。  全部都搞定後才能開始打造「電子商務網站」。 實作方法二:在專案初始階段,在作業系統中下載並安裝 Apache、PHP、MySQL,  設定妥當後即開始打造「電子商務網站」。 相信 實作方法二 才是大家熟悉開發的方式,因為現代軟體都是基於組件組裝出來的,沒有人需要獨自從頭到尾完成所有內容。在一個作業系統上安裝 Web 服務並開始編寫 HTML,對現在的開發人員來說是易如反掌。但事實上光是 Web 服務就已經複雜到極點,應該沒人敢說自己了解 Web 服務的所有內容。這一現象正是 淺層理解 的體現,讓開發人員在大部分的時間中,只需要掌握系統、框架、程式庫的…