软件开发不是众人拾柴——《人月神话》读书笔记
這里的“人月”指人數(shù)×月數(shù),即勞動(dòng)力×時(shí)間;這里的“神話”指一種理想的想法,即認(rèn)為工作量=勞動(dòng)力×時(shí)間,當(dāng)時(shí)間有限而不能改變時(shí),我們可以通過增加勞動(dòng)力(人數(shù))來達(dá)到預(yù)期的工作量。然而,作者通過許多事實(shí)告訴我們,這是無法實(shí)現(xiàn)的,這個(gè)神話終將破滅。究其根本,人不是機(jī)器,不具有線性疊加的機(jī)制,尤其是面對(duì)軟件開發(fā)這樣需要分解成多個(gè)部分而且處理不同部分的人之間很可能需要充分交流的復(fù)雜工作時(shí),人數(shù)這個(gè)變量的內(nèi)在復(fù)雜度會(huì)指數(shù)上升。
舉個(gè)簡(jiǎn)單的例子,一個(gè)稍微復(fù)雜些的工作開始只有兩個(gè)人在進(jìn)行,當(dāng)另外兩個(gè)人在中途加入時(shí),他們可能對(duì)已開展的工作內(nèi)容、整個(gè)工作的目標(biāo)以及需要的技術(shù)都不甚了解,因此就要花費(fèi)時(shí)間對(duì)他們進(jìn)行相應(yīng)的培訓(xùn),之前的兩位工作者也可能需要抽出時(shí)間對(duì)兩位新人進(jìn)行必要的交待,然后工作才能繼續(xù)進(jìn)行。不僅如此,在后續(xù)工作的進(jìn)程中,如果四個(gè)人兩兩間都有必要進(jìn)行充分交流的話,那么在這一塊上花費(fèi)的時(shí)間又將是之前兩個(gè)人工作時(shí)的六倍??偠灾?#xff0c;對(duì)于軟件開發(fā)這樣的系統(tǒng)性工作,一味增加人數(shù)并不能解決問題縮短工期,反而會(huì)加大內(nèi)耗,產(chǎn)生高成本、低質(zhì)量、無法滿足用戶需求的產(chǎn)品。
當(dāng)然,我們小組的人數(shù)已基本確定,也將不再會(huì)變更了,但這件事情對(duì)我們來說仍具有啟發(fā)意義——我們可以采取怎樣的手段來減少這種內(nèi)耗并提高開發(fā)效率呢?一個(gè)行之有效的方法是讓團(tuán)隊(duì)中少數(shù)幾個(gè)有才能和想法的人來編寫產(chǎn)品手冊(cè)(或者說是制定出產(chǎn)品的市場(chǎng)定位及功能),他們被稱之為結(jié)構(gòu)師,其余的人則是負(fù)責(zé)將這些功能實(shí)現(xiàn),當(dāng)然在此之前需要對(duì)整個(gè)產(chǎn)品體系進(jìn)行合理的劃分,使得各部分間盡量獨(dú)立,從而減少不同部分實(shí)現(xiàn)人員間的糾纏。不過,更加現(xiàn)實(shí)情況是大家都反對(duì)專制,想提出自己的一些想法,而過多的想法勢(shì)必導(dǎo)致產(chǎn)品結(jié)構(gòu)的松散,開發(fā)過程的混亂以及效率的低下。因此,我們應(yīng)該提倡小而精的結(jié)構(gòu)師團(tuán)隊(duì),而大多數(shù)人只關(guān)注怎樣去實(shí)現(xiàn)即可。
?
關(guān)于調(diào)試和尋找bug,本書也提供了一些好的建議,其中不少已成為共識(shí)。調(diào)試是系統(tǒng)編程中很慢和較困難的部分,而漫長(zhǎng)的調(diào)試周轉(zhuǎn)時(shí)間是調(diào)試的禍根,采用交互式編程的方式能大大提高生產(chǎn)效率。因?yàn)闄C(jī)器能對(duì)我們的數(shù)據(jù)立即產(chǎn)生響應(yīng),這樣我們能更及時(shí)的發(fā)現(xiàn)問題,而不用等整體工作完成后再來一個(gè)一個(gè)調(diào)試bug,通常,尋找到最后一個(gè)bug所花費(fèi)的時(shí)間是找到第一個(gè)bug的許多倍。此外,在團(tuán)隊(duì)開發(fā)過程中,每個(gè)成員都應(yīng)該有防范bug的意識(shí),這是因?yàn)椴煌糠值拈_發(fā)者都會(huì)做出自己的一些假設(shè),且不同人之間的假設(shè)是不匹配的,這是大多數(shù)致命的和難以察覺的bug的來源。為此,我們需要制定細(xì)致的功能定義、詳細(xì)的規(guī)格說明、規(guī)范化的功能描述說明以及這些方法的實(shí)施,這樣便能大大減少系統(tǒng)中必須查找的bug數(shù)量;在開發(fā)時(shí)也應(yīng)該盡量采用自頂向下的設(shè)計(jì)理念,最大限度的將功能獨(dú)立為一個(gè)個(gè)模塊。
轉(zhuǎn)載于:https://www.cnblogs.com/Laplace-s-Trap/p/8587709.html
總結(jié)
以上是生活随笔為你收集整理的软件开发不是众人拾柴——《人月神话》读书笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mvc:default-servlet-
- 下一篇: p2p状态码