軟件工程必看——10條你最容易忽視的經(jīng)典法則
本文列出了10條經(jīng)常被忽視的軟件工程法則,包括康威定律、布魯克斯定律、扎溫斯基定律、帕金森定律、帕累托法則、斯特金的啟示、彼得原理、Eagleson 定律、Greenspun 的第十條編程規(guī)則以及冰山謬論。
在進(jìn)行軟件開(kāi)發(fā)和產(chǎn)品設(shè)計(jì)的時(shí)候,有一些經(jīng)典又有重要參考價(jià)值的法則常常被忽視,而忽視這些法則又會(huì)讓開(kāi)發(fā)者走一些彎路。
因此,小編在這里放上10條最容易被忽視的10條軟件工程法則,大家可以作為參考:
1. 康威定律(Conway's Law)
任何設(shè)計(jì)系統(tǒng)的組織,其設(shè)計(jì)的結(jié)構(gòu)都是該組織溝通結(jié)構(gòu)的復(fù)制品。

你可能會(huì)認(rèn)為,通過(guò)不同層級(jí)的會(huì)議以及股東的更新和決策,這個(gè)狀況可以得到避免,但是實(shí)際是,沖突或分歧發(fā)生的優(yōu)先級(jí),將導(dǎo)致同樣沖突和分歧的過(guò)程和結(jié)果,從而影響整個(gè)設(shè)計(jì)的結(jié)構(gòu)。
2. 布魯克定律(Brooks's Law)
“給一個(gè)遲來(lái)的軟件項(xiàng)目增加人力會(huì)使它更遲。”

當(dāng)你意識(shí)到你沒(méi)有取得預(yù)期的進(jìn)展,并且管理層試圖重新分配人力資源時(shí),那么項(xiàng)目不僅會(huì)更加推遲,而且最后很可能會(huì)交付一個(gè)更加脆弱、更復(fù)雜的產(chǎn)品。
3. 扎溫斯基定律(Zawinski's Law)
“每個(gè)程序都試圖擴(kuò)展,直到它包含了一個(gè)web服務(wù)器。那些不能擴(kuò)展的項(xiàng)目會(huì)被能夠擴(kuò)展的項(xiàng)目所取代。”

4. 帕金森定律(Parkinson's Law)
工作完成的時(shí)間會(huì)影響工作的量"

在這里,主要的項(xiàng)目管理經(jīng)驗(yàn)是,如果你不為概念性的里程碑設(shè)定大概的最后期限,那么項(xiàng)目將永遠(yuǎn)不會(huì)完成。這也說(shuō)明了在固定的時(shí)間線上迭代最小可行產(chǎn)品的重要性。
當(dāng)然,我們也可以根據(jù)數(shù)據(jù)、處理能力、RAM等等來(lái)調(diào)整這條法則:
在使用完所有可用的存儲(chǔ)空間/帶寬/周期/RAM之前,數(shù)據(jù)/CPU/內(nèi)存的使用會(huì)一直擴(kuò)展
實(shí)際上,32GB對(duì)任何人來(lái)說(shuō)都足夠了,對(duì)吧?
5. 帕累托謬論(Pareto's Fallacy)
帕累托原則很容易被曲解,尤其是被管理層曲解。這通常會(huì)導(dǎo)致帕累托謬論:
“當(dāng)你完成了80%時(shí),你會(huì)認(rèn)為你只剩下20%了。”
這里忽略的關(guān)鍵部分是,這20%,其實(shí)需要你投入80%的時(shí)間。

6. 斯特金啟示(Sturgeon's Revelation)
所有部分的90%都是無(wú)用的。

是的,你的產(chǎn)品也包含在內(nèi)。
7. 彼得原則(The Peter Principle)
在等級(jí)制度中,每個(gè)員工都傾向于升到他們不能勝任的級(jí)別。因此,隨著時(shí)間的推移,每個(gè)崗位都有可能被不稱職的員工占據(jù)。”

8. Eagleson定律(Eagleson's Law)
任何你自己的代碼,如果你有6個(gè)月或更長(zhǎng)的時(shí)間沒(méi)有查看,就好像是別人寫(xiě)的一樣。

實(shí)際上,6個(gè)月已經(jīng)相當(dāng)樂(lè)觀了。
不過(guò),有一點(diǎn)需要注意,那就是“Yo mom推論”:
只有原作者才可以批評(píng)代碼;任何其他的負(fù)面反饋都會(huì)被駁回。
9. Greenspun編程的第10條規(guī)則(Greenspun's 10th Rule of Programming)
任何自定義開(kāi)發(fā)的身份驗(yàn)證系統(tǒng)都包含一個(gè)特別的、非正式指定的、充滿錯(cuò)誤的、緩慢的Kerberos實(shí)現(xiàn)。
這可以概括為普遍的NIH規(guī)則:“任何定制開(kāi)發(fā)的系統(tǒng)都包含一個(gè)臨時(shí)的、非正式指定的、有bug的、緩慢的執(zhí)行,而這些執(zhí)行的對(duì)象有一半都是你拒絕使用的工業(yè)界標(biāo)準(zhǔn)。”
10. 冰山謬論(The Iceberg Fallacy)
新軟件產(chǎn)品的開(kāi)發(fā)成本僅占所有權(quán)管理的總成本和預(yù)算的25%。
對(duì)于運(yùn)維來(lái)說(shuō),有一句格言是這么說(shuō)的:
“如果軟件維護(hù)占總擁有成本的75%,那么運(yùn)營(yíng)支持就是剩下的75%。