Ohjelmointi

Kirja-arvostelu: Myyttinen ihmiskuukausi: Esseitä ohjelmistotuotannosta, Anniversary Edition

Frederick P. Brooks, Jr., Myyttinen ihmiskuukausi (MM-M) on yksi tunnetuimmista kirjoista ohjelmistokehityskirjallisuudessa ja on kiistatta tunnetuin kirja ohjelmistokehityksen hallintaa. Tästä luokasta on jo lukemattomia arvosteluja, mutta tarkistan sen uudelleen tässä viestissä niille ohjelmistokehittäjille, jotka eivät ole lukeneet sitä ja haluavat pienen yleiskatsauksen siitä, millaista siinä on. Loppujen lopuksi se on PC-maailman ykkösnimi kymmenen parhaan IT-kirjan luettelossa, joita ei koskaan myönnetä lukematta. Tässä julkaisussa tarkastelemani painoksen koko otsikko on The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

Myyttisen ihmiskuukauden "Anniversary Edition" (julkaistu vuonna 1995) lisää merkittävää sisältöä sen lisäksi, mitä alkuperäinen painos julkaistiin vuonna 1975. "Anniversary Edition" sisältää alkuperäisen kirjan alkuperäisessä muodossaan (vaikkakin mukana) vuoden 1982 uusintapainokseen lisättyjen korjausten määrä) ja lisää neljä uutta lukua. Anniversary Editionin ensimmäiset viisitoista lukua ovat alkuperäisen kirjan luvut. Lisätyt luvut sisältävät Brooksin erillisen mutta yhtä kuuluisan IFIPS (1986) / IEEE Computer Magazine (1987) -lehden No Silver Bullet: Essence and Accidents of Software Engineering ja seurannan nimeltä No Silver Bullet ReFired. Anniversary Editionin luvut 18 ja 19 keskittyvät Brooksin vuoden 1995 itsenäiseen näkemykseen siitä, mitä hän kirjoitti vuonna 1975. Brooks huomauttaa, mitä hän teki väärin ja mitä hän sai oikein (jälkimmäisestä on paljon enemmän tapauksia kuin edellisestä).

On olemassa lukuisia arvosteluja Myyttinen ihmiskuukausi jotka sisältävät kattavan kattavuuden tämän kirjan aiheista ja lainauksista (Wikipedia-artikkeli, Bernard I. Ng: n Myyttinen ihmiskuukausi -yhteenveto, Joitakin oivalluksia Myyttisen ihmisen kuukaudesta alkaen luvusta 11, Myyttinen ihmiskuukausi - Ote I, Myyttinen Mieskuukausi - otteet II, Myyttinen ihmiskuukausiluento ja katsaus / yhteenveto esimerkiksi myyttisestä ihmiskuukaudesta). Sen sijaan, että toistan yleiskatsauksen kirjan sisällöstä kokonaisuudessaan, keskityn tässä viestissä muutamaan keskeiseen kohtaan ja nykyisten ohjelmistojen parhaiden käytäntöjen ja ideologioiden valossa.

