Προγραμματισμός

Κριτική βιβλίου: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

Ο Μυθικός Άνθρωπος Μήνας (MM-M) του Frederick P. Brooks, Jr. είναι ένα από τα πιο διάσημα βιβλία σε όλη τη βιβλιογραφία ανάπτυξης λογισμικού και είναι αναμφισβήτητα το πιο διάσημο βιβλίο για τη διαχείριση ανάπτυξης λογισμικού. Υπάρχουν ήδη αναρίθμητες κριτικές για αυτήν την τάξη, αλλά την επανεξετάζω ξανά σε αυτήν την ανάρτηση για εκείνους τους προγραμματιστές λογισμικού που δεν το έχουν διαβάσει και θέλουν μια μικρή επισκόπηση του τι θα τους αρέσει. Σε τελική ανάλυση, είναι ο # 1 τίτλος του PC World στη λίστα των Top Ten IT Books που δεν σας αναγνώρισαν ποτέ. Ο πλήρης τίτλος της έκδοσης που εξετάζω σε αυτήν την ανάρτηση είναι The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition.

Η «Επέτειος Έκδοση» του Μυθικού Ανθρώπου-Μήνα (δημοσιεύθηκε το 1995) προσθέτει σημαντικό περιεχόμενο πάνω και πέρα ​​από αυτό που δημοσιεύθηκε στην αρχική έκδοση το 1975. Η «Επέτειος Έκδοση» περιέχει το πρωτότυπο βιβλίο στην αρχική του μορφή (αν και με τη συμπερίληψη διορθώσεων που προστέθηκαν στην ανατύπωση του 1982) και προσθέτει τέσσερα νέα κεφάλαια. Τα πρώτα δεκαπέντε κεφάλαια στην Επετειακή Έκδοση είναι τα κεφάλαια του αρχικού βιβλίου. Τα κεφάλαια που προστέθηκαν περιλαμβάνουν το ξεχωριστό αλλά εξίσου διάσημο Brooks του περιοδικού IFIPS (1986) / IEEE Computer Magazine (1987) No Silver Bullet: Essence and Accencies of Software Engineering και μια συνέχεια που ονομάζεται No Silver Bullet ReFired. Τα κεφάλαια 18 και 19 της Επετειακής Έκδοσης επικεντρώνονται στην αυτοπροοπτική του Brooks το 1995 σε αυτό που έγραψε το 1975. Ο Brooks επισημαίνει τι έκανε λάθος και τι πήρε σωστά (υπάρχουν πολύ περισσότερες περιπτώσεις του τελευταίου από το πρώτο).

Υπάρχουν πολλές κριτικές για Ο Μυθικός Άνθρωπος-Μήνας που περιλαμβάνουν εξαντλητική κάλυψη των θεμάτων και αποσπάσματα από αυτό το βιβλίο (άρθρο Wikipedia, Περίληψη The Mythical Man-Month Bernard I. Ng, Μερικές πληροφορίες από τον Μυθικό Άνθρωπο Μήνας από το Κεφάλαιο 11, Ο Μυθικός Άνθρωπος-Μήνας - Αποσπάσματα I, The Mythical Άνθρωπος-Μήνας - Αποσπάσματα II, Η Μυθική Διάλεξη Άνθρωπος-Μήνας, και Ανασκόπηση / Περίληψη του Μυθικού Άνθρωπου-Μήνα, για παράδειγμα) Αντί να επαναλάβω μια επισκόπηση του περιεχομένου του βιβλίου στο σύνολό του, επικεντρώνομαι σε αυτήν την ανάρτηση σε μερικά βασικά σημεία και υπό το φως ορισμένων σύγχρονων βέλτιστων πρακτικών και ιδεολογιών λογισμικού.

