80/20 法則的觀察

應該大部分的人都聽過 「80/20 法則」,雖然它的起始目的只是用來描述經濟學上的資源分配的情形,後來適用的範疇越來越廣,也有許多變形。在軟體開發工程這個領域中,也有許多人引用這個觀念,倡導工程師要專注那些影響全局的 20% 的程式碼,不要分散注意力。

基於自己的經驗,我想 80/20 是的確存在的。但是一直很好奇,那些該注意的 20% 在哪裡?

如果根據理論推導,以程式運行的範疇來看,那些 20% 應該是執行主要功能的部分,這一點倒是沒有太多懷疑。不過有一天無意間喵到我目前 check-in code 的頻率,修改最多的前二名居然不是主架構的部分,引起了好奇心。仔細追下去,從自己留下來的 bug fixing 紀錄上看,修最多的多半是邊界條件的處理部分。所以如果是以修 bug 的角度來看,那些 20% 反而是 boundary condition handling。現在反省起來,這些時間應該用在調整條件處裡的架構,以容納更多的變化。

我當然不會認為這是通則,這個情況只是反映了我手邊這個程式的特性。每個專案的 20% 應該還是 case by case。

我的心得: 拍腦袋直覺很好用,但是很多情況也會騙人,事情並不都是能用膝蓋想出來的。還是老老實實建個架構蒐集資料,從資料中找證據,做決定才會實在。

results matching ""

    No results matching ""