ΕΠΕΙΣΟΔΙΟ 46: Δοκιμασμένες πρακτικές

0

 
Παρασκευή στην Τρια Κιλα Κώδικα ΑΕ.

Η μέρα της χαλαρότητας. 

Η οποία καμία διαφορά δεν έχει από τις υπόλοιπες μέρες, εκτός του ότι έχει βαφτιστεί “casual Friday” από τον κ. Χοντρολεφτά Υποσχετόπουλο, το αφεντικό. 

Το οποίο και πάλι δεν βγάζει νόημα, γιατί και τις υπόλοιπες μέρες όλοι είναι ντυμένοι με αθλητικά παπούτσια, jeans και t-shirts. 

Υποψιαζόμαστε ότι ο κ. Χοντρολεφτάς Υποσχετόπουλος απλά μπερδεύτηκε λίγο θεωρώντας τη λέξη “casual” συνώνυμη με τη φράση “την έχω κάνει για Αραχωβα, εσείς λιώστε στη δουλειά μέχρι αργά το απόγευμα, ciao” - κάτι το οποίο έχει, φυσικά, εφαρμογή μόνο για τον ίδιο.

Παρ’όλα αυτά, ο Ζαχαρίας είναι παρών στις επάλξεις από νωρίς το μεσημέρι (η λέξη “πρωι” δεν είναι συμβατή με τους βιόρυθμούς του οπότε απλά παραλείπεται) και κοιτάει τα tasks της ημέρας πίνοντας φραπέ σε ποτήρι βαρελίσιας μπύρας, από αυτά που το γκαρσόνι σου φέρνει συνήθως με μίνι γερανό γιατί δεν αντέχει το βάρος ο δίσκος.

Μέσα σε όλα τα ασήμαντα tasks τα οποία μπορούν πάντα να γίνουν αργότερα, όπως π.χ. το ότι “έχει κρασάρει ο mail server και όλη η εταιρία δεν έχει email ΕΔΩ ΚΑΙ ΔΥΟ ΕΒΔΟΜΑΔΕΣ ΓΙΑΤΙ ΚΑΠΟΙΟΣ @#$@% ΣΤΕΛΝΕΙ ΣΠΑΜ ΟΛΗ ΤΗ ΜΕΡΑ ΓΙΑ ΠΩΛΗΣΕΙΣ ΣΑΜΠΟΥΑΝ” , υπάρχει ένα που του τραβάει την προσοχή:

“Παροχή συμβουλευτικών υπηρεσιών στην ΚαταΤυχηΛειτουργουμε ΑΕ σχετικα με τη συντήρηση των εφαρμογών που διαθέτει στους πελάτες της”

Οπως είναι φυσικό, αυτό ιντριγκάρει πολύ το Ζαχαρία, κυρίως γιατί κάτω από τα γραφεία της ΚαταΤυχηΛειτουργουμε ΑΕ έχει ένα πολύ όμορφο Donut Shop από το οποίο έχει καιρό να φάει. Ετσι λοιπόν κουτρουβαλάει χαρούμενος τις σκάλες και, φθάνοντας στο τέλος, δένει τα κορδόνια του συνεχίζοντας να κατεβαίνει με κανονικό ρυθμό, αλλά πάντα χαρούμενος, στον επόμενο όροφο.

(Σε περίπτωση που αναρωτιέστε, ναι, φυσικά και δεν έκλεισε το service που στέλνει spam για σαμπουάν - αν μη τι άλλο, όλο το γραφείο τις τελευταίες δύο εβδομάδες μυρίζει υπέροχα).

Φθάνοντας στα γραφεία της ΚαταΤυχηΛειτουργουμε ΑΕ ο Ζαχαρίας συναντά ένα έρημο τοπίο. Κανένας υπάλληλος δεν είναι στα γραφεία του εκτός από τη γραμματέα και, φυσικά, τον γενικό διευθυντή, με τον οποίο έχει ραντεβού. Αυτό φαντάζει λίγο παράξενο στα μάτια του, αλλά με τόσα που έχει δει υποθέτει ότι ενδεχομένως ο λόγος είναι πολύ πρακτικά εξηγήσιμος: Επιδημία χολέρας, τοξικά απόβλητα, μαζική απόλυση, ομαδική ηλεκτροπληξία, τέτοια νορμάλ πράγματα. Δεν δίνει σημασία και προχωράει σκουπίζοντας τις σοκολάτες και τις ζάχαρες από τα χέρια του, τα μαλλιά του, το στομα του και το σβέρκο  του (ναι, τα τρώει τα donuts σαν κτήνος) πριν προχωρήσει σε χειραψία  με τον κ. Αρπακόλλα Προχειρόπουλο, γενικό διευθυντή της ΚαταΤυχηΛειτουργουμε ΑΕ.

