程序員最容易忽略的10大軟件開發定律

作者 | Jan Schaumann

與其他領域一樣,軟件開發領域也有一些非常經典的定律。這些定律包括了一些法則或軟件開發大神的名言。

1康威定律

也就是所謂的“按照組織架構來交付軟件”:

“任何一個組織在設計一個系統時,這個系統的結構與這個組織的溝通結構是一致的”。

你或許認爲可以通過一些方式來避免這個定律,比如跨功能團隊的站會、進度更新和決策矩陣,但最終都不可避免地會發生衝突和分歧,而這些將導致衝突和分歧的過程和結果。

2布魯克定律

這個定律來自《人月神話》:

“在一個已經延期的項目中增加人手只會讓項目延期更長”。

當你意識到項目沒有取得預期的進展,並嘗試從其他地方調取更多的資源,不僅會讓項目延期,而且更有可能交付一個更脆弱、更復雜的產品。

3Zawinski 定律

“每一個程序都會膨脹到需要加入 Web 服務器,不膨脹的程序最終會被膨脹的程序所代替”。

對 Web 服務來說,就是“膨脹到需要用戶賬號登錄並收集所有用戶的數據”。對物理服務來說,就是“膨脹到需要加入一個不安全的 WiFi 訪問點,設置了你無法修改的默認密碼,以及一個 Web 服務器”。

搜索後端架構師公衆號回覆“架構整潔”,送你一份驚喜禮包。

4帕金森定律

“一項工作會佔用掉所有用來完成它的時間”。

如果你不給一個項目的里程碑階段設置截止日期,這個項目就永遠完成不了。這就是爲什麼一定要給一個 MVP(最小可行產品)定一個固定的截止日期。

當然,這個定律也可以用在數據、算力、內存等方面:

“程序最終會把所有可用的存儲空間、CPU 時間和內存用光”。

5帕累託謬論

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

“當你完成了 80% 的工作,你會認爲真的只剩下 20% 的工作要做”。

但你可能低估了剩下的 20% 工作,因爲它可能佔用你 80% 的時間。

6史特金定律

“90% 的東西都是垃圾”。

是的,包括你的產品在內。

7皮特定律

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

8伊格爾森定律

“你寫的任何超過 6 個月沒有看過的代碼,有可能已經被別人改過了”。

這裏說的 6 個月已經是一個很樂觀的數字了。

不過,有一點需要注意,那就是“Yo Momma 推論”:只有作者纔可以給代碼提出批評,任何其他的負面反饋都將被駁回。

9格林斯潘第十定律

用在認證方面:

任何一個定製開發的認證系統都包含一個臨時的、非正式的、隱藏缺陷的、運行緩慢的 Kerberos 不完整實現。

這可以概括成一般性的 NIH 規則:“任何一個定製開發的系統都包含一個臨時的、非正式、隱藏缺陷的、運行緩慢的行業標準的不完整實現(因爲你拒絕直接使用標準實現)”。

10冰山謬論

“一款新軟件的開發成本只佔管理層預算的總成本的 25% 左右”。

運維界的一句格言:

如果說軟件維護的成本佔了總預算的 75%,那麼這 75% 都應該是運維支持。

11LGTM 困境

“如果你想快速提交 10 行代碼變更,可以把它隱藏在一個 1500 行的 PR 中”。

原文鏈接:

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

本文分享自微信公衆號 - 架構真經(gentoo666)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章