Programmering

Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

Frederick P. Brooks, Jr.'s The Mythical Man-Month (MM-M) er en av de mest kjente bøkene i all programvareutviklingslitteratur og er uten tvil DEN mest berømte boken om programvareutviklingsadministrasjon. Det er allerede utallige anmeldelser av denne klassen, men jeg vurderer det igjen i dette innlegget for de programvareutviklerne som ikke har lest det og vil ha en liten oversikt over hva som skal til med det. Tross alt er det PC-verdens nummer 1-tittel i listen over topp ti IT-bøker som aldri skal innrømmes at du ikke har lest. Hele tittelen på utgaven jeg gjennomgår i dette innlegget er The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

"Jubileumsutgaven" av The Mythical Man-Month (utgitt i 1995) legger til betydelig innhold utover det som ble utgitt i originalutgaven i 1975. "Jubileumsutgaven" inneholder originalboka i sin opprinnelige form (om enn med inkluderingen) av korreksjoner lagt til i 1982-opptrykket) og legger til fire nye kapitler. De første femten kapitlene i jubileumsutgaven er kapitlene fra den originale boka. De tilføyde kapitlene inkluderer Brooks separate, men like berømte IFIPS (1986) / IEEE Computer Magazine (1987) papir No Silver Bullet: Essence and Accidents of Software Engineering og en oppfølging kalt No Silver Bullet ReFired. Kapittel 18 og 19 i jubileumsutgaven fokuserer på Brooks selvperspektiv fra 1995 på det han skrev i 1975. Brooks påpeker hva han fikk feil og hva han fikk rett (det er langt flere tilfeller av sistnevnte enn førstnevnte).

