ΕΠΕΙΣΟΔΙΟ 12: Μην προσπαθείς να μάθεις μια χελώνα να χορεύει...

0

Η εταιρία του Ζαχαρια, Τρία Κιλά Κώδικα ΑΕ, αποφασίζει να τον "νοικιάσει" για λίγο χρόνο έναντι ενός εξευτελιστικά τεράστιου χρηματικού ποσού σε άλλη εταιρία του κλάδου η οποία χρειάζεται επειγόντως έμπειρες συμβουλευτικές υπηρεσίες για τον τρόπο με τον οποίο γράφουν κώδικα οι developers της. Ο Ζαχαρίας δέχτηκε με χαρά την νέα του αποστολή, μια και επιτέλους, όπως πίστεψε, θα είχε το πάνω χέρι στον τρόπο με τον οποίο γράφονται οι εφαρμογές. Συν το οτι, για πρώτη φορά στη ζωή του, θα μπορούσε να ζητάει καφέ το πρωι από τη γραμματέα και η απάντηση να είναι "πώς θα τον θέλατε" και όχι "Α ναι; Το άλλο με τον Τοτό το ξέρεις;".

Α, και η γραμματέας χάρηκε με την δουλειά που ανατέθηκε στο Ζαχαρία. Ενας τρελλός λιγότερος, πάντα έχει αξία αυτό.

Ετσι, ο Ζαχαρίας φτάνει χαρούμενος για την πρώτη του μέρα στα γραφεία της ΑμαΤρεξειΣφυριξτεΜας ΑΕ, οπου έχει ραντεβού με το διευθυντή ΙΤ, κ. Κομπόλιο Οπισθοδρομόπουλο για να συζητήσουν τα τεχνικά θέματα που απασχολούν την εταιρία. 


ΚΟΟ: Καλημέρα σας κ. Δεντοφτιάχνω και καλως ήλθατε.
ΔΤΦ: Καλώς σας βρήκα. (Ανοίγει σημειωματάριο). Κ. Οπισθοδρομόπουλε, εξηγήστε μου αν θέλετε εν συντομία τα φλέγοντα θέματα.
ΚΟΟ: Κ. Δεντοφτιάχνω, ετοιμάζουμε μια νέα εφαρμογή η οποία αφορά μεγάλο πελάτη και ως εκ τούτου έχει ιδιαίτερες απαιτήσεις όσον αφορά στην απόδοση και στην επεκτασιμότητα. Θα θέλαμε τη συνδρομή σας στο σχεδιασμό και σε επιμέρους θέματα υλοποίησης. (Του περνάει ένα ογκώδες ντοσιέ) Διαβάστε αν θέλετε από τις προδιαγραφές περι τινος ακριβώς πρόκειται.
ΔΤΦ: Θα μπορούσατε να μου το περιγράψετε συνοπτικά;
ΚΟΟ: Ολες οι προδιαγραφές είναι εντός του φακέλου.
ΔΤΦ: (Ξεφυλλίζοντας) Ναι, αλλά ο φάκελος περιέχει ...χμμ...200 σελίδες! Μήπως θα μπορούσα να έχω μια πρώτη εικόνα;
ΚΟΟ: (Με ακαμπτο ύφος) Ολες οι προδιαγραφές είναι εντός του φακέλου.
ΔΤΦ: Μήπως να...
ΚΟΟ: (Με ΠΟΛΥ ακαμπτο ύφος) Ολες οι προδιαγραφές είναι εντός του φακέλου.
ΔΤΦ: (Σκεφτεται: Καλά ξεκινάμε...) Ενταξει. Δωστε μου λίγο χρόνο να τις μελετήσω και θα σας ενοχλήσω εγώ.

(Μετά από 3 ώρες εντατικής μελέτης, και με τη γραμματέα να έχει γίνει τραινάκι πηγαινοφέρνοντας καφέδες και νερά, ο Ζαχαρίας μπαίνει και πάλι στο γραφείο του κ. Οπισθοδρομόπουλου)

