和其他領(lǐng)域一樣,軟件開發(fā)領(lǐng)域也有一些非常經(jīng)典的規(guī)律。這些法律包括一些法律或軟件開發(fā)之神的名言。

1.康威定律
這就是所謂的“根據(jù)組織結(jié)構(gòu)交付軟件”:
“在設(shè)計(jì)系統(tǒng)時(shí),任何組織的結(jié)構(gòu)都與組織的通信結(jié)構(gòu)一致”。
您可能會(huì)認(rèn)為,這項(xiàng)法律可以通過某些方式避免,例如跨功能團(tuán)隊(duì)的站會(huì)、進(jìn)度更新和決策矩陣,但最終不可避免地會(huì)出現(xiàn)沖突和分歧,這將導(dǎo)致沖突和分歧的過程和結(jié)果。
2.布魯克定律
這個(gè)定律來自人月神話:
“在已經(jīng)延期的項(xiàng)目中增加人力只會(huì)使項(xiàng)目延期更長(zhǎng)”。
當(dāng)你意識(shí)到這個(gè)項(xiàng)目沒有取得預(yù)期的進(jìn)展,并試圖從其他地方獲得更多的資源時(shí),它不僅會(huì)推遲項(xiàng)目,而且更有可能交付一個(gè)更脆弱、更復(fù)雜的產(chǎn)品。
3.Zawinski定律
“每個(gè)程序都會(huì)膨脹到需要添加Web服務(wù)器,非膨脹程序最終將被膨脹程序取代”。
對(duì)Web就是服務(wù)“擴(kuò)展到需要用戶帳戶登錄并收集所有用戶的數(shù)據(jù)”。對(duì)物理就是服務(wù)“膨脹需要增加一個(gè)不安全的WiFi訪問點(diǎn),設(shè)置默認(rèn)密碼,您無法修改,以及一個(gè)默認(rèn)密碼Web服務(wù)器”。
4.帕金森定律
“一項(xiàng)工作將占用完成它的所有時(shí)間”。
如果你不為一個(gè)項(xiàng)目的里程碑階段設(shè)定最后期限,這個(gè)項(xiàng)目將永遠(yuǎn)不會(huì)完成。這就是為什么我們必須給一個(gè)MVP(最小可行產(chǎn)品)設(shè)定固定截止日期。
當(dāng)然,這個(gè)定律也可以用于數(shù)據(jù)、計(jì)算能力、內(nèi)存等方面:
“程序最終會(huì)把所有可用的存儲(chǔ)空間,CPU時(shí)間和內(nèi)存用光”。
5.帕累托謬論
帕累托原則很容易被曲解,尤其是被管理層曲解,這通常會(huì)導(dǎo)致帕累托謬論的出現(xiàn):
“當(dāng)你完成80%的工作時(shí),你會(huì)認(rèn)為只剩下20%的工作要做”。
但是你可能會(huì)低估剩下的20%的工作,因?yàn)樗赡軙?huì)占用你80%的時(shí)間。
6.史特金定律
“90%的東西都是垃圾”。
是的,包括你的產(chǎn)品。
7.皮特定律
“在等級(jí)制度中,每個(gè)員工都傾向于晉升到不稱職的職位。因此,隨著時(shí)間的推移,每個(gè)職位都可能被無能的員工占據(jù)”。
8.伊格爾森定律
“您已經(jīng)6個(gè)多月沒有看到的任何代碼可能已經(jīng)被其他人更改”。
這里說的六個(gè)月已經(jīng)是一個(gè)非常樂觀的數(shù)字了。
但是,有一點(diǎn)需要注意,那就是“YoMomma推論”:只有作者才能批評(píng)代碼,任何其他負(fù)面反饋都會(huì)被拒絕。
9.格林斯潘第十定律
在認(rèn)證方面使用:
任何定制的認(rèn)證系統(tǒng)都包含一個(gè)臨時(shí)的、非正式的、隱藏的缺陷、緩慢的操作Kerberos不完全實(shí)現(xiàn)。
這可以概括為一般性NIH規(guī)則:“任何定制開發(fā)的系統(tǒng)都包含不完全實(shí)現(xiàn)一個(gè)臨時(shí)、非正式、隱藏缺陷和緩慢運(yùn)行的行業(yè)標(biāo)準(zhǔn)(因?yàn)槟芙^直接使用該標(biāo)準(zhǔn))”。
10.冰山謬論
“一個(gè)新軟件的開發(fā)成本只占管理層總成本的25%左右”。
一句運(yùn)維的格言:
假如說軟件維護(hù)成本占總預(yù)算的75%,那么這75%應(yīng)該是運(yùn)維支持。
11.LGTM困境
“如果要快速提交10行代碼更改,可以將其隱藏在1500行中PR中”。