19 luku ("Ehdotukset Myyttinen ihmiskuukausi"Todellinen vai väärä?") "Anniversary Edition" vetoaa erityisesti lukijaan, joka on kärsimätön tai jolla ei ole aikaa lukea koko kirjaa, mutta haluaa saada yleiskuvan Brooksin väitteistä. Koska Brooks käyttää tätä lukua "Vuoden 1975 kirjan ydin" hahmotelmassa "Brooksin väitteet (" tosiasiat ja nyrkkisääntön tyyppiset yleistykset kokemuksesta ") alkuperäisestä kirjastaan ​​esitetään" jyrkässä muodossa "(noin 20 sivua). tämän luvun läsnäolo "Anniversary Edition" -muodossa on toinen syy, miksi en jaa kirjaa kappaleittain tässä luvussa. Tässä luvussa on enemmän kuin vain yhteenveto alkuperäisen kirjan väitteistä; se sisältää myös joitain Brooksin vuoden 1995 kommentteja perustuu vielä 20 vuoden tarkkailuun ja jälkikäteen saatavaan hyötyyn.

Kirjassa The Mythical Man Month: Book Review, Mark Needham lopettaa tämän kirjan katsauksensa lausunnolla: "Nautin todella lukemasta tätä kirjaa ja nähdä, kuinka monista nykyaikaisempien menetelmien ideoista tunnettiin jo 1980-luvulla. eivät ole pohjimmiltaan uusia ideoita. " Olen täysin samaa mieltä tämän lausunnon kanssa, vaikka totuus on mahdollisesti vielä hämmästyttävämpi: nämä olivat havainnot kirjassa julkaistu 1975 perustuu Brooksin kokemuksiin OS / 360-kehityksestä puolivälissä 1960ja jatkokeskusteluista 1960-luvun loppus. Toisin sanoen jotkut asiat, joiden uskomme olevan nykyään "uusia" tai "trendikkäitä", ovat olleet olemassa ja tunnettuja vähintään 45 vuotta! Sivuhuomautuksena tämä muistuttaa minua Alan M. Davisin esityksestä Denver Java -käyttäjäryhmälle ("Mitä uutta ohjelmistokehityksen uusista menetelmistä?") Vuoden 2006 lopulla, jossa hän osoitti kuinka monta "uusista" menetelmistä ja nykypäivän taktiikalla on edeltävinä vuosina hyvin samanlaisia ​​edeltäjiä ja miten näemme pyörivän niiden välillä vuosikymmenien ajan.

Seuraavat Brooksin esiin tuomat kohdat ovat erityisen kiinnostavia, kun ajatellaan takaapäin, että tämä kirja julkaistiin vuonna 1975 1960-luvun puolivälistä loppupuolelle saatujen kokemusten perusteella (nämä lainaukset ovat luvun 19 yhteenvedosta, mutta perustuvat vuoden 1975 painoksen tekstiin):

  • "Erittäin hyvät ammattilaiset ovat kymmenen kertaa yhtä tuottavia kuin köyhätkin ... "[käsityötaito]
  • "" Pieni terävä joukkue on paras - niin vähän mieliä kuin mahdollista. "[Ketterä]
  • "Virheen korjaamisella on huomattava (20-50 prosentin) mahdollisuus ottaa uusi käyttöön. Jokaisen korjauksen jälkeen on suoritettava koko testitapahtuma, joka on aiemmin ollut järjestelmää vastaan ​​varmistaakseen, että sitä ei ole vahingoitettu hämärästi." [regressiotestaus]
  • "On syytä rakentaa paljon virheenkorjaustelineitä ja testikoodeja, ehkä jopa 50 prosenttia yhtä paljon kuin virheenkorjattava tuote." [yksikkötestaus]
  • "Dokumentaation ylläpitämiseksi on erittäin tärkeää, että se sisällytetään lähdeohjelmaan sen sijaan, että säilytettäisiin erillisenä asiakirjana ... edes korkean tason kielisyntaksilla ei ole lainkaan tarkoitusta." [DRY-periaate]

Myyttisessä ihmiskuukaudessa on paljon enemmän havaintoja, jotka osoittavat, että Brooks ja muut tuon ajan kehittäjät ymmärsivät monia samoja ohjelmistokehityksen perusteita, jotka ymmärrämme (ja joskus "löydämme" uudelleen) tänään. Monet näistä ovat tunnetumpia ja niitä kutsutaan muissa arvosteluissa, joten en luetella niitä tässä paitsi nämä pakolliset lainaukset:

  • "Enemmän ohjelmistoprojekteja on mennyt pieleen kalenteriajan puutteen vuoksi kuin kaikista muista syistä yhdessä."
  • Brooken laki: "Lisäämällä työvoimaa myöhään olevaan ohjelmistoprojektiin saat sen myöhemmin."
  • "Siksi ihmiskuukausi työn koon mittaamisen yksikkönä on vaarallinen ja petollinen myytti."

Yksi osista, jotka pidin erityisen ajankohtaisina (varsinkin vuoden 1975 kirjassa vuonna 2011), oli Brooksin katsaus siihen, miten ohjelmistoarkkitehti voi vaikuttaa toteutukseen. Tämä voi olla erityisen arkaluontoista, kun kehittäjä ei toteuta arkkitehdin visiota arkkitehdin toivomalla tavalla. Brooksin vinkit näyttävät hyvin käytännöllisiltä. Hän toteaa, että arkkitehdin on sovittava siitä, että koodin toimeenpanijalla on "luova vastuu" toteutuksesta. Hän suosittelee lisäksi, että arkkitehdillä tulisi aina olla ajatus minkä tahansa suunnitelman toteuttamisesta, mutta hänen on samalla oltava valmis hyväksymään yhtä hyvä vaihtoehtoinen lähestymistapa, jonka koodeksin toteuttaja ehdottaa. Brooks suosittelee lisäksi, että arkkitehti tekee kaikki toteutusta koskevat ehdotukset "hiljaa ja yksityisesti", "ole valmis luopumaan luottokelpoisuudesta" ja on valmis kuuntelemaan toteuttajan "ehdotuksia arkkitehtuurin parantamiseksi". Tämä tuntuu hyvältä neuvolta, joka perustuu kokemuksiini tämän suhteen molemmilta puolilta.

Brooks toteaa vuoden 2005 artikkelissa Lainattu usein, jota seurataan harvoin.

Kirja on oikeastaan ​​enemmän johtamisesta kuin tekniikasta. Tekniikka on muuttunut valtavasti, joten jotkut vanhat luvut ovat täysin synkronoitumattomia. Toisaalta ihmiset eivät ole muuttuneet paljoakaan. Siksi Homer, Shakespeare ja Raamattu ovat edelleen merkityksellisiä, koska ne kaikki käsittelevät ihmisluontoa. Mielestäni se on osa tämän kirjan selitystä: Ihmisten johtamisen ongelmat ryhmissä eivät ole muuttuneet, vaikka välineellä, jolla ihmiset suunnittelevat, ja työkaluilla, joita he käyttävät. Jotkut ihmiset ovat kutsuneet kirjaa "ohjelmistotekniikan raamatuksi". Olisin samaa mieltä yhdestä asiasta: toisin sanoen kaikki lainaavat sitä, jotkut ihmiset lukevat sitä ja muutamat ihmiset ohittavat sen.

Tämän lainauksen käsitteet voivat olla tärkein asia välittää katsauksessa Myyttinen ihmiskuukausi. Kirjan vetovoima on sen kattavuus ja keskittyminen ihmisten hallintaan. Se on pysynyt ajattomana ja muuttumattomana vuosikymmenien ajan. Teknologiat ovat ehdottomasti muuttuneet merkittävästi, ja se voi olla suurin negatiivinen tässä kirjassa. Brooksin esimerkit, jotka perustuivat tiettyihin tuotteisiin, työkaluihin ja kieliin vuonna 1975, olivat varmasti esimerkillisempiä kuin nykyään tyypilliselle lukijalle. Esimerkiksi hänen vuoden 1975 kirjansa mukaan PL / I on "ainoa järkevä ehdokas järjestelmän ohjelmointiin tänään". Toisinaan osa lukemisesta voi olla hieman haastavampaa ilman suoraa kokemusta tuotteista, joista Brooks mainitsee. Useimmissa tapauksissa tämä ei kuitenkaan ole loppujen lopuksi paljon haittaa, koska inhimillinen elementti on kirjan painopiste, ja tämä on enimmäkseen muuttumatonta jo nyt. Anniversary Editionin luvussa 19 Brooks pohtii kirjansa jatkuvaa suosiota ja toteaa: "siinä määrin kuin MM-M koskee ihmisiä ja tiimejä, vanhentumisen pitäisi olla hidasta. "

Myyttinen ihmiskuukausi on todella erittäin suurista yritysohjelmistojen kehittämishankkeista. Tämä on tärkeää pitää mielessä lukiessasi asioita, jotka saattavat tuntua itsestään selviltä pienessä projektissa työskentelevälle. Yllä olevan lainauksen viimeinen osa on kuuluisa: "Jotkut ihmiset ovat kutsuneet kirjaa" ohjelmistotekniikan raamatuksi ". Olisin samaa mieltä yhdestä asiasta: toisin sanoen kaikki lainaavat sitä, jotkut ihmiset lukevat sen ja muutamat ihmiset ohittavat sen. " Brooksin kirja on täynnä raamatullisia viittauksia ja hän on selvästi perehtynyt Pyhään Raamattuun. Valitettavasti Brooksin lainaus "kaikki lainaavat sitä, jotkut lukevat sitä, ja muutamat ihmiset ohittavat sen", on aivan liian totta tänään. Jatkamme sen lukemista, mutta olisi mukavaa tehdä enemmän muuttaakseni asioita laajamittaisissa ohjelmistokehitysprojekteissa.

Jotkut ihmiset kokevat sen Myyttinen ihmiskuukausi on defeatistinen ja jopa masentava. En saa samaa tunnetta lukemalla sitä. Mielestäni se mielestäni muistuttaa meitä siitä, että tietyt käyttäytymismallit ovat haitallisia ja toimintahäiriöitä. Se muistuttaa meitä myös siitä, että meidän ei pitäisi odottaa "seuraavaa suurta asiaa", vaan meidän pitäisi sen sijaan jatkaa veneidemme parantamista parhaalla mahdollisella tavalla. Tarjolla on monia käytännön vinkkejä ja ehdotuksia. Brooks ilmeisesti rakastaa olla ohjelmistokehitysalalla, ja tämä näkyy hänen kirjassaan yhä uudelleen. Brooks päättää kirjan "Epilogi: viisikymmentä vuotta ihmeitä, jännitystä ja iloa" ja kertoo kuinka hän pystyi aiemmin "lukemaan kaikki lehdet ja konferenssijulkaisut", mutta lopulta hänen täytyi luopua erityisistä kiinnostuksen kohteista yksitellen tieto räjähti. Hän päättelee: "Liian monta mielenkiintoa, liian paljon jännittäviä oppimis-, tutkimus- ja ajattelumahdollisuuksia. Mikä upea vastarinta! Loppua ei ole vain näkyvissä, tahti ei ole löysä. Meillä on monia tulevaisuuden iloja." Olen ehdottomasti samaa mieltä.

Alkuperäinen julkaisu on saatavana osoitteessa //marxsoftware.blogspot.com/ (Innoittamana Todelliset tapahtumat)

Tämän tarinan "Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition" julkaisi alun perin JavaWorld.