Programiranje

Recenzija knjige: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

Frederick P. Brooks, Jr., The Mythical Man-Month (MM-M), je ena najbolj znanih knjig v celotni literaturi o razvoju programske opreme in je nedvomno NAJznamenitejša knjiga o upravljanju razvoja programske opreme. Obstaja že nešteto pregledov tega razreda, vendar ga v tem prispevku ponovno pregledujem za tiste razvijalce programske opreme, ki ga še niso prebrali in želijo majhen pregled, kaj mu je všeč. Navsezadnje je naslov PC World številka 1 na seznamu deset najboljših knjig o IT, ki jih nikoli nisem priznal, da niste prebrali. Celoten naslov izdaje, ki jo pregledujem v tej objavi, je The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

"Obletnica" The Mythical Man-Month (objavljena leta 1995) dodaja pomembno vsebino, ki presega tisto, kar je bilo objavljeno v izvirni izdaji leta 1975. "Obletnica" vsebuje izvirno knjigo v izvirni obliki (čeprav z vključitvijo popravkov, dodanih v ponatisu iz leta 1982) in doda štiri nova poglavja. Prvih petnajst poglavij v obletnici je poglavij iz prvotne knjige. Dodana poglavja vključujejo Brooksov ločen, a prav tako znan IFIPS (1986) / IEEE Computer Magazine (1987) članek No Silver Bullet: Essence and Accidents of Software Engineering in nadaljevanje No Silver Bullet ReFired. 18. in 19. poglavje Anniversary Edition se osredotočata na Brooksovo samoperspektivo iz leta 1995 o tem, kaj je napisal leta 1975. Brooks poudarja, kaj je zmotil in kaj je dobil prav (primerov slednjega je veliko več kot prvega).

Obstajajo številni pregledi Mitski človek-mesec ki vključujejo izčrpno pokrivanje tem in citatov iz te knjige (članek na Wikipediji, povzetek Bernarda I. Ng-a The Mythical Man-Month, Nekaj ​​vpogledov iz The Mythical Man Month, ki se začne od 11. poglavja, The Mythical Man-Month - Extracts I, The Mythical Man-Month - izvlečki II, na primer Mythical Man-Month Lection in Review / Povzetek The Mythical Man-Month). Namesto da bi ponovil pregled vsebine knjige kot celote, se v tej objavi osredotočam na nekaj ključnih točk in v luči nekaterih najboljših praks in ideologij sodobne programske opreme.

Poglavje 19 ("Predlogi Mitski človek-mesec: True or False? ")" Anniversary Edition "bo še posebej všeč bralcu, ki je nestrpen ali mu primanjkuje časa za branje celotne knjige, želi pa si ogledati splošne Brooksove trditve. Ker Brooks to poglavje uporablja za predstavitev "bistvo knjige iz leta 1975" v "orisni obliki", Brooksove trditve ("dejstva in splošna posploševanja iz izkušenj") iz njegove izvirne knjige so predstavljene v "ostri obliki" (približno 20 strani). prisotnost tega poglavja v "Anniversary Edition" je še en razlog, da tukaj knjige ne razčlenjujem po poglavjih. To poglavje več kot zgolj povzema trditve iz prvotne knjige, vključuje pa tudi nekaj Brooksovih komentarjev iz leta 1995 temelji na še 20 letih opazovanja in koristi od zadnjega pogleda.

Mark Needham v svojem prispevku The Mythical Man Month: Book Review zaključuje svoj pregled te knjige z izjavo: "Resnično sem rad bral to knjigo in videl, kako je bilo veliko idej v sodobnejših metodologijah že znanih v osemdesetih letih in v bistvu niso nove ideje. " S to izjavo se z vsem srcem strinjam, čeprav je resnica verjetno še bolj osupljiva: to so bila opažanja v knjigi objavljeno v 1975 temelji na Brooksovih izkušnjah pri razvoju OS / 360 v sredi 1960in nadaljnjih pogovorov v konec leta 1960s. Z drugimi besedami, nekatere stvari, za katere bi danes lahko mislili, da so "nove" ali "trendovske", obstajajo že 45 let ali več! Kot stransko opombo me to spominja na predstavitev Alana M. Davisa v skupini uporabnikov Denver Java ("Kaj je novega o novih metodah razvoja programske opreme?") Konec leta 2006, v kateri je pokazal, koliko "novih" metodologij in Današnje taktike imajo zelo podobne predhodnike v preteklih letih in kako se zdi, da med njimi krožimo skozi desetletja.

