Recensione del libro: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

The Mythical Man-Month (MM-M) di Frederick P. Brooks, Jr. è uno dei libri più famosi in tutta la letteratura sullo sviluppo del software ed è probabilmente IL libro più famoso sulla gestione dello sviluppo del software. Ci sono già innumerevoli recensioni di questa classe, ma la rivedo di nuovo in questo post per quegli sviluppatori di software che non l'hanno letto e vogliono una piccola panoramica di cosa gli piace. Dopotutto, è il titolo numero 1 di PC al mondo nell'elenco dei dieci migliori libri informatici da non ammettere mai di non aver letto. Il titolo completo dell'edizione che sto recensendo in questo post è The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

La "Anniversary Edition" di The Mythical Man-Month (pubblicata nel 1995) aggiunge contenuti significativi al di là di quanto pubblicato nell'edizione originale nel 1975. La "Anniversary Edition" contiene il libro originale nella sua forma originale (sebbene con l'inclusione di correzioni aggiunte nella ristampa del 1982) e aggiunge quattro nuovi capitoli. I primi quindici capitoli della Anniversary Edition sono i capitoli del libro originale. I capitoli aggiunti includono il documento separato ma altrettanto famoso IFIPS (1986) / IEEE Computer Magazine (1987) di Brooks No Silver Bullet: Essence and Accidents of Software Engineering e un seguito chiamato No Silver Bullet ReFired. I capitoli 18 e 19 dell'edizione dell'anniversario si concentrano sull'auto-prospettiva di Brooks del 1995 su ciò che scrisse nel 1975.Brooks fa notare cosa ha sbagliato e cosa ha ragione (ci sono molti più casi di quest'ultimo rispetto al primo).

Ci sono numerose recensioni di The Mythical Man-Month che includono una copertura esaustiva degli argomenti e delle citazioni di questo libro (articolo di Wikipedia, Riepilogo di The Mythical Man-Month di Bernard I.Ng, Alcuni approfondimenti da The Mythical Man Month a partire dal Capitolo 11, Mythical Man-Month - Estratti I, The Mythical Man-Month - Estratti II, The Mythical Man-Month Lecture e Review / Summary of The Mythical Man-Month, per esempio). Piuttosto che ripetere una panoramica del contenuto del libro nel suo insieme, in questo post mi concentro su alcuni punti chiave e alla luce di alcune delle migliori pratiche e ideologie del software moderno.

Capitolo 19 ("Proposizioni del mitico mese dell'uomo: Vero o Falso? ") Della" Anniversary Edition "piacerà particolarmente al lettore che è impaziente o non ha il tempo di leggere l'intero libro, ma desidera avere una visione d'insieme delle affermazioni di Brooks. Perché Brooks usa questo capitolo "l'essenza del libro del 1975" in "forma schematica", le affermazioni di Brooks ("fatti e generalizzazioni di tipo empirico dall'esperienza") dal suo libro originale sono presentate in "forma cruda" (circa 20 pagine). La presenza di questo capitolo nella "Anniversary Edition" è un altro motivo per cui non scompongo il libro capitolo per capitolo. Questo capitolo non si limita a riassumere le affermazioni del libro originale; include anche alcune delle opere di Brookss Commenti del 1995 basati su altri 20 anni di osservazione e il vantaggio del senno di poi.

Nel suo post The Mythical Man Month: Book Review, Mark Needham conclude la sua recensione di questo libro con l'affermazione: "Mi è piaciuto molto leggere questo libro e vedere come molte delle idee nelle metodologie più moderne erano già note negli anni '80 e in sostanza non sono nuove idee ". Sono pienamente d'accordo con questa affermazione, anche se la verità è forse ancora più sconcertante: queste erano osservazioni in un libro pubblicato nel 1975 basato sulle esperienze di Brooks lavorando allo sviluppo di OS / 360 a metà degli anni '60 e sulle conversazioni successive a alla fine del 1960S. In altre parole, alcune delle cose che potremmo pensare siano "nuove" o "trendy" oggi esistono e sono conosciute da 45 anni o più! Come nota a margine, questo mi ricorda una presentazione di Alan M. Davis al Denver Java Users Group ("Cosa c'è di nuovo sui nuovi metodi di sviluppo software?") Alla fine del 2006 in cui ha dimostrato quante delle "nuove" metodologie e le tattiche di oggi hanno predecessori molto simili negli anni passati e il modo in cui sembriamo passare dall'uno all'altro nel corso dei decenni.

