Programování

Recenze knihy: The Mythical Man-Month: Eseje o softwarovém inženýrství, Anniversary Edition

Frederick P. Brooks, Jr., The Mythical Man-Month (MM-M) je jednou z nejslavnějších knih v celé literatuře o vývoji softwaru a je pravděpodobně NEJznámější knihou o řízení vývoje softwaru. Recenze na tuto třídu již mají nespočet, ale v tomto příspěvku ji znovu zkontroluji pro ty vývojáře softwaru, kteří ji nečetli a chtějí malý přehled toho, co se jim na ní líbí. Koneckonců, je to titul PC World # 1 v seznamu deseti nejlepších IT knih, které nikdy nepřiznají, že jste nečetli. Celý název edice, kterou v tomto příspěvku recenzuji, je The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

„Anniversary Edition“ z The Mythical Man-Month (vydané v roce 1995) přidává významný obsah nad rámec toho, co vyšlo v původním vydání v roce 1975. „Anniversary Edition“ obsahuje původní knihu v původní podobě (i když s uvedením oprav přidaných v dotisku z roku 1982) a přidává čtyři nové kapitoly. Prvních patnáct kapitol v Anniversary Edition jsou kapitoly z původní knihy. Přidané kapitoly zahrnují Brooksův samostatný, ale stejně slavný papír IFIPS (1986) / IEEE Computer Magazine (1987) No Silver Bullet: Essence and Accidents of Software Engineering a pokračování s názvem No Silver Bullet ReFired. Kapitoly 18 a 19 edice Anniversary Edition se zaměřují na Brooksovu vlastní perspektivu z roku 1995 ohledně toho, co napsal v roce 1975. Brooks poukazuje na to, v čem se zmýlil a co udělal správně (těch druhých je mnohem více než těch prvních).

Existuje mnoho recenzí Mýtický muž-měsíc které zahrnují vyčerpávající pokrytí témat a citací z této knihy (článek Wikipedie, shrnutí The Mythical Man-Month od Bernarda I. Man-Měsíc - Výňatky II, Přednáška Mýtický Man-Měsíc a Recenze / Shrnutí Mýtického Man-Měsíce, například). Spíše než zopakovat přehled obsahu knihy jako celku, zaměřím se v tomto příspěvku na několik klíčových bodů a ve světle některých osvědčených postupů a ideologií moderního softwaru.