Naslednje trditve Brooks-a so še posebej zanimive, če človek zadržuje misel, da je bila ta knjiga izdana leta 1975 na podlagi izkušenj sredi do poznih šestdesetih let (ti citati so povzeti v poglavju 19, vendar temeljijo na besedilu v izdaji iz leta 1975):

  • "Zelo dobri profesionalni programerji so desetkrat tako produktivni kot revni ... "[izdelava]
  • "" Najboljša je majhna ostra ekipa - čim manj misli. "[Gibčna]
  • "Odprava napake ima veliko (od 20 do 50 odstotkov) možnosti, da uvede še eno. Po vsakem popravku je treba zagnati celotno skupino testnih primerov, ki so bili predhodno zagnani proti sistemu, da se zagotovi, da ni bil poškodovan na nejasen način." [regresijsko testiranje]
  • "Vredno je zgraditi veliko odrov za odpravljanje napak in testno kodo, morda celo 50 odstotkov toliko, kot je izdelek, ki se odpravlja." [enotno testiranje]
  • "Za vzdrževanje dokumentacije je ključnega pomena, da se vključi v izvorni program in ne kot ločen dokument ... tudi sintaksa na visoki ravni sploh ne izraža namena." [SUHO načelo]

V The Mythical Man-Month je še veliko opažanj, ki dokazujejo, da so Brooks in drugi takratni razvijalci razumeli številne iste osnove razvoja programske opreme, ki jih danes razumemo (in včasih spet "odkrijemo"). Mnogi od njih so bolj znani in so jih poklicali v drugih pregledih, zato jih tukaj ne navajam, razen teh citatov z obveznega seznama:

  • "Več programov programske opreme se je zmotilo zaradi pomanjkanja koledarskega časa kot zaradi vseh drugih vzrokov skupaj."
  • Brookov zakon: "Dodajanje delovne sile poznemu programskemu projektu to naredi pozneje."
  • "Zato je človeški mesec kot enota za merjenje velikosti dela nevaren in zavajajoč mit."

Eden od razdelkov, ki se mi je zdel posebej pravočasen (zlasti za knjigo iz leta 1975 iz leta 1975), je bila Brooksova predstavitev, kako lahko arhitekt programske opreme vpliva na izvajanje. To je lahko še posebej občutljivo, če razvijalca arhitektove vizije ne uresniči tako, kot je želel arhitekt. Brooksovi nasveti se zdijo zelo praktični. Navaja, da se mora arhitekt sprijazniti s tem, da ima oseba, ki izvaja kodeks, "ustvarjalno odgovornost" za to izvedbo. Nadalje svetuje, da bi moral arhitekt vedno imeti idejo o izvedbi katerega koli od svojih načrtov, hkrati pa mora biti pripravljen sprejeti enako dober alternativni pristop, ki ga predlaga oseba, ki izvaja kodo. Brooks nadalje priporoča, da arhitekt vse predloge glede izvedbe poda "tiho in zasebno", "pripravljen se je odreči kreditom" in biti pripravljen prisluhniti "predlogom za izboljšave arhitekture" izvajalca. To se mi zdi dober nasvet, ki temelji na mojih izkušnjah na obeh straneh te zveze.

V članku iz leta 2005, ki ga pogosto citirajo in mu redko sledijo, Brooks navaja:

V knjigi gre res bolj za upravljanje kot za tehnologijo. Tehnologija se je izjemno spremenila, zato so nekatera stara poglavja popolnoma neskladna. Po drugi strani pa se ljudje niso kaj dosti spremenili. Zato so Homer in Shakespeare ter Biblija še vedno pomembni, ker se vsi ukvarjajo s človeško naravo. Mislim, da je to del razlage te knjige: težave pri upravljanju ljudi v skupinah se niso spremenile, čeprav imajo medij, v katerem ljudje načrtujejo, in orodja, ki jih uporabljajo. Nekateri so knjigo poimenovali "biblija programskega inženiringa". V enem pogledu bi se s tem strinjal: to pomeni, da ga vsi citirajo, nekateri ljudje to berejo in nekaj ljudi to upošteva.

Koncepti, ki jih vsebuje ta citat, so morda najpomembnejši za prikaz v pregledu Mitski človek-mesec. Privlačnost knjige je, da pokriva in se osredotoča na upravljanje z ljudmi. Ta je v desetletjih ostala brezčasna in nespremenjena. Tehnologije so se vsekakor bistveno spremenile in to je lahko največja negativa te knjige. Brooksovi primeri, ki so temeljili na določenih izdelkih, orodjih in jezikih leta 1975, so bili takrat zagotovo bolj ilustrativni kot danes za običajnega bralca. Na primer, njegova knjiga iz leta 1975 PL / I imenuje "edinega razumnega kandidata za sistemsko programiranje danes". Včasih je nekaj branja lahko nekoliko bolj zahtevno, ker nima neposrednih izkušenj z izdelki, ki jih omenja Brooks. Vendar v večini primerov to na koncu ni velika ovira, saj je človeški element v središču knjige in to je večinoma nespremenjeno tudi zdaj. Brooks v 19. poglavju obletnice razmišlja o nadaljnji priljubljenosti svoje knjige in navaja: "do te mere, da MM-M gre za ljudi in ekipe, zastaranje bi moralo biti počasno. "

The Mitski človek-mesec gre res za zelo velike projekte za razvoj programske opreme za podjetja. To je pomembno upoštevati pri branju stvari, ki se morda zdijo očitne nekomu, ki dela na majhnem projektu. Zadnji del zgornjega citata je znan: "Nekateri so knjigo poimenovali" biblija programskega inženiringa ". V enem pogledu bi se strinjal s tem: to pomeni, da ga vsi citirajo, nekateri ga berejo, nekaj ljudi pa gre. " Brooksova knjiga je polna svetopisemskih referenc in očitno je seznanjen s Sveto Biblijo. Na žalost je Brooksov citat "vsi ga citirajo, nekateri ga berejo in nekaj ljudi to upošteva" danes vse preveč resničen. Še naprej ga bomo brali, vendar bi bilo lepo narediti več, da spremenimo stvari v obsežnih projektih za razvoj programske opreme.

Nekateri ljudje to čutijo Mitski človek-mesec je porazen in celo depresiven. Ob branju nimam enakega občutka. Namesto tega menim, da nas to spominja, da so nekatera vedenja škodljiva in nefunkcionalna. Prav tako nas opozarja, da ne smemo čakati na "naslednjo veliko stvar", temveč bi morali nadaljevati z izboljševanjem svoje obrti, kolikor se le da. Na voljo je veliko praktičnih nasvetov in predlogov. Brooks je očitno rad na področju razvoja programske opreme, kar je vedno znova prikazano v njegovi knjigi. Brooks zaključuje knjigo "Epilog: petdeset let čudenja, vznemirjenja in radosti", ko govori o tem, kako je nekoč lahko "bral vse revije in zbornike konferenc", vendar se je na koncu moral odreči določenim interesom, enega za drugim. znanje je eksplodiralo. Zaključuje: "Preveč zanimanj, preveč vznemirljivih priložnosti za učenje, raziskovanje in razmišljanje. Kakšna čudovita stiska! Ne samo, da se konca ne vidi, tempo ne popušča. Imamo veliko prihodnjih radosti." Vsekakor se strinjam.

Izvirna objava je na voljo na //marxsoftware.blogspot.com/ (navdih dejanski dogodki)

To zgodbo, "Pregled knjige: Mythical Man-Month: Essays on Software Engineering, Anniversary Edition", je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found