I seguenti punti fatti da Brooks sono particolarmente interessanti quando si tiene in mente il pensiero che questo libro è stato pubblicato nel 1975 sulla base di esperienze tra la metà e la fine degli anni '60 (queste citazioni sono tratte dal riassunto del capitolo 19 ma sono basati sul testo nell'edizione del 1975):

  • "I programmatori professionisti molto bravi sono dieci volte più produttivi di quelli poveri ..." [artigianato]
  • "" Una piccola squadra acuta è la cosa migliore - il minor numero di menti possibile. "[Agile]
  • "La correzione di un difetto ha una sostanziale possibilità (dal 20 al 50%) di introdurne un altro. Dopo ogni correzione, è necessario eseguire l'intera banca di casi di test precedentemente eseguiti su un sistema per garantire che non sia stato danneggiato in modo oscuro." [test di regressione]
  • "Vale la pena creare molte impalcature di debug e testare il codice, forse anche il 50 percento in più del prodotto sottoposto a debug". [unit test]
  • "Per mantenere la documentazione mantenuta, è fondamentale che sia incorporata nel programma sorgente, piuttosto che conservata come documento separato ... anche la sintassi del linguaggio di alto livello non trasmette affatto lo scopo." [Principio DRY]

Ci sono molte altre osservazioni in The Mythical Man-Month che dimostrano che Brooks e altri sviluppatori dell'epoca comprendevano molte delle stesse basi dello sviluppo software che comprendiamo (e talvolta "scopriamo" di nuovo) oggi. Molti di questi sono più noti e vengono citati in altre recensioni, quindi non li elenco qui tranne per queste citazioni da non perdere:

  • "Più progetti software sono andati male per mancanza di tempo di calendario che per tutte le altre cause combinate."
  • Legge di Brooke: "L'aggiunta di manodopera a un progetto software in ritardo lo rende più tardi."
  • "Quindi il mese-uomo come unità di misura delle dimensioni di un lavoro è un mito pericoloso e ingannevole".

Una delle sezioni che ho trovato particolarmente opportuna (specialmente per un libro del 1975 nel 2011) è stata la copertura di Brooks su come un architetto del software può influenzare l'implementazione. Ciò può essere particolarmente delicato quando la visione dell'architetto non è implementata dallo sviluppatore nel modo desiderato dall'architetto. I suggerimenti di Brooks sembrano molto pratici. Afferma che l'architetto deve venire a patti con il fatto che la persona che implementa il codice ha la "responsabilità creativa" per tale implementazione. Consiglia inoltre che l'architetto dovrebbe sempre avere un'idea di implementare uno dei suoi progetti, ma allo stesso tempo deve essere disposto ad accettare un approccio alternativo altrettanto valido proposto dalla persona che implementa il codice. Brooks raccomanda inoltre all'architetto di fornire tutti i suggerimenti riguardanti l'implementazione "in silenzio e in privato, "sii" pronto a rinunciare al credito "e sii disponibile ad ascoltare i" suggerimenti dell'implementatore per miglioramenti dell'architettura ". Questo mi sembra un buon consiglio basato sulle mie esperienze su entrambi i lati di questa relazione.

Nell'articolo del 2005 Quoted Often, Followed Rarely, Brooks afferma:

