Prikaz knjige: The Mythical Man-Month: Essays of Software Engineering, Anniversary Edition

Frederick P. Brooks, Jr., The Mythical Man-Month (MM-M), jedna je od najpoznatijih knjiga u čitavoj literaturi o razvoju softvera i vjerojatno je NAJpoznatija knjiga o upravljanju razvojem softvera. Već postoji bezbroj recenzija ove klase, ali ponovno je pregledam u ovom postu za one programere koji je nisu pročitali i žele mali pregled onoga što bi joj se svidjelo. Napokon, to je naslov PC World broj 1 na popisu deset najboljih IT knjiga koje nikada nisu priznali da niste čitali. Puni naslov izdanja koje recenziram u ovom postu je The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

"Obljetničko izdanje" časopisa Mythical Man-Month (objavljeno 1995.) dodaje značajan sadržaj iznad i izvan onoga što je objavljeno u izvornom izdanju 1975. "Obljetničko izdanje" sadrži originalnu knjigu u izvornom obliku (iako s uključenjem ispravki dodanih u pretisku iz 1982.) i dodaje četiri nova poglavlja. Prvih petnaest poglavlja u izdanju Obljetnica poglavlja su iz izvorne knjige. Dodana poglavlja uključuju Brooksov zaseban, ali jednako poznat IFIPS (1986) / IEEE Computer Magazine (1987) rad No Silver Bullet: Essence and Accidents of Software Engineering i nastavak pod nazivom No Silver Bullet ReFired. Poglavlja 18 i 19 izdanja Anniversary usmjerena su na Brooksovu perspektivu iz 1995. godine o onome što je napisao 1975. godine.Brooks ističe što je pogriješio, a što ispravio (mnogo je više slučajeva potonjih nego prvih).

Brojni su prikazi mjeseca mitskog čovjeka koji uključuju iscrpno pokrivanje tema i citata iz ove knjige (članak na Wikipediji, sažetak mjeseca Mythical Man-Month Bernarda I. Ng-a, Neki uvidi iz mjeseca mitskog čovjeka, počevši od poglavlja 11, Mythical Man-Month - Extracts I, The Mythical Man-Month - Extracts II, Mythical Man-Month Lection i Pregled / sažetak Mythical Man-Month, na primjer). Umjesto da ponovim pregled sadržaja knjige u cjelini, u ovom postu fokusiram se na nekoliko ključnih točaka i u svjetlu nekih najboljih praksi i ideologija modernog softvera.

Poglavlje 19 ("Propozicije mitskog mjeseca čovjeka: Točno ili netačno? ") Izdanja" Anniversary Edition "posebno će se svidjeti čitatelju koji je nestrpljiv ili mu nedostaje vremena za čitanje cijele knjige, ali želi dobiti cjelovit uvid u Brooksove tvrdnje. Jer Brooks koristi ovo poglavlje za predstavljanje "suština knjige iz 1975." u "okvirnom obliku", Brooksove tvrdnje ("činjenice i generalizacije iz iskustva") iz njegove izvorne knjige predstavljene su u "oštrom obliku" (približno 20 stranica). Prisutnost ovog poglavlja u "Anniversary Edition" je još jedan razlog zbog kojeg ovdje knjigu ne raščlanjujem poglavlje po poglavlje. Ovo poglavlje više nego jednostavno sažima tvrdnje iz izvorne knjige; uključuje i neke Brooksovekomentari iz 1995. temeljeni na još 20 godina promatranja i koristi unatrag.

U svom postu The Mythical Man Month: Review Book, Mark Needham zaključuje svoj osvrt na ovu knjigu izjavom: "Zaista sam uživao čitajući ovu knjigu i vidjevši kako su se mnoge ideje iz modernijih metodologija već znale 1980-ih i nisu u osnovi nove ideje. " Iskreno se slažem s ovom izjavom, iako je istina možda još zapanjujuća: bila su to zapažanja u knjizi objavljenoj 1975. godine koja se temelji na Brooksovim iskustvima koja su radila na razvoju OS / 360 sredinom 1960-ih i na daljnjim razgovorima u kasno 1960s. Drugim riječima, neke stvari za koje bismo danas mogli pomisliti da su „nove“ ili „trendovske“ postoje i poznaju se već 45 godina ili više! Kao popratnu napomenu, ovo me podsjeća na prezentaciju Alana M. Davisa u Denver Java Users Group („Što je novo o novim metodama razvoja softvera?“) Krajem 2006. godine u kojoj je pokazao koliko „novih“ metodologija i današnje taktike imaju vrlo slične prethodnike u prošlim godinama i kako se čini da između njih kružimo tijekom desetljeća.