ΔΤΦ: Καλημέρα σας, ήρθα για να δούμε τα θέματα που έχετε με τη συντήρηση των projects σας…

ΑΠΡ: (Έκπληκτος) Τι θέματα; Δεν έχουμε θέματα!

ΔΤΦ: Μα με ενημέρωσαν ότι αντιμετωπίζετε κάποιες δυσκολίες…

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

ΔΤΦ: Προφανώς κατάλαβα λάθος, ζητώ συγνώμη. Ας δούμε λοιπόν τα θέματα του κώδικΤΙ ΕΝΝΟΕΙΤΕ ΑΠΕΥΘΕΙΑΣ ΣΤΗΝ ΕΓΚΑΤΑΣΤΑΣΗ ΤΟΥ ΠΕΛΑΤΗ;

ΑΠΡ: Τι εννοείτε τι εννοώ;

ΔΤΦ: Εννοώ ότι εννοείτε ότι κάνετε development απευθείας στην εγκατάσταση του πελάτη, αν με εννοείτε;

ΑΠΡ: ΜΑ ΦΥΣΙΚΑ.

ΔΤΦ: “Φυσικά”;

ΑΠΡ: Γλυτώνει χρόνο. Αγαπητέ κ. Δεντοφτιάχνω, δεν έχουμε την πολυτέλεια να οργανώσουμε αυτά τα πωςταλετεσεις Γιουνιτεστιν και Στειτζιν και τέτοια εξωτικά. Αν ο πελάτης θέλει ένα νέο feature, του το αναπτύσσουμε απευθείας πάνω στην εγκατάστασή του και τέλος.

ΔΤΦ: Μα κατά τη διάρκεια της ανάπτυξης, δεν παραπονιέται ο πελάτης ότι το σύστημά του δεν λειτουργεί;

ΑΠΡ: Α, το έχουμε λύσει αυτό προ καιρού. Ακούστε, είναι εξαιρετική μέθοδος. Αντιγράφουμε π.χ. τη σελίδα προβολής παραγγελιών σε ένα νέο αρχείο και αναπτύσσουμε εκεί, αφήνοντας τον πελάτη να δουλέψει κανονικά όση ώρα εμείς εργαζόμαστε. Οταν τελειώσουμε, μετονομάζουμετη σελίδα από orders.aspx σε orders_old_45.aspx και βάζουμε την καινούρια στη θέση της. Τεστάρουμε, και αν είναι όλα καλά το νέο functionality είναι στη θέση του!

ΔΤΦ: Αν και έχω περί τα 134 ερωτήματα σχετικά με αυτό που μόλις άκουσα, θα ήθελα να μάθω το εξής πρώτα: ΓΙΑΤΙ orders_old_45.aspx; Υπάρχουν άλλα 44 πριν από αυτό;

ΑΠΡ: ΜΑ ΦΥΣΙΚΑ! Πώς αλλιώς; Έλεγχος εκδόσεων λέγεται! Κρατάμε κάθε αλλαγή σε ξεχωριστό αρχείο! Μου φαίνεται περίεργο που δεν γνωρίζετε τέτοιες μεθολογίες...

ΔΤΦ: Ολα στο server του πελάτη;

ΑΠΡ: Μα φυσικά! Πώς αλλιώς; Και αμα θελήσει ο πελάτης να κάνει rollback στο προηγούμενο functionality γιατί τελικά δεν τον εξυπηρετεί το feature;

ΔΤΦ: Απλά γυρίζετε το orders_old_45.aspx σε orders.aspx και τέλος…

ΑΠΡ: Είστε γρήγορος, κ. Δεντοφτιάχνω! Κατανοήσατε μέσα σε 5 λεπτά ένα σύστημα που μας πήρε 2 χρόνια να το βάλουμε σε εφαρμογή! Έχουν δίκιο λοιπόν όσοι σας συστήνουν, η πολυετής εμπειρία σας είναι χωρίς ανταγωνισμό.

