init

Με μια υποομάδα συναδέλφων έχω ξεκινήσει να δουλεύω σε ένα microservice που έχουμε φτιάξει από την αρχή. Για λόγους διακριτικότητας θα χρησιμοποιήσω για να αναφέρομαι σ’ αυτο την κωδική ονομασία pyFly. Η υπόλοιπη ομάδα εκτός από εμάς (κάτι σαν ομόκεντρους κύκλους σκεφτείτε το) δουλεύει είτε σε ξεχωριστά microservices είτε εναλλάξ σε ένα ΘΗΡΙΩΔΕΣ überlegacy project που κατάφερε να ακολουθήσει απαρχαιωμένες πρακτικές από day one. Και όχι απαρχαιωμένες για το 2014 που ξεκίνησε το όλο project. Απαρχαιωμένες για τις αρχές του 2000.
Για τους προαναφερθείς λόγους θα το λέμε phpKthulu. Και παρότι τα ονόματα είναι τελείως τυχαία και δεν έχουν σχέση με τις πραγματικές τεχνολογίες, θα σκεφτόμαστε πως είναι γραμμένο με PHP 4.4.2 και το frontend του σερβίρει ενα java applet που χρησιμοποιεί ActiveX και Adobe Flash Player. Και τρέχει σε μια μουχλιασμένη πατάτα με καλώδια. Εντάξει, το τελευταίο ίσως όχι.
Ιούνιος 2024#
Η δουλειά στο pyFly φαίνεται να τελειώνει και σιγά σιγά προορίζεται να βγει στην παραγωγή. Όπως δείχνουν τα πράγματα, μας πάνε για απόσυρση μέχρι να τελειώσει η τεχνική ανάλυση για τα επόμενα microservices που θα δουλέψουμε. Βασικά όχι ακριβώς “απόσυρση”.
Στην πραγματικότητα όσοι από εμάς κρίνονται πλεονάζοντες στο pyFly, τους ρουφάει σταδιακά η μαύρη τρύπα της συντήρησης και ανάπτυξης του phpKthulu. Και ξέρουμε ήδη από πρώτο χέρι οτι όποιος πάει εκεί δεν ξαναβλέπει ποτέ το φως του Ήλιου. Θα έλεγε κανείς πως ζούμε μια battle royale κατάσταση, την ελληνική έκδοση του squid game, τα πέντε hunger games, την αρένα του Κολλοσαίου.
Βλέποντας οτι βρίσκομαι στο χείλος της καταστροφής, ώντας ο τελευταίος που έχει καταφέρει να ξεφύγει από αυτό και επίσης ο τελευταίος που μπόρεσε να δουλέψει στο pyFly, αποφασίζω να αγοράσω λίγο ακόμα χρόνο. Ανοίγω λοιπόν και αναθέτω στον εαυτό μου ένα ticket για συμμάζεμα της πιο περίπλοκης διαδικασίας που κάνει το service μας. Ήταν παπάτζα; Όχι. Παρ’οτι το pyFly είναι νέο service και η ομάδα έχει αθροιστικά πολλά χρόνια στην πλάτη, υπάρχουν αρκετές περιπτώσεις που ο κώδικας είναι κάτι ανάμεσα σε γραφικό χαρακτήρα παθολόγου και Γραμμική Β'.
Δε θα αναλύσω τους λόγους για τους οποίους ήταν έτσι η κατάσταση, πέρα απ το οτι χρησιμοποιούμε ένα framework με μεγάλο learning curve, το οποίο δε θέλει και πολύ για να φτάσει σε τέτοια κατάσταση. Εν πάση περιπτώσει, θα σκεφτούμε πως η δουλειά που έκανα εγώ ήταν να μπω σε ένα πολύ ακατάστατο και βρώμικο σαλόνι που μόλις έχει χτιστει. Υπήρχαν λάσπες από τα παπούτσια των ηλεκτρολόγων, σκόνη από το σοβάτισμα, μπογιές που έχουν στάξει από τους μπογιατζήδες στο πάτωμα, στoιβαγμένα έπιπλα τυλιγμένα με νάυλον κλπ. Eπιασα λοιπόν αυτό το σαλόνι, το καθάρισα εξoνυχιστικά με 15 διαφορετικά επαγγελματικά καθαριστικά, τακτοποίησα τα έπιπλα, τα καθάρισα κι αυτά, έπεσα και έκανα τις γωνίες με οδοντόβουρτσα. Πήρε κάτι πάνω από μια-μιάμιση εβδομάδα και το παρέδωσα πίσω τηρώντας τα best practices.
Οκτώβριος 2024#
Φως μπαίνει από μια χαραμάδρα. Είναι ιδέα μου; Τόσους μήνες σ’ αυτό το αμπάρι, το μυαλό παίζει περίεργα παιχνίδια. Μήπως είναι χρόνια;
-ΒΓΕΣ ΕΞΩ ΣΚΛΑΒΕ, SPRINT PLANNING.
-Θα βγω, αρκεί να μη με ξαναχτυπήσετε.
-Ο ΑΥΤΟΚΡΑΤΟΡΑΣ ΣΟΥ ΕΔΩΣΕ ΧΑΡΗ. ΥΠΑΡΧΕΙ ΕΝΑ ΤΙΚΕΤ ΝΑ ΔΟΥΛΕΨΕΙΣ ΣΤΟ PYFLY.
-Εντάξει, εντάξει. Έρχομαι.
Όντως υπήρχε ένα τίκετ για ένα νέο feature στο pyFly. Η κατάσταση εκεί το τελευταίο διάστημα είχε ως εξής: είχε μείνει ένας senior συνάδελφος από αυτούς που ξεκίνησαν το project και είχε προστεθεί κι άλλος ένας senior από άλλη ομάδα. Οι δυό τους τον τελευταίο καιρό έκαναν μικροβελτιώσεις, επέβλεπαν το rollout του service στην παραγωγή και ασχολιόντουσαν με metrics και διάφορα DevOpsικά tasks.
Το τίκετ στο οποίο έπρεπε να δουλέψω ήταν κάποιες βελτιώσεις στο σαλόνι που είχα καθαρίσει πριν φύγω για να δουλέψω στο phpKthulu. Γενικά αν και είμαι πολύ opinionated στον τρόπο που θεωρώ οτι πρέπει να γίνονται τα πράγματα, έχω πάντα υπόψιν οτι δεν έχουμε όλοι τις ίδιες απόψεις, δεν έχουμε κάτσει ποτέ να συζητήσουμε οργανωμένα για τις συμβάσεις που χρησιμοποιούμε. Επίσης έχω μια κάποια εμπειρία και δεν πέφτω πια απ’ τα σύννεφα με το παραμικρό.
Άκυρα dependencies σε εξωτερικές βιβλιοθήκες που χρησιμοποιούνται μόνο σ’ αυτές τις κλάσεις.
Επαναλαμβανόμενος κώδικας.
If-else hell.
Boolean flags σαν arguments σε μεθόδους.
Blocks απο train wrecks μεθόδων 20+ γραμμών.
Μεταβλητές ονομασμένες με ένα-δύο χαρακτήρες.
# begin tade operation
[100-150 grammes kwdikas]
# end tade operation
ΕΙΧΑΜΕ ΕΝΑ ΕΡΓΑΛΕΙΟ ΓΙ ΑΥΤΟ. ΤΟ ΛΕΓΑΜΕ ΣΥΝΑΡΤΗΣΗ
Είπα πως θα προσπαθήσω να κρατήσω περιορισμένο το jargon, οπότε πάμε πίσω στην αναλογία με το σαλόνι. Το σαλόνι λοιπόν είχε υποστεί ανακαίνιση. Πλέον ήταν κάτι σαν σαλόνι και δημόσιες τουαλέτες μαζί. Που έχει υποστεί βομβαρδισμό. Στη μέση του σαλονιού, διπλα σε κάτι που έμοιαζε με βουνό από σκατά αγελάδας, υπήρχε μια γκρεμισμένη τραπεζαρία. Από κάτω βρήκα κάτι υπολείμματα ενός περσικού χαλιού που μασούλαγαν δύo αρουραίοι. Άκουσα ένα θόρυβο απ’ το βάθος και μου επιτέθηκε κάτι που έμοιαζε σαν άστεγος που έχει πάρει σίσα, αλλά πριν προλάβω να καταλάβω τι έγινε, έπεσε στο κενό από εκει που κάποτε ήταν το μπαλκόνι.
Ε, long story short, αυτή είναι η ζωή μου τις τελευταίες βδομάδες. Θα μπορούσαμε να έχουμε διαχεριστεί καλύτερα τα πράγματα; Πιθανότατα ναι.