ΕΠΕΙΣΟΔΙΟ 25: Φοβού τον προϊστάμενό σου και κώδικα γράφοντα.

0

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

..εντάξει, "οτιδήποτε άλλο" όταν αναφερόμαστε στην Τούλα είναι μόδα, night clubs, μόδα, μόδα, μοδα, και τα τελευταία μοντέλα κινητών τηλεφώνων. Και μόδα.

Καλό ήταν όμως και αυτό. Εξάλλου, ποιός δίνει σημασία στο ΓΙΑ ΤΙ μιλάει η Τούλα; Οπως έχουμε ξαναπεί, η πειθώ της ειναι άμεσα και αντίστροφα συσχετισμένη με το μάκρος της φούστας της.

Πρώτη μέρα λοιπόν στο γραφείο. Ο φραπέ ξεχειλίζει από τα παγάκια και ο Ζαχαρίας, ήρεμος και ξεκούραστος, επιχειρεί να ρουφήξει την πρώτη γουλιά...
Πράγμα το οποίο καταφέρνει εν μέρει μια και η εισβολή του Απόλυτου Ξερόλα, του R&D Manager της Τρια Κιλά Κώδικα Α.Ε., έχει ως αποτέλεσμα την εκτίναξη του τρομαγμένου Ζαχαρία από την καρέκλα του και την προσγείωση του φραπέ στο παντελόνι του.

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

(Ανοίγει τον κώδικα...
...και μένει με το στόμα ανοιχτό ωσάν πελαργός που του είπαν οτι δεν φέρνει αυτός τα παιδιά)

ΑΠΞ
: Ορίστε. Απλό δεν ειναι;
ΔΤΦ: (Ξύνοντας το κεφάλι του) Απόλυτε, γιατί οι μεταβλητές έχουν ονόματα metabliti1, metabliti2 ως metabliti260;
ΑΠΞ: (Εκφραση μεγάλης έκπληξης) Μα δεν εχει σημασία! Αφού με το intellisense βλέπεις τι κάνει. Εχω βάλει comments.
ΔΤΦ: Για να δω..

/*
Metabliti234
Holds the results of metabliti34 after it is passed to synartisi354.
If metabliti66 is not true, then metabliti234 is empty.
*/

