Programmering

Boganmeldelse: Den mytiske mandmåned: Essays om softwareudvikling, jubilæumsudgave

Frederick P. Brooks, Jr.'s The Mythical Man-Month (MM-M) er en af ​​de mest berømte bøger i al softwareudviklingslitteratur og er uden tvivl den mest berømte bog om softwareudviklingsstyring. Der er allerede utallige anmeldelser af denne klasse, men jeg gennemgår det igen i dette indlæg til de softwareudviklere, der ikke har læst det og ønsker et lille overblik over, hvad der kan lide ved det. Når alt kommer til alt er det PC-verdens nummer 1-titel på listen over top ti it-bøger, der aldrig må indrømmes, at du ikke har læst. Den fulde titel af den udgave, jeg gennemgår i dette indlæg, er Den mytiske mandmåned: Essays om softwareingeniør, Jubilæumsudgave.

"Jubilæumsudgaven" af Den mytiske mandmåned (udgivet i 1995) tilføjer væsentligt indhold ud over det, der blev offentliggjort i den originale udgave i 1975. "Jubilæumsudgaven" indeholder den originale bog i sin oprindelige form (omend med inkluderingen) af rettelser tilføjet i genoptrykket fra 1982) og tilføjer fire nye kapitler. De første femten kapitler i jubilæumsudgaven er kapitlerne fra den originale bog. De tilføjede kapitler inkluderer Brooks separate, men lige så berømte IFIPS (1986) / IEEE Computer Magazine (1987) papir No Silver Bullet: Essence and Accidents of Software Engineering og en opfølgning kaldet No Silver Bullet ReFired. Kapitel 18 og 19 i Jubilæumsudgaven fokuserer på Brooks 'selvperspektiv i 1995 på, hvad han skrev i 1975. Brooks påpegede, hvad han fik forkert, og hvad han fik ret (der er langt flere tilfælde af sidstnævnte end førstnævnte).