Κεφάλαιο 19 ("Προτάσεις της Ο Μυθικός Άνθρωπος-Μήνας: Αληθινό ή λάθος; ") της" Επέτειος Έκδοση "θα προσελκύσει ιδιαίτερα τον αναγνώστη που είναι ανυπόμονος ή δεν έχει χρόνο να διαβάσει ολόκληρο το βιβλίο, αλλά θέλει να πάρει μια συνολική εικόνα των ισχυρισμών του Brooks. Επειδή ο Brooks χρησιμοποιεί αυτό το κεφάλαιο για να παρουσιάσει "Η ουσία του βιβλίου του 1975" σε "μορφή διάρθρωσης", οι ισχυρισμοί του Brooks ("γεγονότα και γενικεύσεις τύπου εμπειρίας από την εμπειρία") από το αρχικό του βιβλίο παρουσιάζονται σε "έντονη μορφή" (περίπου 20 σελίδες). Η παρουσία αυτού του κεφαλαίου στην «Επέτειος Έκδοση» είναι ένας άλλος λόγος που δεν αναλύω εδώ το κεφάλαιο ανά κεφάλαιο. Αυτό το κεφάλαιο κάνει κάτι περισσότερο από απλώς να συνοψίσει τους ισχυρισμούς από το αρχικό βιβλίο · περιλαμβάνει επίσης μερικά από τα σχόλια του Brooks το 1995 με βάση 20 ακόμη χρόνια παρατήρησης και το όφελος της οπίσθιας όρασης.

Στην ανάρτησή του The Mythical Man Month: Book Review, ο Mark Needham ολοκληρώνει την αναθεώρησή του για αυτό το βιβλίο με τη δήλωση: «Μου άρεσε πολύ να διαβάζω αυτό το βιβλίο και να βλέπω πως πολλές από τις ιδέες σε πιο σύγχρονες μεθοδολογίες ήταν ήδη γνωστές στη δεκαετία του 1980 και δεν είναι στην ουσία νέες ιδέες. " Συμφωνώ ολόψυχα με αυτήν τη δήλωση, αν και η αλήθεια είναι πιθανώς ακόμη πιο συγκλονιστική: αυτές ήταν παρατηρήσεις σε ένα βιβλίο δημοσιευτηκε σε 1975 με βάση τις εμπειρίες του Brooks στην ανάπτυξη OS / 360 στο μέσα του 1960s και σε επόμενες συνομιλίες στο τέλη του 1960μικρό. Με άλλα λόγια, μερικά από τα πράγματα που μπορεί να πιστεύουμε ότι είναι "καινούργια" ή "μοντέρνα" σήμερα υπάρχουν και είναι γνωστά εδώ και 45 χρόνια ή περισσότερα! Ως δευτερεύουσα σημείωση, αυτό μου θυμίζει μια παρουσίαση του Alan M. Davis στην ομάδα χρηστών του Denver Java ("Τι νέο υπάρχει σχετικά με τις νέες μεθόδους ανάπτυξης λογισμικού;") στα τέλη του 2006, όπου έδειξε πόσες από τις "νέες" μεθοδολογίες και Οι τακτικές της σημερινής τεχνολογίας έχουν πολύ παρόμοιους προκάτοχους τα τελευταία χρόνια και πώς μοιάζουμε μεταξύ τους για δεκαετίες.