Det er mange anmeldelser av Den mytiske mandagen som inkluderer uttømmende dekning av emnene og sitatene fra denne boken (Wikipedia-artikkelen, Bernard I. Ng's The Mythical Man-Month summary, Some insights from The Mythical Man Month starter from Chapter 11, The Mythical Man-Month - Extracts I, The Mythical Man-Month - Extracts II, The Mythical Man-Month Lecture, and Review / Summary of The Mythical Man-Month, for eksempel). I stedet for å gjenta en oversikt over bokens innhold som helhet, fokuserer jeg i dette innlegget på noen få viktige punkter og i lys av noen moderne praksis og ideologier for programvare.

Kapittel 19 ("Proposisjoner av Den mytiske mandagen: True or False? ") Av" Anniversary Edition "vil spesielt appellere til leseren som er utålmodig eller mangler tid til å lese hele boka, men ønsker å få et helhetsbilde av Brooks påstander. Fordi Brooks bruker dette kapittelet til å presentere "essensen av 1975-boka" i "disposisjonsform," Brooks påstander ("fakta og generaliseringer av tommelfinger-typen fra erfaring") fra hans opprinnelige bok presenteres i "sterk form" (ca. 20 sider). tilstedeværelsen av dette kapitlet i "Jubileumsutgaven" er en annen grunn til at jeg ikke bryter boken kapittel for kapittel her. Dette kapittelet gjør mer enn bare å oppsummere påstandene fra den opprinnelige boka; den inkluderer også noen av Brooks 1995-kommentarer basert på 20 års observasjon til og nytten av etterpåklokskap.

I sitt innlegg The Mythical Man Month: Book Review avslutter Mark Needham sin anmeldelse av denne boken med utsagnet "Jeg likte veldig godt å lese denne boken og se hvordan mange ideer i mer moderne metoder allerede var kjent på 1980-tallet og er egentlig ikke nye ideer. " Jeg er helhjertet enig i denne uttalelsen, selv om sannheten i den muligens er enda mer svimlende: dette var observasjoner i en bok publisert i 1975 basert på Brooks erfaringer med OS / 360 utvikling i midten av 1960s og på oppfølgingssamtaler i sent på 1960s. Med andre ord, noen av tingene vi kanskje synes er "nye" eller "trendy" i dag har eksistert og kjent i 45 år eller mer! Som en sidemerknad, minner dette meg om en presentasjon fra Alan M. Davis til Denver Java Users Group ("Hva er nytt om nye metoder for programvareutvikling?") I slutten av 2006 hvor han demonstrerte hvor mange av de "nye" metodene og taktikk i dag har veldig like forgjengere tidligere år, og hvordan vi ser ut til å sykle mellom dem gjennom flere tiår.

Følgende punkter fra Brooks er spesielt interessante når man holder tanken bak seg eller henne at denne boka ble utgitt i 1975 basert på erfaringer fra midten til slutten av 1960-tallet (disse sitatene er fra sammendraget av kapittel 19, men er basert på teksten i 1975-utgaven):

  • "Veldig gode profesjonelle programmerere er det ti ganger like produktive som fattige ... "[håndverk]
  • "" Et lite skarpt team er best - så få sinn som mulig. "[Smidig]
  • "Å fikse en mangel har en betydelig (20 til 50 prosent) sjanse for å innføre en annen. Etter hver løsning må man kjøre hele banken med testsaker som tidligere har kjørt mot et system for å sikre at den ikke har blitt skadet på en uklar måte." [Regresjonstesting]
  • "Det er verdt å bygge mye feilsøking stillas og testkode, kanskje til og med 50 prosent så mye som produktet som feilsøkes." [enhetstesting]
  • "For å holde dokumentasjonen opprettholdt, er det avgjørende at den blir innlemmet i kildeprogrammet, i stedet for å oppbevares som et eget dokument ... selv språksyntaks på høyt nivå gir ikke formålet." [TØRKE prinsipp]

Det er mange flere observasjoner i The Mythical Man-Month som viser at Brooks og andre utviklere av tiden forsto mange av de samme grunnleggende om programvareutvikling som vi forstår (og noen ganger "oppdager" igjen) i dag. Mange av disse er mer kjente og blir kalt ut i andre anmeldelser, og derfor lister jeg dem ikke opp her bortsett fra disse sitatlistene:

  • "Flere programvareprosjekter har gått galt på grunn av mangel på kalendertid enn av alle andre årsaker til sammen."
  • Brookes lov: "Å legge til arbeidskraft til et sent programvareprosjekt gjør det senere."
  • "Derfor er måneden som en enhet for å måle størrelsen på en jobb en farlig og villedende myte."

En av seksjonene jeg fant spesielt betimelig (spesielt for en bok fra 1975 i 2011) var Brooks dekning av hvordan en programvarearkitekt kan påvirke implementeringen. Dette kan være spesielt følsomt når arkitektens visjon ikke blir implementert av utvikleren på den måten arkitekten ønsket. Brooks tips virker veldig praktiske. Han slår fast at arkitekten må forene seg med at den som implementerer koden har "kreativt ansvar" for den implementeringen. Han anbefaler videre at arkitekten alltid skal ha en ide om å implementere noen av hans eller hennes design, men må samtidig være villig til å akseptere en like god alternativ tilnærming foreslått av den som implementerer koden. Brooks anbefaler videre at arkitekten kommer med alle forslag angående implementering "stille og privat", er "klar til å gi avkall på kreditt", og er villig til å lytte til implementeringsprogrammets "forslag til arkitekturforbedringer." Dette virker som et godt råd for meg basert på mine erfaringer fra begge sider av dette forholdet.

I 2005-artikkelen Sitert ofte, fulgt sjelden, uttaler Brooks:

Boken handler egentlig mer om ledelse enn om teknologi. Teknologien har endret seg enormt, så noen av de gamle kapitlene er helt ute av synkronisering. På den annen side har folk ikke forandret seg mye. Derfor er Homer og Shakespeare og Bibelen fremdeles relevante, fordi de alle har med menneskelig natur å gjøre. Jeg tror det er en del av forklaringen på denne boken: Problemene med å administrere mennesker i team har ikke endret seg, selv om mediet som folk designer og verktøyene de bruker har. Noen mennesker har kalt boken "Bibelen for programvareteknikk." Jeg er enig i det på én måte: det vil si at alle siterer det, noen leser det, og noen få mennesker går etter det.

Konseptene i dette sitatet kan være det viktigste å formidle i en gjennomgang av Den mytiske mandagen. Bokens appell er dens dekning av og fokus på ledelse av mennesker. Det har vært tidløst og uendret gjennom flere tiår. Teknologiene har definitivt endret seg betydelig, og det kan være det største negative med denne boken. Brooks eksempler basert på spesifikke produkter, verktøy og språk i 1975 var absolutt mer illustrative enn de er i dag for den typiske leseren. For eksempel kaller hans bok fra 1975 PL / I "den eneste rimelige kandidaten for systemprogrammering i dag." Noen ganger kan noe av lesingen være litt mer utfordrende med mangel på direkte erfaring med produktene som Brooks nevner. Imidlertid er dette i de fleste tilfeller ikke mye av en hindring til slutt på grunn av at det menneskelige elementet er bokens fokus, og dette er stort sett uendret selv nå. I kapittel 19 i jubileumsutgaven reflekterer Brooks over den fortsatte populariteten til boken sin og sier: "i den grad det MM-M handler om mennesker og team, bør foreldelse gå tregt. "

De Mythical Man-Month handler egentlig om veldig store programvareutviklingsprosjekter for bedrifter. Dette er viktig å huske på når du leser ting som kan virke åpenbare for noen som jobber med et lite prosjekt. Den siste delen av sitatet ovenfor er kjent: "Noen mennesker har kalt boken" bibelen for programvareteknikk. " Jeg vil være enig i det på én måte: det vil si at alle siterer det, noen leser det, og noen få går etter det. " Brooks bok er fylt med bibelske referanser, og han er åpenbart kjent med den hellige bibelen. Dessverre er Brooks sitat "alle siterer det, noen leser det, og noen få mennesker går etter det" er altfor sant i dag. Vi fortsetter å lese den, men det vil være hyggelig å gjøre mer for å endre ting i store programvareutviklingsprosjekter.

Noen mennesker føler det Den mytiske mandagen er nederlag og til og med deprimerende. Jeg får ikke den samme følelsen av å lese den. Snarere føler jeg at det minner oss om at visse atferd er skadelige og dysfunksjonelle. Det minner oss også på at vi ikke bør vente på den "neste store tingen", men i stedet bør fortsette å forbedre håndverket vårt så godt vi kan. Mange praktiske tips og forslag er gitt. Brooks elsker åpenbart å være i programvareutviklingsfeltet, og dette vises igjen og igjen i boka hans. Brooks avslutter bokens "Epilogue: Fifty Years of Wonder, Excitation, and Joy", og snakker om hvordan han pleide å være i stand til å "lese alle tidsskriftene og konferanseprosedyrene," men til slutt måtte gi opp spesifikke interesser en etter en som kunnskap eksploderte. Han avslutter: "For mange interesser, for mange spennende muligheter for læring, forskning og tanke. For en fantastisk knipe! Ikke bare er slutten ikke i sikte, tempoet slakker ikke. Vi har mange fremtidige gleder." Jeg er absolutt enig.

Opprinnelig innlegg tilgjengelig på //marxsoftware.blogspot.com/ (Inspirert av faktiske hendelser)

Denne historien, "Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition" ble opprinnelig utgitt av JavaWorld.

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