Der er adskillige anmeldelser af Den mytiske mandmåned der inkluderer udtømmende dækning af emnerne og citater fra denne bog (Wikipedia-artikel, Bernard I. Ng's Den mytiske mandmandsoversigt, Nogle indsigter fra Den mytiske mandmåned startende fra kapitel 11, Den mytiske mandmåned - Uddrag I, Den mytiske Man-Month - Extracts II, The Mythical Man-Month Lecture, and Review / Summary of The Mythical Man-Month, for eksempel). I stedet for at gentage en oversigt over bogens indhold som helhed, fokuserer jeg i dette indlæg på et par nøglepunkter og i lyset af nogle moderne softwares bedste praksis og ideologier.

Kapitel 19 ("Forslag fra Den mytiske mandmåned: Sandt eller falsk? ") I" Jubilæumsudgaven "vil især appellere til læseren, der er utålmodig eller mangler tid til at læse hele bogen, men ønsker at få et samlet overblik over Brooks påstande. Fordi Brooks bruger dette kapitel til at præsentere "essensen af ​​1975-bogen" i "omridsform", "Brooks's påstande (" fakta og generaliseringer af tommelfinger-type fra erfaring ") fra hans originale bog præsenteres i" skarp form "(ca. 20 sider). tilstedeværelsen af ​​dette kapitel i "Jubilæumsudgaven" er en anden grund til, at jeg ikke nedbryder bogen kapitel for kapitel her. Dette kapitel gør mere end blot at opsummere påstandene fra den originale bog; det inkluderer også nogle af Brooks 'kommentarer fra 1995 baseret på yderligere 20 års observation og fordelen ved efterfølgende.

I sit indlæg The Mythical Man Month: Book Review afslutter Mark Needham sin anmeldelse af denne bog med udsagnet "Jeg nød virkelig at læse denne bog og se, hvordan mange af ideerne i mere moderne metoder allerede var kendt om i 1980'erne og er i det væsentlige ikke nye ideer. " Jeg er helhjertet enig i denne erklæring, skønt sandheden af ​​den muligvis er endnu mere forbløffende: dette var observationer i en bog offentliggjort i 1975 baseret på Brooks erfaringer med at arbejde med OS / 360 udvikling i midten af ​​1960s og på opfølgende samtaler i sidst i 1960s. Med andre ord, nogle af de ting, vi måske synes er "nye" eller "trendy" i dag, har eksisteret og kendt i 45 år eller mere! Som en sidebemærkning minder dette mig om en Alan M. Davis-præsentation for Denver Java Users Group ("Hvad er nyt ved nye metoder til softwareudvikling?") I slutningen af ​​2006, hvor han demonstrerede hvor mange af de "nye" metoder og taktik i dag har meget lignende forgængere i tidligere år, og hvordan vi ser ud til at cykle mellem dem gennem årtier.

Følgende punkter fra Brooks er især interessante, når man holder tanken bag sig selv om, at denne bog blev udgivet i 1975 baseret på erfaringer fra midten til slutningen af ​​1960'erne (disse citater er fra kapitel 19 sammenfatning, men er baseret på teksten i 1975-udgaven):

  • "Meget gode professionelle programmører er det ti gange så produktiv som fattige ... "[håndværk]
  • "" Et lille skarpt hold er bedst - så få sind som muligt. "[Agile]
  • "At rette en fejl har en væsentlig (20 til 50 procent) chance for at indføre en anden. Efter hver løsning skal man køre hele banken af ​​testsager, der tidligere er kørt mod et system for at sikre, at den ikke er blevet beskadiget på en uklar måde." [regressionstest]
  • "Det er værd at opbygge masser af fejlretningsstillads og testkode, måske endda 50 procent så meget som det produkt, der debugges." [enhedstest]
  • "For at holde dokumentation vedligeholdt er det afgørende, at den inkorporeres i kildeprogrammet i stedet for at opbevares som et separat dokument ... selv sprogsyntaks på højt niveau giver slet ikke formål." [TØRRE princip]

Der er mange flere observationer i The Mythical Man-Month, der viser, at Brooks og andre udviklere af tiden forstod mange af de samme grundlæggende i softwareudvikling, som vi forstår (og nogle gange "opdager" igen) i dag. Mange af disse er mere velkendte og kaldes ud i andre anmeldelser, og så lister jeg dem ikke her undtagen disse must-list citater:

  • "Flere softwareprojekter er gået galt på grund af manglende kalendertid end af alle andre årsager tilsammen."
  • Brookes lov: "Tilføjelse af arbejdskraft til et sent softwareprojekt gør det senere."
  • "Derfor er mandsmåneden som en enhed til måling af et job en farlig og vildledende myte."

En af de sektioner, jeg fandt særlig rettidig (især for en bog fra 1975 i 2011), var Brooks dækning af, hvordan en softwarearkitekt kan påvirke implementeringen. Dette kan være særligt følsomt, når arkitektens vision ikke implementeres af udvikleren på den måde, som arkitekten ønskede. Brooks tip virker meget praktiske. Han siger, at arkitekten skal komme overens med det faktum, at den person, der implementerer koden, har "kreativt ansvar" for den implementering. Han anbefaler endvidere, at arkitekten altid skal have en idé om at implementere et hvilket som helst af hans eller hendes design, men skal samtidig være villig til at acceptere en lige så god alternativ tilgang, der foreslås af den person, der implementerer koden. Brooks anbefaler endvidere, at arkitekten fremsætter alle forslag vedrørende implementering "stille og privat", er "klar til at give afkald på kredit" og er villig til at lytte til implementerernes "forslag til arkitekturforbedringer". Dette virker som et godt råd for mig baseret på mine erfaringer på begge sider af dette forhold.

I 2005-artiklen Citeret ofte, fulgt sjældent, siger Brooks:

Bogen handler virkelig mere om ledelse end om teknologi. Teknologien har ændret sig enormt, så nogle af de gamle kapitler er helt ude af synkronisering. På den anden side har folk ikke ændret sig meget. Derfor er Homer og Shakespeare og Bibelen stadig relevante, fordi de alle har at gøre med menneskets natur. Jeg tror, ​​det er en del af forklaringen på denne bog: Problemerne med at styre mennesker i hold er ikke ændret, selvom mediet, som folk designer, og de værktøjer, de bruger, har. Nogle mennesker har kaldt bogen "bibel til software engineering". Jeg er enig i det i én henseende: det vil sige, at alle citerer det, nogle mennesker læser det, og nogle få mennesker går efter det.

Begreberne i dette tilbud kan være det vigtigste at formidle i en gennemgang af Den mytiske mandmåned. Bogens appel er dens dækning af og fokus på ledelse af mennesker. Det har været tidløst og uændret gennem årtierne. Teknologierne har bestemt ændret sig markant, og det kan være det største negative ved denne bog. Brooks eksempler baseret på specifikke produkter, værktøjer og sprog i 1975 var bestemt mere illustrative end de er i dag for den typiske læser. For eksempel kalder hans bog fra 1975 PL / I "den eneste rimelige kandidat til systemprogrammering i dag." Nogle gange kan noget af læsningen være lidt mere udfordrende med manglende direkte erfaring med de produkter, som Brooks nævner. Men i de fleste tilfælde er dette ikke meget af en hindring i sidste ende på grund af det menneskelige element er bogens fokus, og dette er for det meste uændret selv nu. I kapitel 19 i jubilæumsudgaven reflekterer Brooks over den fortsatte popularitet af sin bog og siger: "i det omfang MM-M handler om mennesker og hold, bør forældelse gå langsomt. "

Det Mytisk mandmåned handler virkelig om meget store softwareudviklingsprojekter til virksomheder. Dette er vigtigt at huske på, når du læser ting, der kan synes åbenlyse for nogen, der arbejder på et lille projekt. Den sidste del af citatet ovenfor er berømt: "Nogle mennesker har kaldt bogen 'softwareteknikens bibel'. Jeg er enig i det i én henseende: det vil sige, at alle citerer det, nogle mennesker læser det, og et par mennesker går efter det. " Brooks bog er fyldt med bibelske referencer, og han er åbenbart bekendt med den hellige bibel. Desværre er Brooks citat "alle citerer det, nogle mennesker læser det, og nogle få mennesker går efter det" er alt for sandt i dag. Vi fortsætter med at læse det, men det ville være rart at gøre mere for at ændre ting i store softwareudviklingsprojekter.

Nogle mennesker føler det Den mytiske mandmåned er nederlag og endda deprimerende. Jeg får ikke den samme følelse af at læse det. Snarere føler jeg, at det minder os om, at visse adfærd er skadelige og dysfunktionelle. Det minder os også om, at vi ikke skal vente på den "næste store ting", men i stedet bør fortsætte med at forbedre vores håndværk så godt vi kan. Der gives mange praktiske tip og forslag. Brooks elsker tydeligvis at være i softwareudviklingsfeltet, og dette vises igen og igen i hans bog. Brooks afslutter bogens "Epilogue: Fifty Years of Wonder, Excitation, and Joy", hvor han talte om, hvordan han plejede at kunne "læse alle tidsskrifter og konferenceprocedurer," men til sidst måtte opgive specifikke interesser en efter en som viden eksploderede. Han konkluderer: "For mange interesser, for mange spændende muligheder for læring, forskning og tanke. Hvilken vidunderlig situation! Ikke alene er slutningen ikke synlig, tempoet er ikke aftagende. Vi har mange fremtidige glæder." Jeg er bestemt enig.

Oprindelig postering tilgængelig på //marxsoftware.blogspot.com/ (Inspireret af faktiske begivenheder)

Denne historie, "Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition" blev oprindeligt udgivet af JavaWorld.