Kapitola 19 ("Návrhy Mýtický muž-měsíc: True or False? “)„ Anniversary Edition “osloví zejména čtenáře, který je netrpělivý nebo nemá dostatek času na přečtení celé knihy, ale chce získat celkový pohled na Brooksova tvrzení. Protože Brooks tuto kapitolu používá k prezentaci „podstata knihy z roku 1975“ v „obrysové formě“, „Brooksova tvrzení („ fakta a zobecnění typu pravidla podle zkušenosti “) z jeho původní knihy jsou uvedena v„ ostré formě “(přibližně 20 stran). přítomnost této kapitoly v „Anniversary Edition“ je dalším důvodem, proč tu knihu nerozkládám po kapitolách. Tato kapitola více než jednoduše shrnuje tvrzení z původní knihy; obsahuje také některé komentáře Brookse z roku 1995 na základě dalších 20 let pozorování a výhod zpětného pohledu.

Ve svém příspěvku The Mythical Man Month: Book Review uzavírá Mark Needham svou recenzi této knihy prohlášením: „Opravdu mě bavilo číst tuto knihu a vidět, jak se o mnoha myšlenkách v modernějších metodikách ví už v 80. letech a nejsou v podstatě nové nápady. “ Z celého srdce s tímto tvrzením souhlasím, i když jeho pravda je možná ještě ohromující: šlo o postřehy v knize publikoval v 1975 na základě Brooksových zkušeností s prací na vývoji OS / 360 v v polovině roku 1960a o následných konverzacích v pozdní 1960s. Jinými slovy, některé z věcí, o kterých si dnes myslíme, že jsou „nové“ nebo „trendy“, existují a jsou známé již 45 let a více! Jako vedlejší poznámku mi to připomíná prezentaci Alana M. Davise skupině Denver Java Users Group („Co je nového v nových metodách vývoje softwaru?“) Na konci roku 2006, ve které demonstroval, kolik z „nových“ metodik a dnešní taktika má velmi podobné předchůdce v minulých letech a jak se zdá, že mezi nimi cyklujeme po celá desetiletí.

Následující body, které uvedl Brooks, jsou obzvláště zajímavé, když si člověk v mysli udrží myšlenku, že tato kniha vyšla v roce 1975 na základě zkušeností z poloviny až konce šedesátých let (tyto citáty pocházejí ze shrnutí kapitoly 19, ale jsou založeny na textu ve vydání z roku 1975):

  • „Velmi dobří profesionální programátoři jsou desetkrát stejně produktivní jako chudí ... “[řemeslo]
  • „„ Malý ostrý tým je nejlepší - co nejméně myslí. “[Agilní]
  • „Oprava vady má značnou (20 až 50 procentní) šanci zavést další. Po každé opravě je třeba spustit celou banku testovacích případů, které byly dříve spuštěny proti systému, aby bylo zajištěno, že nebyla poškozena obskurním způsobem.“ [regresní testování]
  • „Stojí za to vybudovat spoustu ladicího lešení a testovacího kódu, možná dokonce o 50 procent více než laděný produkt.“ [testování jednotky]
  • „Aby byla dokumentace udržována, je zásadní, aby byla začleněna do zdrojového programu, nikoli aby byla uchovávána jako samostatný dokument ... dokonce ani jazyková syntaxe na vysoké úrovni vůbec neoznačuje účel.“ [SUCHÝ princip]

V The Mythical Man-Month existuje mnoho dalších pozorování, která ukazují, že Brooks a další vývojáři té doby rozuměli mnoha stejným základům vývoje softwaru, kterým rozumíme (a někdy znovu „objevujeme“) i dnes. Mnoho z nich je více známých a jsou vyvolávány v jiných recenzích, a proto je zde neuvádím, s výjimkou těchto citací:

  • „Více softwarových projektů se zhoršilo kvůli nedostatku kalendářního času než pro všechny ostatní příčiny dohromady.“
  • Brooke's Law: „Přidáním pracovní síly do pozdního softwarového projektu je to později.“
  • „Proto je člověkoměsíc jako jednotka pro měření velikosti práce nebezpečný a klamný mýtus.“

Jednou ze sekcí, které jsem považoval za zvláště aktuální (zejména u knihy z roku 1975 v roce 2011), bylo Brooksovo pokrytí toho, jak může softwarový architekt ovlivnit implementaci. To může být obzvláště citlivé, když vývojář neimplementuje vizi architekta tak, jak si to architekt přál. Brooksovy tipy se zdají velmi praktické. Tvrdí, že architekt se musí vyrovnat se skutečností, že osoba provádějící kód má za tuto implementaci „tvůrčí odpovědnost“. Dále radí, aby architekt měl vždy představu o realizaci některého ze svých návrhů, ale zároveň musí být ochoten přijmout stejně dobrý alternativní přístup navržený osobou provádějící tento kodex. Brooks dále doporučuje, aby architekt učinil všechna doporučení týkající se implementace „tiše a soukromě“, „byl připraven vzdát se úvěru“ a byl ochoten vyslechnout „návrhy implementace vylepšení architektury“. Zdá se mi to jako dobrá rada na základě mých zkušeností na obou stranách tohoto vztahu.

V článku 2005 Citováno často, následováno zřídka, Brooks uvádí:

Kniha je opravdu více o managementu než o technologii. Technologie se nesmírně změnila, takže některé staré kapitoly jsou zcela nesynchronizované. Na druhou stranu se lidé příliš nezměnili. Proto jsou Homer a Shakespeare a Bible stále relevantní, protože všichni se zabývají lidskou přirozeností. Myslím, že to je součástí vysvětlení této knihy: Problémy řízení lidí v týmech se nezměnily, ačkoli médium, ve kterém lidé navrhují, a nástroje, které používají, mají. Někteří lidé knihu nazvali „bible softwarového inženýrství“. Souhlasím s tím v jednom ohledu: to znamená, že to každý cituje, někteří lidé si to přečtou a pár lidí to udělá.

Pojmy obsažené v tomto citátu mohou být nejdůležitější věcí, kterou je třeba při revizi vyjádřit Mýtický muž-měsíc. Půvabem knihy je její pokrytí a zaměření na správu lidí. To zůstalo v průběhu desetiletí nadčasové a nezměněné. Technologie se rozhodně výrazně změnily a to může být pro tuto knihu největší negativ. Brooksovy příklady založené na konkrétních produktech, nástrojích a jazycích v roce 1975 byly rozhodně ilustrativnější než dnes pro běžného čtenáře. Například jeho kniha z roku 1975 nazývá PL / I „jediným rozumným kandidátem na systémové programování dnes“. Někdy může být některé čtení trochu náročnější, protože chybí přímé zkušenosti s produkty, o nichž se zmiňuje Brooks. Ve většině případů to však nakonec není velkou překážkou, protože kniha je zaměřena na lidský prvek, který se ani nyní nezmění. V kapitole 19 Anniversary Edition Brooks uvažuje o pokračující popularitě své knihy a uvádí: „do té míry MM-M je o lidech a týmech, zastarávání by mělo být pomalé. “

The Mýtický muž-měsíc jde opravdu o velké projekty vývoje podnikového softwaru. To je důležité mít na paměti při čtení věcí, které se mohou zdát zřejmé pro někoho, kdo pracuje na malém projektu. Poslední část výše uvedeného citátu je známá: „Někteří lidé knihu nazvali„ bible softwarového inženýrství “. Souhlasím s tím v jednom ohledu: to znamená, že to každý cituje, někteří si to přečtou a pár lidí to udělá. “ Brooksova kniha je plná biblických odkazů a zjevně je obeznámen s Biblí svatou. Je smutné, že Brooksův citát „všichni to citují, někteří lidé si to přečtou a pár lidí se jimi řídí“ je dnes příliš pravdivý. Budeme to číst dál, ale bylo by hezké udělat více pro to, aby se věci změnily ve velkých projektech vývoje softwaru.

Někteří lidé to cítí Mýtický muž-měsíc je porazenecký a dokonce depresivní. Nemám stejný pocit z jeho čtení. Spíše mám pocit, že nám to připomíná, že určité chování je škodlivé a nefunkční. Také nám to připomíná, že bychom neměli čekat na „další velkou věc“, ale místo toho bychom měli i nadále vylepšovat naše řemeslo, jak nejlépe umíme. K dispozici je mnoho praktických tipů a návrhů. Brooks zjevně miluje práci v oblasti vývoje softwaru, což se ve své knize ukazuje znovu a znovu. Brooks uzavírá knihu „Epilog: Padesát let zázraků, vzrušení a radosti“, kde hovoří o tom, jak býval schopen „číst všechny deníky a sborníky z konferencí“, ale nakonec se musel vzdát konkrétních zájmů jeden po druhém jako znalosti explodovaly. Na závěr dodává: „Příliš mnoho zájmů, příliš mnoho vzrušujících příležitostí k učení, výzkumu a přemýšlení. Jaká úžasná nesnáze! Nejen, že konec není v nedohlednu, tempo se neuvolňuje. Máme mnoho budoucích radostí.“ Rozhodně souhlasím.

Původní příspěvky jsou k dispozici na //marxsoftware.blogspot.com/ (inspirováno skutečnými událostmi)

Tento příběh, „Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition“, byl původně publikován společností JavaWorld.