首頁>資訊>

在進行軟體開發和產品設計的時候,有一些經典又有重要參考價值的法則常常被忽視,而忽視這些法則又會讓開發者走一些彎路。

1. 康威定律(Conway's Law)

任何設計系統的組織,其設計的結構都是該組織溝通結構的複製品。

你可能會認為,透過不同層級的會議以及股東的更新和決策,這個狀況可以得到避免,但是實際是,衝突或分歧發生的優先順序,將導致同樣衝突和分歧的過程和結果,從而影響整個設計的結構。

2. 布魯克定律(Brooks's Law)

“給一個遲來的軟體專案增加人力會使它更遲。”

當你意識到你沒有取得預期的進展,並且管理層試圖重新分配人力資源時,那麼專案不僅會更加推遲,而且最後很可能會交付一個更加脆弱、更復雜的產品。

3. 扎溫斯基定律(Zawinski's Law)

“每個程式都試圖擴充套件,直到它包含了一個web伺服器。那些不能擴充套件的專案會被能夠擴充套件的專案所取代。”

4. 帕金森定律(Parkinson's Law)

工作完成的時間會影響工作的量"

在這裡,主要的專案管理經驗是,如果你不為概念性的里程碑設定大概的最後期限,那麼專案將永遠不會完成。這也說明了在固定的時間線上迭代最小可行產品的重要性。

當然,我們也可以根據資料、處理能力、RAM等等來調整這條法則:

在使用完所有可用的儲存空間/頻寬/週期/RAM之前,資料/CPU/記憶體的使用會一直擴充套件

實際上,32GB對任何人來說都足夠了,對吧?

5. 帕累託謬論(Pareto's Fallacy)

帕累託原則很容易被曲解,尤其是被管理層曲解。這通常會導致帕累託謬論:

“當你完成了80%時,你會認為你只剩下20%了。”

這裡忽略的關鍵部分是,這20%,其實需要你投入80%的時間。

6. 斯特金啟示(Sturgeon's Revelation)

所有部分的90%都是無用的。

是的,你的產品也包含在內。

7. 彼得原則(The Peter Principle)

在等級制度中,每個員工都傾向於升到他們不能勝任的級別。因此,隨著時間的推移,每個崗位都有可能被不稱職的員工佔據。”

8. Eagleson定律(Eagleson's Law)

任何你自己的程式碼,如果你有6個月或更長的時間沒有檢視,就好像是別人寫的一樣。

實際上,6個月已經相當樂觀了。

不過,有一點需要注意,那就是“Yo mom推論”:

只有原作者才可以批評程式碼;任何其他的負面反饋都會被駁回。

9. Greenspun程式設計的第10條規則(Greenspun's 10th Rule of Programming)

任何自定義開發的身份驗證系統都包含一個特別的、非正式指定的、充滿錯誤的、緩慢的Kerberos實現。

這可以概括為普遍的NIH規則:“任何定製開發的系統都包含一個臨時的、非正式指定的、有bug的、緩慢的執行,而這些執行的物件有一半都是你拒絕使用的工業界標準。”

10. 冰山謬論(The Iceberg Fallacy)

新軟體產品的開發成本僅佔所有權管理的總成本和預算的25%。

對於運維來說,有一句格言是這麼說的:

“如果軟體維護佔總擁有成本的75%,那麼運營支援就是剩下的75%。”

參考資料:

https://www.netmeister.org/blog/software-engineering-laws.html

5
最新評論
  • 3本作者大大最好的一本小說,劇情讓人拍手叫好,連看三遍也不膩
  • 看碟下菜!輝瑞疫苗效力再次受質疑,部分群體接種後效力只有一半