ΔΤΦ: Η δική σας;

ΑΠΡ: Η δική μας τι;

ΔΤΦ: Εμπειρία.

ΑΠΡ: Α. Κοιτάξτε, 2 χρόνια. 

ΔΤΦ: Οσα δηλαδή και το σύστημα ανάπτυξής σας. Πριν από αυτό τι κάνατε;

ΑΠΡ: Ημουν πωλητής παπουτσιών σε πολυκατάστημα.

ΔΤΦ: Καταλαβαίνω...

ΑΠΡ: Ε, όχι ακριβώς πωλητής και όχι ακριβώς σε πολυκατάστημα. Ενας τσαγκάρης ήταν και γυάλιζα τα παπούτσια για τις βιτρίνες. ΑΛΛΑ ΑΠΕΚΤΗΣΑ SKILLS στην επικοινωνία με το κοινό, γιατί έμπαινε πολύς κόσμος μέσα στο μαγαζί. Κυρίως επειδή ο τσαγκάρης χρώσταγε σε όλο τον κόσμο. Αχ, αναμνήσεις...

ΔΤΦ: (Προσπαθώντας να διώξει από το μυαλό του όλη αυτή τη νοητή εικόνα) Και την ΠΡΩΤΗ ΜΕΡΑ που ξεκινήσατε αυτή τη δουλειά επινοήσατε αυτό το σύστημα;

ΑΠΡ: Ναι! 

ΔΤΦ: Με σύνολο εμπειρίας, δηλαδή, κάποιες ώρες;

ΑΠΡ: Φοβήθηκα και εγώ στην αρχή για αυτό, αλλά δουλεύει ρολόι, γι’αυτό και δεν το άλλαξα, παρ’όλο που υποψιάζομαι ότι δεν ακολουθεί τα standards όπως θα έπρεπε.

ΔΤΦ: (Κρατώντας νοερά την αναπνοή του και μετρώντας νοερά ως το 3,14) Να ρωτήσω και κάτι άλλο: Τι γίνεται όταν θα πρέπει να αλλάξετε περισσότερα του ενός αρχεία για κάτι που ζήτησε ο πελάτης; Π.χ. κάποιο referenced project, κάποια βιβλιοθήκη, κάποιο helper…

ΑΠΡ: Α, δεν έχουμε τέτοια. ΟΛΟΣ ο κώδικας βρίσκεται μέσα στο αρχείο που αλλάζουμε

ΔΤΦ: (Προσπαθώντας να δείξει απόλυτα ψύχραιμος) Μαααλιστα…

ΑΠΡ: (Υπερήφανα) Και επιπρόσθετα, για ασφάλεια, κάθε φορά που κανουμε μια αλλαγή παίρνουμε backup όλο το site του πελάτη σε ένα διπλανό folder και δεν το σβήνουμε ποτέ. 

ΔΤΦ: Σε διπλανό folder στο server του πελάτη να φανταστώ...και εσείς εδώ δεν κρατάτε αντίγραφο;

ΑΠΡ: Γιατί; Ο κώδικας ανήκει στον πελάτη.

ΔΤΦ: Και αν πάθει κάτι ο server του πελάτη;

ΑΠΡ: Τι να πάθει δηλαδή;

ΔΤΦ: (Στα πρόθυρα πολλαπλού εγκεφαλικού, επιληπτικής κρίσεως και γαστροεισοφαγικής παλινδρόμησης) Μααααααλιστα. Αλλη ερώτηση: Αν πρέπει να εγκαταστήσετε την ίδια αλλαγή σε περισσότερους πελάτες τι κάνετε; 

ΑΠΡ: Σημειώνουμε από ποιόν αριθμό γραμμής μέχρι ποιόν έγινε η αλλαγή και ψάχνουμε στην εγκατάσταση των άλλων πελατών να βρούμε παρόμοιο κώδικα.

ΔΤΦ: “Παρόμοιο”;

ΑΠΡ: Ναι, γιατί καθε πελάτης ζητάει τις δικές του αλλαγές οπότε καμία εγκατάσταση δεν είναι ακριβώς σαν κάποια άλλη. Αλλά μέσα σε ένα πεντάλεπτο συνήθως βρίσκουμε άκρη.

ΔΤΦ: Και πώς κάνετε τις αλλαγές αυτές στον πελάτη;