Τα ακόλουθα σημεία που έθεσε ο Brooks είναι ιδιαίτερα ενδιαφέρον όταν κάποιος διατηρεί τη σκέψη στο μυαλό του ότι αυτό το βιβλίο εκδόθηκε το 1975 με βάση τις εμπειρίες στα μέσα έως τα τέλη της δεκαετίας του 1960 (αυτά τα αποσπάσματα προέρχονται από τη σύνοψη του Κεφαλαίου 19 αλλά βασίζονται σε κείμενο στην έκδοση του 1975):

  • "Είναι πολύ καλοί επαγγελματίες προγραμματιστές δεκα φορες τόσο παραγωγικό όσο και φτωχοί ... "[χειροτεχνία]
  • "" Μια μικρή κοφτερή ομάδα είναι καλύτερη - όσο το δυνατόν λιγότερα μυαλά. "[Ευκίνητος]
  • "Η επιδιόρθωση ενός ελαττώματος έχει σημαντική πιθανότητα (20 έως 50 τοις εκατό) να εισαγάγει μια άλλη. Μετά από κάθε επιδιόρθωση, πρέπει να εκτελέσετε ολόκληρη τη σειρά δοκιμαστικών περιπτώσεων που είχαν προηγουμένως εκτελεστεί σε ένα σύστημα για να διασφαλιστεί ότι δεν έχει καταστραφεί με ασαφή τρόπο." [δοκιμή παλινδρόμησης]
  • "Αξίζει να χτίσουμε πολλά ικριώματα εντοπισμού σφαλμάτων και κώδικα δοκιμής, ίσως ακόμη και 50 τοις εκατό όσο το προϊόν που εντοπίζεται." [δοκιμή μονάδας]
  • "Για να διατηρηθεί η τεκμηρίωση, είναι ζωτικής σημασίας να ενσωματωθεί στο πρόγραμμα προέλευσης, αντί να διατηρηθεί ως ξεχωριστό έγγραφο ... ακόμη και η σύνταξη γλώσσας υψηλού επιπέδου δεν μεταφέρει καθόλου σκοπό." [Αρχή της ΞΗΡΑ]

Υπάρχουν πολλές ακόμη παρατηρήσεις στο The Mythical Man-Month που δείχνουν ότι οι Brooks και άλλοι προγραμματιστές της εποχής κατάλαβαν πολλά από τα ίδια βασικά στοιχεία της ανάπτυξης λογισμικού που καταλαβαίνουμε (και μερικές φορές "ανακαλύπτουμε" ξανά) σήμερα. Πολλά από αυτά είναι πιο γνωστά και καλούνται σε άλλες κριτικές και έτσι δεν τα αναφέρω εδώ εκτός από αυτά τα αποσπάσματα που πρέπει να απαριθμηθούν:

  • "Περισσότερα προγράμματα λογισμικού έχουν καθυστερήσει λόγω έλλειψης ημερολογιακού χρόνου από ό, τι για όλες τις άλλες αιτίες σε συνδυασμό."
  • Ο νόμος του Brooke: "Η προσθήκη ανθρώπινου δυναμικού σε ένα έργο λογισμικού αργότερα το καθιστά αργότερα."
  • "Ως εκ τούτου, ο άνθρωπος-μήνας ως μονάδα μέτρησης του μεγέθους μιας εργασίας είναι ένας επικίνδυνος και παραπλανητικός μύθος."

Μία από τις ενότητες που βρήκα ιδιαίτερα επίκαιρη (ειδικά για ένα βιβλίο του 1975 το 2011) ήταν η κάλυψη του Brooks για το πώς ένας αρχιτέκτονας λογισμικού μπορεί να επηρεάσει την εφαρμογή. Αυτό μπορεί να είναι ιδιαίτερα ευαίσθητο όταν το όραμα του αρχιτέκτονα δεν υλοποιείται από τον προγραμματιστή με τον τρόπο που επιθυμεί ο αρχιτέκτονας. Οι συμβουλές του Brooks φαίνονται πολύ πρακτικές. Δηλώνει ότι ο αρχιτέκτονας πρέπει να συμβιβαστεί με το γεγονός ότι το άτομο που εφαρμόζει τον κώδικα έχει «δημιουργική ευθύνη» για αυτήν την εφαρμογή. Επιπλέον συμβουλεύει ότι ο αρχιτέκτονας θα πρέπει πάντα να έχει την ιδέα να εφαρμόσει οποιοδήποτε από τα σχέδιά του, αλλά ταυτόχρονα πρέπει να είναι πρόθυμος να δεχτεί μια εξίσου καλή εναλλακτική προσέγγιση που προτείνει το άτομο που εφαρμόζει τον κώδικα. Ο Brooks προτείνει επιπλέον ο αρχιτέκτονας να κάνει όλες τις προτάσεις σχετικά με την εφαρμογή "ήσυχα και ιδιωτικά", "να είναι έτοιμος να παραιτηθεί από την πίστωση" και να είναι πρόθυμος να ακούσει τις "προτάσεις του υλοποιητή για βελτιώσεις αρχιτεκτονικής". Αυτό μου φαίνεται σαν ορθή συμβουλή με βάση τις εμπειρίες μου και από τις δύο πλευρές αυτής της σχέσης.