ΔΤΦ: ...
ΔΤΦ: (Αφρίζοντας) Synartisi354; Εχεις 354 συναρτήσεις ΜΕ ΑΥΤΑ ΤΑ ΟΝΟΜΑΤΑ;
ΑΠΞ: Εεε, οχι. Εχω 350. Οι 4 είναι άδειες, αλλά δεν θυμάμαι ποιές είναι. Θα τις βρείς όμως, ετσι;
ΔΤΦ: ...
ΑΠΞ: Α, επίσης εβγαλα αυτές τις βλακείες που απαιτούσαν να τις εγκαταστήσεις στο COM+...έκαναν δύσκολη την εγκατάσταση. Ετσι θα διευκολύνουμε τους τεχνικούς μας. Και ο κ. Αερολόγος Κοπανιστόπουλος, ο marketing manager μας συμφώνησε με αυτή την κίνηση.
ΔΤΦ: (Απελπισμένος) Μήπως Απόλυτε να καταργούσαμε και τον SQL Server και να βάλουμε Access που είναι πιό εύκολη;
ΑΠΞ: Θαυμάσιο! Πως και δεν το σκέφτηκε ο Κοπανιστόπουλος; Κατσε να τον πάρω ένα τηλέφωνο να του το πω να τον τρελλάνω.
ΔΤΦ: Εμ, Απόλυτε;
ΑΠΞ: Ναι;
ΔΤΦ: (Ταπεινά) Δεν θέλω να σου κλέψω τη δόξα...προτείνω αφού το ξεκίνησες να το υλοποιήσεις εσύ και να ασχοληθώ εγώ με κάποια πιό ταπεινά πράγματα όπως κάτι βλακείες για MVC και κάτι άλλα distributed συστήματα που εκκρεμούν. Τι λες;
ΑΠΞ: Εεε, έχεις δίκιο! Ετσι κι αλλιώς δεν χρειάζεται πολύ. Θα το ολοκληρώσω μέχρι αύριο.
ΔΤΦ: Μέχρι ΑΥΡΙΟ; Δεν θα το περάσεις από testing;
ΑΠΞ: Testing; Ναι, φυσικά. Θα βαλω την Τούλα να το δοκιμάσει και αν καταφέρει να ολοκληρώσει μια εγγραφή όλα πάνε καλά. Ο πελάτης θα είναι ικανοποιημένος.
ΔΤΦ: (Σκέφτεται: Τουλάχιστον τη γλύτωσα γι'αυτή τη φορα). Ok, ok, οπως επιθυμείς Απόλυτε. Καλή τύχη.

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

(Η πόρτα ανοίγει με ταχύτητα και ο Απόλυτος, σκοντάφτοντας πάνω στη φούρια του, πέφτει φαρδύς πλατύς επάνω στο Ζαχαρία. Το αναψυκτικό προσγειώνεται για άλλη μια φορά στο παντελόνι του, ενώ η μουστάρδα από το ιπτάμενο σαντουιτς καταλήγει στα μαλλιά του).

ΔΤΦ: ΜΑ ΤΙ...
ΑΠΞ: Δροσιά, δροσιά.
ΔΤΦ: ΜΥΡΜΗΓΚΙΑ ΘΑ ΠΙΑΣΩ! Δεν μπορείς να προσέχεις λίγο;
ΑΠΞ: Ελα, ελα, αστα αυτά τώρα, έχουμε ΧΟΝΤΡΟ πρόβλημα! Η εφαρμογή τρέχει απελπιστικά αργά και κρασάρει οταν μπαίνουν πάνω από 3 χρήστες ταυτόχρονα. Ο Κοπανιστόπουλος τους είπε οτι αυτό είναι feature και οτι αν θέλουν να έχουν πραγματικό multitasking θα πρέπει να το πληρώσουν, και δέχτηκαν. Αν και δεν καταλαβαίνω, μου φαίνεται σωστή η προσέγγιση. Θέλουν την καινούρια εφαρμογή ως την άλλη εβδομάδα.
ΔΤΦ: (Σκουπίζοντας ο,τι μπορεί από το κατεστραμμένο παντελόνι του) Ωραία, θα γυρίσω πίσω στην προηγούμενη version από το SourceSafe, θα υλοποιήσω και πάλι τις νέες λειτουργίες και θα κάνω ο,τι καλύτερο μπορώ...
ΑΠΞ: Τι είναι αυτό που είπες; το Σουρσέιφ;
ΔΤΦ: Ναι.
ΑΠΞ: Α, αποφάσισα να το καταργήσω. Επιανε πολύ χώρο στους δίσκους μας.
ΔΤΦ: ...
ΔΤΦ: (Σε κατάσταση παραφροσύνης 1.0) ΘΕΛΕΙΣ ΝΑ ΜΟΥ ΠΕΙΣ ΟΤΙ Ο ΠΑΛΙΟΣ ΚΩΔΙΚΑΣ ΔΕΝ ΥΠΑΡΧΕΙ ΚΑΙ ΘΑ ΠΡΕΠΕΙ ΝΑ ΚΑΝΩ ΑΝΑΠΤΥΞΗ ΣΤΟ ΝΕΟ ΚΩΔΙΚΑ ΜΕ ΜΕΤΑΒΛΗΤΕΣ ΠΟΥ ΕΧΟΥΝ ΟΝΟΜΑΤΑ METABLITI ΚΑΙ FUNCTIONS ΠΟΥ ΕΧΟΥΝ ΟΝΟΜΑΤΑ SYNARTISI;;;
ΑΠΞ: Μια χαρά είναι. Γιατί; Αφού τα ονόματα είναι self-describing! Ολο προβλήματα φέρνεις, Ζαχαρία.
ΔΤΦ: ...

Μετά από μια εβδομάδα χυδαίου υβρεολογίου και αλόγιστης κατανάλωσης δυνατών αλκοολούχων ποτών ο Ζαχαρίας έχει ολοκληρώσει τα νέα features της εφαρμογής και συναντιέται με τον Απόλυτο για να εξετάσουν.

ΑΠΞ: (Κοιτώντας την εφαρμογή) Ω, τέλεια! Ειδες λοιπόν που γκρίνιαζες; Μια χαρά δουλεύει!
ΔΤΦ: Ναι, αλλα μου βγήκε η πίστη...
ΑΠΞ: Ε, ο προγραμματισμός θέλει θυσίες Ζαχαρία. Ακου και μένα που τα έχω περάσει αυτά. Εισαι μικρός ακόμα, θα μάθεις.
ΔΤΦ: (Προσπαθεί να συγκρατήσει μια ακαταμάχητη τάση να βιαιοπραγήσει χρησιμοποιώντας σαν όπλο τον καλόγερο για τα ρούχα)
ΑΠΞ: Ο κ. Κοπανιστόπουλος είχε μια ΑΚΟΜΑ καταπληκτική ιδέα!
ΔΤΦ: (Παίρνοντας αμυντική στάση άθελά του) Τι πάλι;
ΑΠΞ: Ακουγοντάς σε να βρίζεις όλη την προηγούμενη εβδομάδα απόρησε και έστησε αυτί. Αν εξαιρέσουμε τις κατάρες που εκτόξευες για μένα και τις σπουδές μου, τις οποίες είμαι συνηθισμένος να ακούω μια και όλοι εσείς οι κατώτεροι developers δεν μπορείτε να κατανοήσετε το βαθύτερο νόημα του software design, κατάλαβε οτι ο κώδικας ηταν...κάπως κρυπτικός, αν και δεν μπορώ ειλικρινά να καταλάβω από που το συμπέρανε αυτό.
ΔΤΦ: ...
ΑΠΞ: Σκέφτηκε λοιπον ΝΑ ΔΩΣΟΥΜΕ ΤΟΝ SOURCE ΚΩΔΙΚΑ ΣΤΟΝ ΠΕΛΑΤΗ ΔΩΡΕΑΝ!
ΔΤΦ: (Αναπηδώντας) ΤΙ;
ΑΠΞ: ΝΑΙ! Ετσι κι αλλιώς απο ο,τι κατάλαβε ο κ. Κοπανιστόπουλος, κανείς δεν πρόκειται να δουλέψει αυτόν τον κώδικα εκτος από εσένα. Ο πελάτης θα πιστέψει οτι κάνουμε μια πρώτης τάξεως προσφορά και αν αντιμετωπίσει προβλήματα, τελικά πάλι σε εμάς θα καταλήξει!
ΔΤΦ: Μα Απόλυτε, είναι κακό για την εταιρία μας...
ΑΠΞ: Πφφφτ, σιγα. Εχω δεί χειρότερο κώδικα.
ΔΤΦ: (Δύσπιστα) Εχεις ε;
ΑΠΞ: Ναι, φαντάσου οτι το CRM του ανταγωνιστή μας, της ΠεντεΟκάδεςΑντικείμενα ΑΕ είναι γεμάτο classes που σε μπερδεύουν. Και κατι ονόματα...DbConnectionFactory, CustomerDecorator, ICachedData...μιλάμε για ακατανόητα πράγματα. Ποιός να το πιάσει αυτό και τι να καταλάβει;
ΔΤΦ: (Κρυφογελώντας) Εεεεε, ναι...(προσπαθώντας να μείνει σοβαρός)...μα τι ασχετοι ε Απόλυτε, ΜΠΟΥΑΧΑΧεεεσυγνώμη...
ΑΠΞ: (Σοβαρότατος) Ενώ ο δικός μας κώδικας ειναι απλούστατος! Οι μεταβλητές ονομάζονται metabliti, οι συναρτήσεις synartisi, ολα καλά. Ξερεις με τι έχεις να κάνεις.
ΔΤΦ: Εεε...
ΑΠΞ: Τι;
ΔΤΦ: ...οχι πια.
ΑΠΞ: Δηλαδή;
ΔΤΦ: Εεε, άλλαξα αρκετά πράγματα...
ΑΠΞ: Οπως;
ΔΤΦ: Εεε, εφτιαξα ένα dbConnectionFactory, ένα CustomerDecorator, υλοποίησα το ICachedData, χρησιμοποιησα design patterns και αλλού, πλήρες redesign.
ΑΠΞ: Και ριφάκτουρι;
ΔΤΦ: Και refactoring.
ΑΠΞ: ΜΑΣ ΚΑΤΕΣΤΡΕΨΕΣ! Και τωρα πώς θα χαρίσουμε τον κώδικα στον πελάτη;
ΔΤΦ: ...
ΑΠΞ: (Κατόπιν ώριμης σκέψεως διάρκειας 1") ΤΟ ΒΡΗΚΑ! Ειμαι καταπληκτικός, όπως πάντα.
ΔΤΦ: Τι ακριβώς;
ΑΠΞ: Μαζικό search / replace. Οπου Connection, βάλε Customer. Οπου Data, βάλε Stream. Οπου Factory βάλε Cache. Και ούτω καθ'εξής.
ΔΤΦ: Μα...
ΑΠΞ: Και μερικές άσχετες λέξεις. Βαλε dog, cat, table, κάτι.
ΔΤΦ: Μα..
ΑΠΞ: ΟΥΤΕ ΣΥΖΗΤΗΣΗ! Θα το δώσουμε στον πελάτη έτσι, ωστε να μας έχει ανάγκη! Ακόμα κάθεσαι;

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

Νομίζετε οτι γλύτωσε;

ΕΙΣΤΕ ΣΟΒΑΡΟΙ;

Το απόγευμα της επόμενης ημέρας από την εγκατάσταση ο Απόλυτος Ξερόλας μπουκάρει ξανά με ταχύτητα στο γραφείο του Ζαχαρία. Αυτή τη φορά, ο Ζαχαρίας, υποψιασμένος, πετάει επάνω στον Απόλυτο το πλαστικό ποτήρι με τον καφέ για να σταματήσει την ξέφρενη πορεία του. Εκείνη την ώρα ο Απόλυτος σκοντάφτει και πάλι και με μια μαγική κίνηση αποκρούει το ποτήρι το οποίο επιστρέφει απευθείας στο παντελόνι του Ζαχαρία. Το καθαριστήριό του έχει κάνει χρυσές δουλειές αυτό το μήνα.

ΔΤΦ: ΠΡΟΣΕΧΕ βρε παιδί μου...αντε παλι...(καθαρίζει ο,τι μπορεί)
ΑΠΞ: Δροσια, δροσιά. Ελα, αστο αυτό τώρα. Καλοκαίρι είναι. Εχουμε πρόβλημα με την εφαρμογή.
ΔΤΦ: Τι;
ΑΠΞ: Ενα μήνυμα βγαίνει όταν ο χρήστης επιχειρεί να καταχωρήσει νέους πελάτες.
ΔΤΦ: Και τι λέει το μήνυμα;
ΑΠΞ: Error in CacheTableStreamDogForCatInterface. Dog not found. Please insert cat.
ΔΤΦ: (Προσπαθώντας να μην ξεσπάσει σε υστερικά γέλια) Α, δεν είναι τίποτα. Ευτυχώς πριν κάνω τις αλλαγές που μου είπες με τα περίεργα ονόματα κράτησα τη δική μου έκδοση στο SourceSafe. Θα την αλλάξω από εκεί...
ΑΠΞ: Εεεε...
ΔΤΦ: Τι;
ΑΠΞ: Σουρσέιφ είπες;
ΔΤΦ: Ναι. Ξερεις, εκεί που αποθηκεύουμε τον κώδικα και κάνουμε checkin - checkout...
ΑΠΞ: Α, αυτό κανει λοιπόν!
ΔΤΦ: (Αγωνιωδώς) Ε;
ΑΠΞ: Εεε...ειδα που είχε ξαναμπεί και το ξανάσβησα. Νομιζα οτι ήταν ιός γιατί την πρώτη φορά το είχα σβήσει.
ΔΤΦ: (Με ύφος ισοβίτη που του αρνήθηκαν την αίτηση αποφυλάκισης για 100ή φορά) ΕΓΩ ΤΟ ΞΑΝΑΣΤΗΣΑ ΑΠΟΛΥΤΕ! ΓΙΑ ΤΗΝ ΕΦΑΡΜΟΓΗ!
ΑΠΞ: Ε, δεν πειράζει. Τωρα που το ξέρω την επόμενη φορά δεν θα το σβήσω. Αντε, προχώρα με τις αλλαγές τώρα γιατί ο πελάτης το θέλει αύριο πρωι - πρωι.
ΔΤΦ: (Απελπισμένα) ΜΑ ΕΙΝΑΙ 6 Η ΩΡΑ ΤΟ ΑΠΟΓΕΥΜΑ ΚΑΙ Ο ΜΟΝΟΣ ΚΩΔΙΚΑΣ ΠΟΥ ΕΧΩ ΛΕΕΙ ΓΙΑ ΓΑΤΕΣ ΚΑΙ ΣΚΥΛΟΥΣ!
ΑΠΞ: Αααα, Ζαχαρία, ας πρόσεχες. Δεν κράτησες backup του αρχικού κώδικά σου;
ΔΤΦ: ΚΡΑΤΗΣΑ ΣΤΟ SOURCESAF....καλά, αστο καλύτερα.
ΑΠΞ: (Με ύφος πεπειραμένου διδασκάλου και το δάχτυλο να κουνιέται πέρα δώθε) Ειναι σημαντικό να κρατάς backup του αρχικού κώδικα. Εγώ θα στα μαθαίνω όλα; Εγώ κάθε βράδυ κάνω backup σε δισκέτα.
ΔΤΦ: ΣΕ ΤΙ;
ΑΠΞ: Σε δισκέτα. Τι σουρσειφ και αηδίες. Το ασφαλέστερο μέσο είναι η δισκέτα.
ΔΤΦ: (Προσπαθεί να διαλέξει ανάμεσα στο να καταπνίξει την οργή του και να καταπνίξει τον Απόλυτο)
ΑΠΞ: Αντε, αντε, μην καθυστερείς. Εχουμε μόνο 15 ώρες ως τις 9 το πρωι αυριο που πρέπει να είναι έτοιμο.
ΔΤΦ: ...

Και έτσι ο Ζαχαρίας άρχισε να κάνει debug τις μόνες υπαρκτές κλάσεις που είχε στη διάθεσή του με ονόματα όπως clsRioAntirio και frmFriskies. Με τη βοήθεια της τύχης κατάφερε να διορθώσει το bug και βρήκε και λίγο χρόνο για να εκδικηθεί τον Απόλυτο. Συγκεκριμένα, εισέβαλλε στο γραφείο του με σκοπό να βρεί τις ΔΙΣΚΕΤΕΣ των backup του και να τις καταστρέψει ανεπανόρθωτα, αλλα αυτό δεν χρειάστηκε μια και ο Απόλυτος έχει τοοθετήσει εδώ και αρκετούς μήνες τη θήκη αποθήκευσης των δισκετών επάνω στο μονίμως ανοιχτο subwoofer του καινούριου του ηχοσυστήματος.

Ο Ζαχαρίας αντ'αυτού αποφάσισε τελικά να αποσυνδέσει το καλωδιο δεδομένων από το σκληρό δίσκο του υπολογιστή του Απόλυτου. Η εταιρία έχει ξοδέψει μέχρι στιγμής 1000 ευρώ σε αμοιβές τηλεφωνικής υποστήριξης προκειμένου να διαπιστωθεί το σημαντικότατο πρόβλημα που αντιμετώπισε ο Απόλυτος με τη "Μαύρη Οθονη που κανει Μπιπ" του PC του.

Ο πελάτης άλλαξε εταιρία.

Ο Ζαχαρίας δεν άλλαξε εταιρία, αν και το σκέφτηκε για πολλοστή φορά. Βλέπετε, η Τούλα προσφέρθηκε να τον βοηθάει στο late-night debugging του από εδώ και πέρα. Για πρώτη φορά στα χρονικά, ο Ζαχαρίας είναι χαρούμενος με τις υπερωρίες του.

Σχόλια (8) -