ΑΠΡ: FTP και Notepad.

ΔΤΦ: (Νοιώθοντας κάτι να σπάει μέσα του) Μααααααααααααλιστα… και δεν μου λέτε, έχει διαμαρτυρηθεί ποτέ πελάτης για τη μεθοδολογία σας;

ΑΠΡ: Προσπαθούμε τις σημαντικές αλλαγές να τις κάνουμε σε ώρες μη αιχμής. Είναι λίγο άβολο για τους προγραμματιστές μας να δουλεύουν 12 τα μεσάνυχτα με 8 το πρωι, αλλά έχουμε δωρεάν καφέ.

ΔΤΦ: Ετσι εξηγούνται τα άδεια γραφεία.

ΑΠΡ: Ναι, θα πρέπει να έρθετε στις 4 το πρωι, εκείνη η ώρα είναι η πιό παραγωγική και υπάρχει και απαρτία.

ΔΤΦ: Μαααααααααααααααααααααααααααλιστα. Και δεν μου λέτε και κάτι άλλο, πόσοι πελάτες έχουν διαμαρτυρηθεί σχετικά;

ΑΠΡ: Προς το παρόν, μόνο πέντε.

ΔΤΦ: Και πόσους πελάτες έχετε σύνολο;

ΑΠΡ: Έξι.

ΔΤΦ: (Γελώντας εσωτερικά, μα τόσο εσωτερικά που κοντεύει να ξεχειλίσει εξωτερικά) Μααααααααααααμπφρχααααααααμπρφχχχαααααλιστα. Ο έκτος πώς και δεν διαμαρτύρεται;

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

ΔΤΦ: (Προσπαθώντας σκληρά να μην γελάσει, να μην κλάψει, και να μην κάνει κάτι αδιευκρίνιστα αδιευκρίνιστο ενδιάμεσα αυτών των δύο) Καιαιαι τι θέλατε να δούμε λοιπον;

ΑΠΡ: Να, εδώ έχω έναν υπολογισμό μεταφορικών που δεν λειτουργεί σωστά…

ΔΤΦ: Κοιτάμε το server του πελάτη τώρα απευθείας, ετσι;

ΑΠΡ: Ναι, αλλα μην ανησυχείτε. Δεν γίνονται πολλές παραγγελίες αυτή την ώρα. Οπότε μπορούμε να πειραματιστούμε.

ΔΤΦ: Να πειραματιστούμε...και αν γίνει κάποια παραγγελία ενώ εμείς πειραματιζόμαστε;

ΑΠΡ: Ε, θα πάρει λάθος μεταφορικά, οπότε θα κρατήσουμε τα στοιχεία και ο πελάτης θα μπει στη database και θα αλλάξει χειροκίνητα το κόστος και αν είναι μεγαλύτερο θα επιστρέψει λεφτά στον πελάτη, αν είναι μικρότερο θα ζητήσει περισσότ…

ΔΤΦ: (Μην αντέχοντας πλέον) ΕΙΣΤΕ ΣΟΒΑΡΟΙ;

ΑΠΡ: Δεν καταλαβαίνω τον τόνο σας κ.Δεντοφτιάχνω!

ΔΤΦ: Source control! Backups! Staging environments! Build servers! ΚΑΤΙ! ΟΤΙΔΗΠΟΤΕ! Αυτό που κάνετε είναι ενάντια σε κάθε λογική! Είναι σαν να χτίζει πολυκατοικία κάποιος ξεκινώντας από την ταράτσα! Σαν να ανοίγει ζωολογικό κήπο και να βάζει μέσα μυρμήγκια! Σαν να κρατάει τα λογιστικά του με άβακα! 

ΑΠΡ: Το τελευταίο που είπατε δεν καταλαβαίνω γιατί το θεωρείτε λάθος. Εγώ, τα τελευταία 10 χρόνια…

ΔΤΦ: Εγώ δεν δέχομαι να συμμετάσχω σε αυτό το πράγμα που εσείς ονομάζετε “ανάπτυξη λογισμικού”! Αρνούμαι! 

(Κλείνει το παράθυρο με τον κώδικα)

ΑΠΡ: (Κιτρινίζει) ΙΙΙΙΙΙΙΙΙιιιιιι! Τι κανατε εκεί κ. Δεντοφτιάχνω! 

ΔΤΦ: Τι έκανα;

