Τα καλύτερα παραδείγματα στο business περιβάλλον προέρχονται συνήθως από την ίδια την πραγματικότητα, καθώς εμπεριέχουν στοιχεία που σε πλείστες περιπτώσεις ξεπερνούν ακόμη και την φαντασία των ξεχωριστών όσο και πολλαπλών σεναρίων. Ο τομέας του coding δεν θα μπορούσε να ξεφύγει από αυτήν.
Καθώς η θεωρία από την πράξη απέχει παρασάγγας, το κομμάτι του software development αποτελεί έναν άκρως ενδεικτικό τομέα που η ανωτέρω διαπίστωση βγαίνει… ασπροπρόσωπη. Οι καλύτερες σκέψεις για την σημασία και της επιπτώσεις του παλαιού κώδικα, μοιραία έρχονται από έναν παλαιό και πολύπειρο Developer. Δε μπορώ παρα να τις παραθέσω αυτούσιες: «Πλάκα κάνεις! Αυτό ούτε που διαβάζεται!»
Η οργή έδειχνε να ξεχειλίζει, το πρόσωπό του είχε κοκκινίσει, οι σφυγμοί του πρέπει να είχαν… χτυπήσει «ταβάνι», ενώ ότι φλέβα υπήρχε στο σώμα του βρισκόταν σε πλήρη ένταση. Φανερά ενοχλημένος ο senior developer έφυγε από το γραφείο του, ψάχνοντας νευρικά τις τσέπες του για αναπτήρα και τσιγάρα. Πίσω του άφησε ανοικτή την οθόνη, πλημυρισμένη με χιλιάδες γραμμές κώδικα. Ναι, ήταν «σεντόνια» παλαιού κώδικα ο οποίος έπρεπε να αλλαχθεί. Το σενάριο είναι λίγο-πολύ γνωστό: κώδικας ετών που πρέπει να αλλαχθεί γιατί ο πελάτης / το business / η νέα έκδοση του προϊόντος απαιτούν νέα χαρακτηριστικά. Ή ακόμη χειρότερα: γιατί «εκεί» προστέθηκε «αυτό» και άρα πρέπει και «εδώ» να γίνει μία «μικρή» αλλαγή. Εντάξει, ίσως όχι τόσο μικρή αλλαγή αλλά τελικά αναμενόμενη στο ευρύτερο πλαίσιο του κύκλου ζωής ενός λογισμικού.
«Μήπως επί τη ευκαιρία να το γράφαμε από την αρχή; Μάλλον θα μας πάρει λιγότερο παρά να…» Γνωστό και αυτό το ρεφραίν στους απανταχού developers. Και η αιτία βασικά είναι μία: ως developers θέλουμε να φτιάχνουμε, όχι να μελετούμε. Θέλουμε να γράφουμε, όχι να διαβάζουμε. Είμαστε περισσότερο παραγωγικά όντα παρά εκτελεστικά, περισσότερο δημιουργοί και λιγότερο «γραφειοκράτες».
Όπως όμως σε μία συζήτηση είναι περισσότερο κρίσιμο το να ακούμε προσεκτικά τον συνομιλητή μας παρά να περιμένουμε την παύση του για να μιλήσουμε, ακριβώς ανάλογα και στη συγγραφή του κώδικα είναι παραπάνω από αναγκαίο να δώσουμε στον εαυτό μας τον απαραίτητο χρόνο να διαβάσουμε και να κατανοήσουμε τον παλαιό κώδικα πριν αρχίσουμε με ενθουσιασμό (καλά, είπαμε να πούμε κανά αστείο να περάσει και η ώρα…) τη συγγραφή του νέου. Σε αντίθετη περίπτωση οι συνέπειες είναι δραματικές αφού οι παλαιοί κώδικες περιλαμβάνουν συνήθως business cases που ποτέ δεν φανταστήκαμε, debugging ετών και exceptions που δύσκολα μπορεί να πιάσει ο φρέσκος (αλλά στην πραγματικότητα συνήθως απλά βιαστικός) νέος κώδικάς μας.
Όσο επιχειρούμε να διερευνήσουμε την κατάσταση που ισχύει στο code developing, τόσο δείχνουμε να καταλήγουμε σε μια… πονεμένη πραγματικότητα η οποία κατά πως φαίνεται «χαρακτηρίζει» την ίδια την αγορά. Και φυσικά τις ιδιαιτερότητες, αλλά κυρίως τις… παθογένειες του εν λόγω τομέα. Τι αποδεικνύεται στην πράξη; Φτάνουμε λοιπόν να έχουμε καλούς συγγραφείς, κακούς αναγνώστες και… άσχημους (αλλά ώριμους) παλαιούς κώδικες. Και όλα αυτά επειδή απλά δεν έχουμε την υπομονή να διαβάσουμε, να κατανοήσουμε και να μάθουμε από τον παλαιό κώδικα, από τα σεντόνια που κάποιοι άλλοι -ποιος να ξέρει πότε και κάτω από ποιες συνθήκες- έχουν γράψει. Το καλύτερο βέβαια μένει πάντα για το τέλος: μια αναζήτηση στο source history του version control system δείχνει (όχι σπάνια) ότι ο συγγραφέας των σεντονιών μπορεί να ήταν… εμείς οι ίδιοι!
Βέβαια, η αλήθεια είναι πως πράγματι ένας κώδικας έχει γραφτεί προκειμένου να εξυπηρετήσει συγκεκριμένες (συνήθως) ανάγκες, πληρώντας δεδομένες απαιτήσεις, λαμβάνοντας υπόψη και αξιοποιώντας Χ συνθήκες για Ψ ζητήματα.
Μπορεί να μην ισχύει η λογική του «One size fits all», εντούτοις όμως δεν αποκλείεται να ταιριάζει με οριμένα ή ακόμη και περισσότερα «θέλω» εκ μέρους του εκάστοτε πελάτη. Οπότε, απαιτείται μια «καθαρή» ματιά και σκέψη με τον αντίστιχο βαθμό ψυχραιμίας και συγκέντρωσης προκειμένου να διαπιστώσετε εάν μπορείτε να κάνετε τη δουλειά σας ταχύτερα, πιο έξυπνα, όσο και ευκολότερα.