Στο άρθρο του 2005 που αναφέρεται συχνά και ακολουθείται σπάνια, ο Brooks δηλώνει:

Το βιβλίο είναι πολύ περισσότερο για τη διαχείριση παρά για την τεχνολογία. Η τεχνολογία έχει αλλάξει πάρα πολύ, οπότε ορισμένα από τα παλιά κεφάλαια είναι εντελώς εκτός συγχρονισμού. Από την άλλη πλευρά, οι άνθρωποι δεν έχουν αλλάξει πολύ. Αυτός είναι ο λόγος για τον οποίο ο Όμηρος και ο Σαίξπηρ και η Βίβλος εξακολουθούν να σχετίζονται, επειδή όλοι ασχολούνται με την ανθρώπινη φύση. Νομίζω ότι αυτό είναι μέρος της εξήγησης για αυτό το βιβλίο: Τα προβλήματα της διαχείρισης ατόμων σε ομάδες δεν έχουν αλλάξει, αν και το μέσο στο οποίο οι άνθρωποι σχεδιάζουν και τα εργαλεία που χρησιμοποιούν έχουν. Κάποιοι χαρακτήρισαν το βιβλίο «Βίβλο της μηχανικής λογισμικού». Θα συμφωνούσα με αυτό από μία άποψη: δηλαδή, όλοι το παραθέτουν, κάποιοι το διαβάζουν και λίγοι το ακολουθούν.

Οι έννοιες που περιέχονται σε αυτό το απόσπασμα μπορεί να είναι το πιο σημαντικό πράγμα που πρέπει να μεταφέρετε σε μια ανασκόπηση του Ο Μυθικός Άνθρωπος-Μήνας. Η έκκληση του βιβλίου είναι η κάλυψη και η εστίασή του στη διαχείριση ανθρώπων. Αυτό παρέμεινε διαχρονικό και αμετάβλητο τις δεκαετίες. Οι τεχνολογίες έχουν αλλάξει σίγουρα σημαντικά και αυτό μπορεί να είναι το μεγαλύτερο αρνητικό σε αυτό το βιβλίο. Τα παραδείγματα του Brooks που βασίζονται σε συγκεκριμένα προϊόντα, εργαλεία και γλώσσες το 1975 ήταν σίγουρα πιο ενδεικτικά από ό, τι είναι σήμερα για τον τυπικό αναγνώστη. Για παράδειγμα, το βιβλίο του 1975 ονομάζει PL / I "τον μοναδικό λογικό υποψήφιο για προγραμματισμό συστήματος σήμερα". Μερικές φορές, κάποια από τα στοιχεία ανάγνωσης μπορεί να είναι λίγο πιο δύσκολη με την έλλειψη άμεσης εμπειρίας με τα προϊόντα για τα οποία αναφέρει ο Brooks. Ωστόσο, στις περισσότερες περιπτώσεις, αυτό δεν αποτελεί μεγάλο εμπόδιο στο τέλος, επειδή το ανθρώπινο στοιχείο είναι το επίκεντρο του βιβλίου και αυτό είναι ως επί το πλείστον αμετάβλητο ακόμη και τώρα. Στο Κεφάλαιο 19 της Επετειακής Έκδοσης, ο Μπρουκς αντανακλά τη συνεχιζόμενη δημοτικότητα του βιβλίου του και δηλώνει: "στο βαθμό που Το MM-M αφορά τους ανθρώπους και τις ομάδες, η απαρχαιότητα πρέπει να είναι αργή. "