ΑΠΡ: (Πανικόβλητος) ΚΛΕΙΣΑΤΕ το παράθυρο;

ΔΤΦ: Μα δεν είχα αλλάξει κάτι και δεν μου είπε οτι κάτι δεν ήταν αποθηκευμένο…

ΑΠΡ: (Χοντρές σταγόνες ιδρώτα διαγράφονται στο πλατύ του κούτελο σαν διάφανοι δρομείς σε αγώνα δρόμου 100 μέτρων σε ροζ άμμο, πω, πως τα λέω έτσι) Ηταν 14 αρχεία ανοιχτά! Ξέρετε ότι μόλις χάσαμε 2000 γραμμες κώδικα; ΤΟ ΞΕΡΕΤΕ;

ΔΤΦ: Μα πώς…

ΑΠΡ: Χρησιμοποιούμε μια ΕΙΔΙΚΗ πειραγμένη multifile έκδοση του Notepad που μας αφήνει να κλείσουμε το παράθυρο χωρίς να έχουμε αποθηκεύσει τον κώδικα! Γιατί μερικές φορές οι developers το ξεχνάνε ανοιχτό και δεν γίνεται reboot το μηχάνημά τους!

ΔΤΦ: (Προσπαθώντας να αγνοήσει την ανατριχίλα που κάνει να σηκώνονται μέχρι και οι τρίχες εσωτερικά της μύτης του) Μα γιατί να γίνει reboot το μηχάνημά τους...και γιατί ειδική έκδοση του Notepad και όχι Notepad++...οκ, οκ, δεν θέλω να μάθω! 

ΑΠΡ: Κανουν reboot 6 φορές τη μέρα για να είναι γρήγορα τα Windows και όσο για το Notepad++ δεν μας αρέσει, πληρώσαμε 2000$ σε μια Βραζιλιάνικη εταιρία για να μας δώσει μια “πειραγμένη” έκδοση του απλού Notepad. Ομως, τεράστια ζημιά μας κάνατε!

ΔΤΦ: (Κάνοντας ένα νοερό “λαλαλαλα”) Είπα ότι δεν θέλω να ξέρω. Ομως, δεν είναι τόσο μεγάλη η ζημιά όσο νομίζετε. Οση ωρα μιλούσατε πριν, εγώ είχα προλάβει να αντιγράψω όλα τα αρχεία σε ένα USB stick.

ΑΠΡ: Τι προνοητικότητα! Δικαιώνετε τον τίτλο σας! Ας ξαναβάλουμε το αρχείο που λείπει στη θέση του...

ΔΤΦ: (Χαιρέκακα) ΟΟΟΧΙ τόσο γρήγορα. Το ανεβάζω αυτή τη στιγμή που μιλάμε στο Git server της εταιρίας μου, και σας δίνω πρόσβαση. Ενα git clone και θα το έχετε πάλι δικό σας.

ΑΠΡ: (Αχανές βλέμμα Βουδιστή μοναχού που ανακάλυψε τους Iron Maiden) Κλον τι;

ΔΤΦ: (Ακόμα πιό χαιρέκακα) Git clone. Ξερετε. Για να το αντιγράψετε στο τοπικό σας repo.

ΑΠΡ: (Έκφραση καμηλοπάρδαλης που προσπαθεί να βάλει ζιβάγκο) Γκιτ τι;

ΔΤΦ: (Σατανικά χαιρέκακα) Και μετά μπορείτε να κάνετε commit και τις αλλαγές σας για να κρατάτε το history, αλλά μην ξεχάσετε στο τέλος να κάνετε push τις αλλαγές πίσω στο remote.

ΑΠΡ: (Βλέμμα δρυοκολάπτη που προσπαθεί να ραμφίσει καουτσούκ) Κομιτ τι; 

ΔΤΦ: Καλή σας μέρα.

Έξι ντονατς και 20 πωλήσεις σαμπουάν με αρώματα της φύσης αργότερα, ο κ. Αρπακόλας Προχειρόπουλος τηλεφώνησε στον κ Χοντρολεφτά Υποσχετόπουλο εξαίροντας τις ικανότητες του Ζαχαρία και προτείνοντας στην Τρια Κιλα Κωδικα ΑΕ να αναλάβει όλη τη διαχείριση και τη συντήρηση των προγραμμάτων της εταιρίας του.

Το λες και εκδίκηση.

 

Σχόλια (3) -