ΔΤΦ: (Εμφανώς ζαλισμένος) Κ. Οπισθοδρομόπουλε, οι προδιαγραφές που με αφορούν συνοψίζονται σε μια σελίδα. Τα υπόλοιπα αφορούν διαδικασίες και λοιπά δεδομένα τα οποία θα μπορούσαν να είχαν παραλειφθεί για τους σκοπούς της ενημέρωσης.
ΚΟΟ: (Ενοχλημένος) Αααα, κ. Δεντοφτιάχνω! Μην με κάνετε να έχω δεύτερες σκέψεις για την επιλογή σας ως συμβούλου μας. Θεωρώ πάντα Α-ΠΑ-ΡΑΙ-ΤΗ-ΤΟ να διαβάζει κάποιος τις πλήρεις προδιαγραφές πριν αρθρώσει οποιαδήποτε άποψη για τη σχεδίαση του λογισμικού!
ΔΤΦ: Μα εδώ έχετε ακόμα και τυπωμένες προσχεδιασμένες φόρμες!
ΚΟΟ: (Εκφραση έκπληξης) Φυσικά! Πως αλλιώς θα σχεδιάσουμε την database;
ΔΤΦ: (Πνιγεται ρουφώντας τον 8ο για σήμερα καφέ) Γκουχ γκουχ! Πως είπατε;
ΚΟΟ: Η database θα σχεδιαστεί βάσει των φορμών.
ΔΤΦ: Ξερετε...δεν ειναι αυτός ο τρόπος με τον οποίο συνήθως σχεδ...
ΚΟΟ: ΑΥΤΟΣ ειναι ο ΜΟΝΑΔΙΚΟΣ τροπος κ. Δεντοφτιαχνω! Ειμαι στο χώρο 25 χρόνια και αυτό μπορώ να σας το πω με απόλυτη σιγουριά! Εξάλλου θα θέλαμε τις τεχνικές σας συμβουλές για την υλοποίηση, οχι για τη σχεδίαση.
ΔΤΦ: Μα...(ξανασκεφτεται: 25 χρονια; Ο μονος τρόπος; Μαλλον να μην το τραβήξω παραπάνω...) Χμ, εντάξει. Θα το συζητήσουμε αργότερα. Πειτε μου για την υλοποίηση.
ΚΟΟ: Εχουμε ξεκινήσει υλοποίηση, όπως βλέπετε και στον κώδικα εδώ (γυρίζει την οθόνη προς το μέρος του)
ΔΤΦ: (Διαβάζοντας) Χμ...ενταξει, βλεπω οτι φτιαχνετε τις φόρμες και ...(παυση)...ΠΟΥ ειναι τα αντικείμενα;
ΚΟΟ: Ποιά αντικείμενα;
ΔΤΦ: (Ελαφρύ ψυχικό τραύμα) Δεν έχετε αντικείμενα; Και ο κώδικας που αποθηκεύει τα δεδομένα στην database που βρίσκεται;
KOO: Λιγο παρακάτω στη φόρμα. (Τρελλό πάτημα του page down περίπου 40 φορές)
ΔΤΦ: (Κριση, νευρικό τρέμουλο) Και οι μεταβλητές που χρησιμοποιείτε που έχουν οριστεί;
ΚΟΟ: Α, εδώ για όλες τις φόρμες (ανοίγει ένα module 500 σελίδων)
ΔΤΦ: (Συμπτώματα σχιζοφρένειας) ΟΛΑ PUBLIC;;;;
ΚΟΟ: Ναι, φυσικά!
ΔΤΦ: (Σκεφτεται: "Φυσικά;") Μαλιστα. Νομίζω οτι έχουμε αρκετή δουλειά. Μια γρήγορη πρόταση είναι να ξεκινήσουμε διερευνώντας τα tiers που μπορούν να κατασκευαστούν ωστε να φύγει όλος ο κώδικας από τη φόρμα και να υπάρξει καλύτερο encapsulation...
ΚΟΟ: Δεν καταλαβαίνω τι μου λέτε κ. Δεντοφτιάχνω. Μαλλον όμως ετοιμάζεστε να μας πειτε να γράψουμε περισσότερο κώδικα. Αφού αυτό το κομμάτι τρέχει ως έχει.
ΔΤΦ: Και για να το συντηρήσετε;
ΚΟΟ: (Κορδώνεται) Α, οι προγραμματιστές μας είναι τόσο καλοί που μπορούν να σας το ξαναγράψουν από μνήμης! Μην ανησυχείτε για αυτό. Ξέρουν που βρίσκεται το κάθε τι.
ΔΤΦ: Μα εδώ κάθε φορά που εμφανίζεται η φόρμα τραβάτε κάτι από τη database..και τωρα που λεω database, που είναι τα stored procedures?
ΚΟΟ: (Υπερήφανος) Α, δεν τα χρειαζόμαστε. Περιττός κόπος. Τα πάντα είναι ενσωματωμένα στον κώδικα.
ΔΤΦ: Τα πάντα! Και από απόδοση;
ΚΟΟ: Εχουμε φροντίσει τη βελτιστοποίηση της database.
ΔΤΦ: Πως το έχετε επιτύχει αυτό;
ΚΟΟ: (Κοντεύει να ξεχειλώσει το πουκάμισο από το κόρδωμα) Εχουμε τα κρίσιμα πεδία σε κάθε κρίσιμο πίνακα να επαναλαμβάνονται και μάλιστα έχουμε βάλει πολλά indexes. Ετσι δεν χρειάζεται να κάνουμε joins. Φυσικά (ξανα κόρδωμα) μετά από ΔΙΚΗ ΜΟΥ παρέμβαση.
ΔΤΦ: (Υφίσταται πολιτισμικό σοκ) ΤΙ;;;;;
ΚΟΟ: Διαλέγουμε οτι θέλουμε από τον πίνακα που χρειάζεται και τσουπ, να όλα μας τα data. Δική μου ιδέα.
ΔΤΦ: Εχετε ακούσει ποτέ τον όρο "κανονικοποίηση";
ΚΟΟ: Κονιοποίηση;
ΔΤΦ: Κανονικοποίηση. 
ΚΟΟ: (Εξαλλος και προσβεβλημένος) ΑΚΟΥΣΤΕ Κ.ΔΕΝΤΟΦΤΙΑΧΝΩ! ΕΜΕΝΑ ΠΟΥ ΜΕ ΒΛΕΠΕΤΕ ΠΡΙΝ ΑΠΟ 20 ΧΡΟΝΙΑ ΣΧΕΔΙΑΖΑ DATABASES ΣΕ COBOL! ΛΟΙΠΟΝ ΜΗ ΜΟΥ ΜΙΛΑΤΕ ΕΜΕΝΑ ΓΙΑ ΚΥΝΟΠΟΙΗΣΗ ΚΑΙ ΤΕΤΟΙΕΣ ΑΗΔΙΕΣ. ΑΥΤΑ ΕΙΝΑΙ ΚΑΙΝΟΥΡΙΑ ΦΡΟΥΤΑ ΤΗΣ ΜΟΔΑΣ!
ΔΤΦ: (Σκεφτεται: Με το μαλακό...) Ενταξει, ισως, αλλα σε μια σχεσιακή βάση δεδομένων...
ΚΟΟ: (Γουρλωμενα ματια, δείχνει δόντια) ΚΑΙ ΑΥΤΑ ΕΙΝΑΙ ΤΗΣ ΜΟΔΑΣ.
ΔΤΦ: Ισως ομως σε μια n-tier εφαρμογή να χρειαστεί να...
ΚΟΟ: (Με πληθώρα νευρικών τικ πλέον) Κ.ΔΕΝΤΟΦΤΙΑΧΝΩ, ΝΟΜΙΖΩ ΟΤΙ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΟΡΟΛΟΓΙΑ ΜΟΝΟ ΚΑΙ ΜΟΝΟ ΓΙΑ ΝΑ ΜΕ ΜΠΕΡΔΕΨΕΤΕ! ΣΑΣ ΖΗΤΗΣΑΜΕ ΝΑ ΕΡΘΕΤΕ ΕΔΩ ΓΙΑ ΝΑ ΜΑΣ ΔΩΣΕΤΕ ΤΕΧΝΙΚΕΣ ΣΥΜΒΟΥΛΕΣ ΟΧΙ ΓΙΑ ΝΑ ΜΑΣ ΕΝΤΥΠΩΣΙΑΣΕΤΕ! ΣΑΣ ΠΑΡΑΚΑΛΩ ΚΑΝΤΕ ΤΗ ΔΟΥΛΕΙΑ ΣΑΣ ΟΠΩΣ ΑΠΑΙΤΕΙΤΑΙ!
ΔΤΦ: (Συγκλονισμένος) Κ. Οπισθοδρομόπουλε, δεν έχω κάτι να σας προτείνω παραπάνω.
ΚΟΟ: (Φωνάζοντας) ΚΑΙ ΓΙΑΤΙ ΣΑΣ ΠΛΗΡΩΝΟΥΜΕ; ΓΙΑ ΝΑ ΜΑΣ ΛΕΤΕ ΓΙΑ ΕΝΤΙΕΡ ΚΑΙ ΚΟΝΙΟΡΤΟΠΟΙΗΣΗ ΚΑΙ ΤΕΤΟΙΕΣ ΑΗΔΙΕΣ;
ΔΤΦ: Αφου δεν δεχεστε οιαδήποτε αλλαγή στον τρόπο συγγραφής του κώδικα!
ΚΟΟ: Μα δεν μου προτείνετε κάτι ουσιώδες!
ΔΤΦ: (Σκεφτεται: Πρεπει να δικαιολογήσω τουλάχιστον την παρουσία μου εδώ) Να τολμήσω να προτείνω μια ριζοσπαστική αλλαγή;
ΚΟΟ: Σας ακούω. Μην μου πείτε μονο πάλι για enspatulation...
ΔΤΦ: Encapsulation. Οχι, δεν ήθελα να πω αυτο. Σκεφτομαι, γιατι δεν ενοποιείτε ολους τους πίνακες της database σε ένα μεγάλο πίνακα;
ΚΟΟ: (Εκπληκτος) για συνεχίστε...
ΔΤΦ: Ετσι θα έχετε μια μόνο πηγή από οπου θα διαβάζετε πληροφορίες. Θα έλεγα μάλιστα να φορτώνετε τα πάντα στη μνήμη πριν ξεκινήσει η εφαρμογή για μεγαλύτερη απόδοση.
ΚΟΟ: (Αναυδος) Η αλήθεια είναι οτι δεν το είχα σκεφτεί αυτό! Πολύ καλή ιδέα!
ΔΤΦ: Επίσης, θα πρότεινα να μην έχετε τόσο κωδικα διασπαρτο μέσα σε όλες τις φόρμες. Ενοποιήστε τις σε μια τεραστια μεγάλη φόρμα και ο κώδικας όλος μαζί στο ίδιο αρχείο. Ετσι θα είστε και πιο γρηγοροι στο user interface.
ΚΟΟ: (Στομα ανοιχτο) Εχετε απόλυτο δικιο! Πως και μέχρι τώρα δεν το είχα σκεφτεί!
ΔΤΦ: Και φυσικά πετάξτε έξω τη διαχείριση σφαλμάτων. Δεν χρειάζεται. Αν συμβεί κάτι, θα το καταλάβετε από τα μηνύματα του συστήματος. Ειναι αρκετά προηγμένα.
ΚΟΟ: ΣΩΣΤΟ! Ετσι θα επιταχύνουμε την παραγωγή. Τελεια, κ. Δεντοφτιάχνω! Τελεια!
ΔΤΦ: Και βαλτε τους προγραμματιστές σας, μια και είναι τόσο καλοί, να αποστηθίσουν απέξω όλα τα functions με αλφαβητική σειρά.
ΚΟΟ: (Ενθουσιασμένος, με μάτια να λάμπουν από χαρά) ΤΕΛΕΙΑ! Απίστευτο! Αυτό ακριβώς σκεφτηκα κι εγώ!
ΔΤΦ: Μια και το σκεφτήκατε κι εσείς, θα ήθελα να σας προτείνω κάτι τελευταίο.
ΚΟΟ: Οτι θέλετε.
ΔΤΦ: Να κρατήσετε την αρχική δική μου πρόταση σαν υπόδειγμα μη υλοποιήσιμης πρότασης και να δημιουργήσετε μια νέα εσείς, με αυτά που μόλις σας είπα, με το δικό σας όνομα από κάτω. Πρακτικά στις δικες σας ιδεες βασιστηκα οπότε θα ήταν αδικία να καρπωθώ την επιτυχία τους.
ΚΟΟ: (Κολακευμένος) Αυτό κ.Δεντοφτιάχνω είναι το καλύτερο δώρο που μπορούσατε να μου κάνετε! Το Διοικητικό Συμβούλιο θα με λατρέψει! Ευχαρίστως να γίνει έτσι, και φυσικά θα μιλήσω με τα καλύτερα λόγια για εσάς στην εταιρία σας!
ΔΤΦ: Σας ευχαριστώ πολύ. Αλήθεια, πως τον είπαμε τον πελάτη σας;
ΚΟΟ: Ο οργανισμός ΞυνομαστεΟκταωρο, ξέρετε τώρα πως ειναι αυτά. Η εφαρμογή θα πληρωθεί από χρηματοδότηση...
ΔΤΦ: Πραγμα που σημαίνει οτι ίσως και να μην χρησιμοποιηθεί.
ΚΟΟ: Ενα περίεργο πράγμα. Καμμία μας εφαρμογή δεν έχει χρησιμοποιηθεί ακόμα.
ΔΤΦ: Καλή σας μέρα και καλή παραγωγή!

Σχόλια (1) -

Pingbacks and trackbacks (3)+