ο Μυθικός άνθρωπος-μήνας αφορά πραγματικά πολύ μεγάλα προγράμματα ανάπτυξης λογισμικού για επιχειρήσεις. Αυτό είναι σημαντικό να θυμάστε όταν διαβάζετε πράγματα που μπορεί να φαίνονται προφανή σε κάποιον που εργάζεται σε ένα μικρό έργο. Το τελευταίο μέρος του παραπάνω αποσπάσματος είναι διάσημο: "Μερικοί άνθρωποι έχουν ονομάσει το βιβλίο" Βίβλος της μηχανικής λογισμικού ". Θα συμφωνούσα με αυτό από μία άποψη: δηλαδή, όλοι το παραθέτουν, μερικοί άνθρωποι το διαβάζουν και μερικοί άνθρωποι το ακολουθούν. " Το βιβλίο του Μπρουκς είναι γεμάτο με Βιβλικές αναφορές και προφανώς γνωρίζει την Αγία Γραφή. Δυστυχώς, το απόσπασμα του Μπρουκς "όλοι το παραθέτουν, κάποιοι το διαβάζουν και λίγοι το περνούν" είναι πολύ αλήθεια σήμερα. Θα συνεχίσουμε να το διαβάζουμε, αλλά θα ήταν ωραίο να κάνουμε περισσότερα για να αλλάξουμε πράγματα σε έργα ανάπτυξης λογισμικού μεγάλης κλίμακας.

Μερικοί άνθρωποι το αισθάνονται αυτό Ο Μυθικός Άνθρωπος-Μήνας είναι νικητής και ακόμη και καταθλιπτικός. Δεν έχω το ίδιο συναίσθημα όταν το διαβάζω. Αντιθέτως, πιστεύω ότι μας θυμίζει ότι ορισμένες συμπεριφορές είναι επιζήμιες και δυσλειτουργικές. Μας υπενθυμίζει επίσης ότι δεν πρέπει να περιμένουμε το "επόμενο μεγάλο πράγμα", αλλά πρέπει να συνεχίσουμε να βελτιώνουμε την τέχνη μας όσο καλύτερα μπορούμε. Παρέχονται πολλές πρακτικές συμβουλές και προτάσεις. Ο Brooks αγαπά προφανώς ότι βρίσκεται στον τομέα ανάπτυξης λογισμικού και αυτό εμφανίζεται ξανά και ξανά στο βιβλίο του. Ο Μπρουκς ολοκληρώνει το βιβλίο του "Επίλογος: Πενήντα Χρόνια Θαύματος, Ενθουσιασμού και Χαράς", μιλώντας για το πώς ήταν σε θέση να "διαβάσει όλα τα περιοδικά και τις εργασίες του συνεδρίου", αλλά τελικά έπρεπε να εγκαταλείψει συγκεκριμένα ενδιαφέροντα ένα προς ένα ως το η γνώση εξερράγη. Καταλήγει, «Πάρα πολλά ενδιαφέροντα, πάρα πολλές συναρπαστικές ευκαιρίες για μάθηση, έρευνα και σκέψη. Τι θαυμάσια κατάσταση! Όχι μόνο το τέλος δεν είναι ορατό, ο ρυθμός δεν επιβραδύνεται. Έχουμε πολλές μελλοντικές χαρές». Συμφωνώ σίγουρα.

Η αρχική ανάρτηση διατίθεται στη διεύθυνση //marxsoftware.blogspot.com/ (Εμπνευσμένη από τις πραγματικές εκδηλώσεις)

Αυτή η ιστορία, "Book Review: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition" δημοσιεύθηκε αρχικά από την JavaWorld.

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