Sljedeće točke koje je Brooks iznio posebno su zanimljive kada se u pozadini misli drži da je ova knjiga objavljena 1975. na temelju iskustava sredinom i kasnih 1960-ih (ovi citati su iz sažetka poglavlja 19, ali temelje se na tekstu u izdanju iz 1975.):

  • "Vrlo dobri profesionalni programeri deset su puta produktivniji od loših ..." [izrada]
  • "" Najbolja je mala oštra ekipa - što manje umova. "[Okretan]
  • "Ispravljanje kvara ima značajne (20 do 50 posto) šanse da se uvede još jedan. Nakon svakog popravka, mora se pokrenuti cijela banka testnih slučajeva prethodno pokrenutih protiv sustava kako bi se osiguralo da nije oštećen na nejasan način." [regresijsko ispitivanje]
  • "Vrijedno je izgraditi puno skela za otklanjanje pogrešaka i testnog koda, možda čak 50 posto više od proizvoda koji se otklanja." [jedinično testiranje]
  • "Da bi se dokumentacija održavala, presudno je da se ona uključi u izvorni program, a ne da se čuva kao zaseban dokument ... čak i sintaksa na visokoj razini uopće ne dokazuje svrhu." [SUHO načelo]

U "Mythical Man-Month" ima mnogo više zapažanja koja pokazuju da su Brooks i drugi programeri toga doba razumjeli mnoge iste osnove razvoja softvera koje danas razumijemo (a ponekad i "otkrivamo"). Mnogi od njih su poznatiji i prozivani su u drugim recenzijama, pa ih ovdje ne navodim osim ovih citata s obveznih lista:

  • "Više softverskih projekata se pokvarilo zbog nedostatka kalendarskog vremena nego zbog svih ostalih uzroka zajedno."
  • Brookeov zakon: "Dodavanje radne snage kasnom softverskom projektu to čini kasnije."
  • "Stoga je čovjekov mjesec kao jedinica za mjerenje veličine posla opasan i varljiv mit."

Jedno od poglavlja koje sam smatrao posebno pravodobnim (posebno za knjigu iz 1975. godine iz 2011.) bilo je Brooksovo izvještavanje o tome kako softverski arhitekt može utjecati na implementaciju. To može biti posebno osjetljivo kada programer ne provodi arhitektovu viziju na način kako je arhitekt želio. Brooksovi se savjeti čine vrlo praktični. Navodi da se arhitekt mora pomiriti s činjenicom da osoba koja provodi kodeks ima "kreativnu odgovornost" za tu provedbu. Dalje savjetuje da arhitekt uvijek treba imati ideju o provedbi bilo kojeg od njegovih ili njezinih projekata, ali istovremeno mora biti spreman prihvatiti jednako dobar alternativni pristup koji je predložio osoba koja provodi kodeks. Brooks nadalje preporučuje arhitektu da sve prijedloge u vezi s provedbom "tiho i privatno, „budite„ spremni odreći se kredita “i budite spremni poslušati implementatorove„ prijedloge za poboljšanja arhitekture. “To mi se čini kao dobar savjet na temelju mojih iskustava s obje strane ove veze.

U članku iz 2005. godine, koji se često citira, a rijetko ga se prati, Brooks navodi:

Knjiga se zapravo više bavi menadžmentom nego tehnologijom. Tehnologija se neizmjerno promijenila, tako da su neka od starih poglavlja potpuno neusklađena. S druge strane, ljudi se nisu puno promijenili. Zato su Homer i Shakespeare i Biblija i dalje relevantni, jer se svi bave ljudskom prirodom. Mislim da je to dio objašnjenja ove knjige: Problemi upravljanja ljudima u timovima nisu se promijenili, iako medij u kojem ljudi dizajniraju i alati koje koriste imaju. Neki su knjigu nazvali "biblijom softverskog inženjerstva". Složio bih se s tim u jednom pogledu: to jest, svi ga citiraju, neki ljudi to čitaju, a nekoliko ljudi ide uz to.

Koncepti sadržani u ovom citatu možda su najvažnije što ćete prenijeti u pregledu Mitskog mjeseca čovjeka. Privlačnost knjige je u pokrivanju i usredotočenosti na upravljanje ljudima. To je ostalo bez vremena i nepromijenjeno tijekom desetljeća. Tehnologije su se definitivno značajno promijenile i to je možda najveći negativ u ovoj knjizi. Brooksovi primjeri zasnovani na određenim proizvodima, alatima i jezicima 1975. godine tada su zasigurno bili ilustrativniji nego danas za tipičnog čitatelja. Na primjer, njegova knjiga iz 1975. PL / I naziva "jedinim razumnim kandidatom za programiranje sustava danas". Ponekad neka čitanja mogu biti malo izazovnija s nedostatkom izravnog iskustva s proizvodima koje Brooks spominje. Međutim, u većini slučajeva to na kraju nije velika prepreka jer je ljudski element u fokusu knjige, a ovo je uglavnom nepromijenjeno čak i sada. U 19. poglavlju godišnjice,Brooks razmišlja o kontinuiranoj popularnosti svoje knjige i navodi: "do te mjereMM-M govori o ljudima i timovima, zastarjelost bi trebala biti spora. "

Mitska Čovjek-Mjesec je zapravo o vrlo velikim razvojnim projektima poslovnog softvera. Ovo je važno imati na umu kad čitate stvari koje se nekome tko radi na malom projektu mogu učiniti očiglednim. Poznati je posljednji dio citata: "Neki su knjigu nazvali" biblijom softverskog inženjerstva ". Složio bih se s tim u jednom pogledu: to jest, svi ga citiraju, neki ljudi to čitaju, a nekoliko ljudi ide uz to. " Brooksova knjiga puna je biblijskih referenci i očito je upoznat sa Svetom Biblijom. Nažalost, Brooksov citat "svi ga citiraju, neki ga čitaju, a nekolicina ljudi ide uz to" danas je previše istinit. Nastavit ćemo ga čitati, ali bilo bi lijepo učiniti više kako bismo promijenili stvari u velikim projektima razvoja softvera.

Neki ljudi osjećaju da je The Mythical Man-Monthje porazna i čak depresivna. Čitajući ga nemam isti osjećaj. Umjesto toga, osjećam da nas podsjeća da su određena ponašanja štetna i nefunkcionalna. Također nas podsjeća da ne bismo trebali čekati "sljedeću veliku stvar", već bismo trebali nastaviti poboljšavati svoj zanat najbolje što možemo. Pruženi su mnogi praktični savjeti i prijedlozi. Brooks očito voli biti na polju razvoja softvera, a to se iznova pokazuje u njegovoj knjizi. Brooks zaključuje knjigu "Epilog: pedeset godina čuda, uzbuđenja i radosti", govoreći o tome kako je nekada mogao "čitati sve časopise i zbornike konferencija", ali se na kraju morao odreći pojedinačnih interesa kao jednog od njih. znanje je eksplodiralo. Zaključuje, "Previše interesa, previše uzbudljivih prilika za učenje,istraživanje i razmišljanje. Kakva čudesna nevolja! Ne samo da se kraj ne nazire, tempo ne popušta. Imamo mnogo budućih radosti. "Definitivno se slažem.

Izvorno objavljivanje dostupno na //marxsoftware.blogspot.com/ (Inspirirano Stvarnim događajima)

Ovu priču, "Recenzija knjige: Mitski čovjek-mjesec: eseji o softverskom inženjerstvu, izdanje obljetnice" izvorno je objavio JavaWorld.