Il libro è davvero più sulla gestione che sulla tecnologia. La tecnologia è cambiata immensamente, quindi alcuni dei vecchi capitoli sono totalmente fuori sincronia. D'altra parte, le persone non sono cambiate molto. Ecco perché Omero e Shakespeare e la Bibbia sono ancora rilevanti, perché hanno tutti a che fare con la natura umana. Penso che sia parte della spiegazione di questo libro: i problemi di gestione delle persone in team non sono cambiati, sebbene lo siano il mezzo con cui le persone progettano e gli strumenti che utilizzano. Alcune persone hanno definito il libro la "bibbia dell'ingegneria del software". Sono d'accordo con questo sotto un aspetto: cioè, tutti lo citano, alcune persone lo leggono e alcune persone lo seguono.

I concetti contenuti in questa citazione possono essere la cosa più importante da trasmettere in una recensione di The Mythical Man-Month. Il fascino del libro è la sua copertura e il focus sulla gestione delle persone. Ciò è rimasto senza tempo e immutato nel corso dei decenni. Le tecnologie sono decisamente cambiate in modo significativo e questo potrebbe essere il più grande aspetto negativo di questo libro. Gli esempi di Brooks basati su prodotti, strumenti e linguaggi specifici nel 1975 erano certamente più illustrativi allora di quanto lo siano oggi per il lettore tipico. Ad esempio, il suo libro del 1975 definisce PL / I "l'unico candidato ragionevole per la programmazione del sistema oggi". A volte, alcune letture possono essere un po 'più impegnative con la mancanza di esperienza diretta con i prodotti di cui Brooks menziona. Tuttavia, nella maggior parte dei casi, questo non è un grosso ostacolo alla fine perché l'elemento umano è il fulcro del libro e questo è per lo più invariato anche ora. Nel capitolo 19 dell'edizione dell'anniversario,Brooks riflette sulla continua popolarità del suo libro e afferma: "nella misura in cuiIl MM-M riguarda persone e team, l'obsolescenza dovrebbe essere lenta ".

Il Mythical Man-Month riguarda davvero progetti di sviluppo di software aziendale di grandi dimensioni. Questo è importante da tenere a mente quando si leggono cose che possono sembrare ovvie a qualcuno che lavora su un piccolo progetto. L'ultima parte della citazione sopra è famosa: "Alcune persone hanno chiamato il libro la 'Bibbia dell'ingegneria del software'. Sono d'accordo con questo sotto un aspetto: cioè, tutti lo citano, alcune persone lo leggono e alcune persone lo seguono ". Il libro di Brooks è pieno di riferimenti biblici ed è ovviamente a conoscenza della Sacra Bibbia. Purtroppo, la citazione di Brooks "tutti la citano, alcune persone la leggono e alcuni la seguono" è fin troppo vera oggi. Continueremo a leggerlo, ma sarebbe bello fare di più per cambiare le cose nei progetti di sviluppo software su larga scala.

Alcune persone pensano che The Mythical Man-Monthè disfattista e persino deprimente. Non ho la stessa sensazione leggendolo. Piuttosto, sento che ci ricorda che alcuni comportamenti sono dannosi e disfunzionali. Ci ricorda anche che non dovremmo aspettare la "prossima grande novità", ma dovremmo invece continuare a migliorare il nostro mestiere nel miglior modo possibile. Vengono forniti molti consigli e suggerimenti pratici. Brooks ovviamente ama essere nel campo dello sviluppo di software e questo è mostrato più e più volte nel suo libro. Brooks conclude il libro "Epilogue: Fifty Years of Wonder, Excitement, and Joy", parlando di come era solito essere in grado di "leggere tutti i diari e gli atti delle conferenze", ma alla fine ha dovuto rinunciare a interessi specifici uno per uno come la conoscenza esplose. Conclude: "Troppi interessi, troppe interessanti opportunità di apprendimento,ricerca e pensiero. Che meravigliosa situazione! Non solo la fine non è in vista, il ritmo non sta rallentando. Abbiamo molte gioie future. "Sono assolutamente d'accordo.

Pubblicazione originale disponibile su //marxsoftware.blogspot.com/ (Ispirato da eventi effettivi)

Questa storia, "Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition" è stata originariamente pubblicata da JavaWorld.