Το ξαναγράψιμο είναι πάντα πιο ελκυστικό απ’ όσο του αξίζει, και για δομικό λόγο: συγκρίνετε ένα σύστημα του οποίου κάθε ελάττωμα χρειάστηκε να ζήσετε, με ένα που υπάρχει μόνο ως ιδέα. Το παλιό έχει χρόνια συσσωρευμένης ασχήμιας σε κοινή θέα. Το καινούργιο δεν έχει καμία, γιατί δεν έχει τίποτα.
Αυτή η σύγκριση είναι άδικη, και είναι η πιο ακριβή αδικία σε αυτόν τον κλάδο. Δεν είναι όμως και επιχείρημα για να μην ξαναγράφεται ποτέ τίποτα. Κάποια συστήματα πράγματι πρέπει να αντικατασταθούν. Το ερώτημα είναι ποια σημάδια ξεχωρίζουν τις περιπτώσεις.
Γιατί τα ξαναγραψίματα πάνε στραβά
Τρεις τρόποι αστοχίας, και συσσωρεύονται.
Το παλιό σύστημα ξέρει πράγματα που κανείς δεν κατέγραψε. Χρόνια μικρών διορθώσεων κωδικοποιούν απαιτήσεις που δεν τεκμηριώθηκαν ποτέ: η ιδιαιτερότητα στον φορολογικό κανόνα, ο πελάτης του οποίου τα δεδομένα έχουν άλλο σχήμα, η αναφορά από την οποία εξαρτάται κάποιος στο λογιστήριο. Το ξαναγράψιμο ξεκινά από την περιγραφή του συστήματος, όχι από το σύστημα, και η περιγραφή είναι πάντα πιο σύντομη από την αλήθεια.
Η επιχείρηση δεν σταματά. Το παλιό πρέπει να συνεχίσει να τρέχει και να αλλάζει όσο χτίζεται το νέο, οπότε για όσο διαρκεί το έργο πληρώνετε δύο από όλα — και κάθε αλλαγή στο παλιό είναι μια αλλαγή που τώρα χρειάζεται και το νέο.
Το δεύτερο σύστημα παίρνει ό,τι έλειπε από το πρώτο. Απαλλαγμένες από τους περιορισμούς που γέννησαν το αρχικό, οι ομάδες βάζουν την ευελιξία, την αφαίρεση και την παραμετροποίηση για την έλλειψη των οποίων κατηγορήθηκε η πρώτη έκδοση. Το αποτέλεσμα είναι συνήθως δυσκολότερο να αλλάξει από αυτό που αντικατέστησε.
Τέσσερα σημάδια ότι όντως ήρθε η ώρα
- Το κόστος μιας αλλαγής ανεβαίνει, δεν είναι σταθερό. Όχι «οι αλλαγές είναι ακριβές» — ακριβό και σταθερό είναι σύστημα που προϋπολογίζεται. Το ανοδικό είναι το σημάδι: η ίδια σε μέγεθος αλλαγή να κοστίζει περισσότερο κάθε χρόνο σημαίνει ότι η δομή δουλεύει εναντίον σας, και αυτό δεν βελτιώνεται από μόνο του.
- Ένα κρίσιμο κομμάτι δεν το καταλαβαίνει κανείς από όσους εργάζονται σήμερα. Όχι ατεκμηρίωτο — πραγματικά άγνωστο. Αν μια αλλαγή εκεί γίνεται με δοκιμή και σφάλμα, δεν έχετε σύστημα· έχετε ένα απολίθωμα που τυχαίνει να ανταποκρίνεται σε εισόδους.
- Εμποδίζει κάτι που η επιχείρηση έχει ήδη αποφασίσει. Δεύτερη χώρα, δεύτερο brand, μια εξαγορά, μια προθεσμία ρυθμιστή. Η απόφαση έχει παρθεί και το σύστημα δεν φτάνει εκεί. Αυτό είναι ξαναγράψιμο με λόγο, που είναι το μόνο είδος που επιβιώνει σε έλεγχο προϋπολογισμού.
- Η πλατφόρμα από κάτω είναι εκτός υποστήριξης. Ένα runtime χωρίς ενημερώσεις ασφαλείας, μια έκδοση βάσης που ο κατασκευαστής δεν διορθώνει πια, ένα framework που δεν συντηρεί κανείς. Αυτό έχει χρονόμετρο, και το χρονόμετρο δεν είναι δικό σας.
Προσέξτε τι δεν είναι σε αυτή τη λίστα: ο κώδικας είναι άσχημος, η προηγούμενη ομάδα ήταν απρόσεκτη, ή η τεχνολογία δεν είναι της μόδας. Αυτά ισχύουν για τα περισσότερα συστήματα που δουλεύουν, τον περισσότερο καιρό.
Τέσσερα σημάδια ότι δεν ήρθε
- Η σημερινή ομάδα δεν το έχτισε. Η αγνωσία μοιάζει ακριβώς με κακό σχεδιασμό τους πρώτους μήνες. Περιμένετε περισσότερο πριν αποφασίσετε.
- Ένα κομμάτι πονάει. Αντικαταστήστε αυτό το κομμάτι. Ένα σύστημα δεν είναι ένα ενιαίο αντικείμενο, ό,τι κι αν υπονοεί το τιμολόγιο.
- Είναι αργό. Μετρήστε πρώτα. Τα προβλήματα ταχύτητας είναι συνήθως συγκεκριμένα, τοπικά, και πολύ φθηνότερα να διορθωθούν παρά να ξαναχτιστεί κάτι γύρω τους.
- Το ξαναγράψιμο είναι πιο ενδιαφέρον. Τίμιο, συνηθισμένο, και όχι επιχειρηματικό επιχείρημα.
Η ενδιάμεση επιλογή
Τα περισσότερα συστήματα δεν χρειάζονται αντικατάσταση· χρειάζονται κομμάτια τους να αντικατασταθούν, με σειρά, ενώ συνεχίζουν να τρέχουν.
Βάλτε το νέο σύστημα μπροστά από το παλιό, περάστε μία λειτουργία τη φορά από τη νέα διαδρομή, και σβήστε την παλιά μόλις δεν την καλεί τίποτα. Κάθε βήμα είναι μικρό, αναστρέψιμο και χρήσιμο από μόνο του — και αν τα χρήματα τελειώσουν στη μέση, σας μένει ένα σύστημα που δουλεύει αντί για δύο μισοτελειωμένα. Είναι συνολικά πιο αργό από ένα καθαρό ξαναγράψιμο που πάει τέλεια, και πιο γρήγορο από κάθε ξαναγράψιμο που δεν πάει.
Ό,τι κι αν επιλέξετε, η χρήσιμη πειθαρχία είναι η ίδια: καταγράψτε τι κάνει το παλιό σύστημα που κανείς δεν έχει τεκμηριώσει, πριν ξεκινήσετε. Αυτή η λίστα είναι η πραγματική προδιαγραφή. Είναι επίσης αυτό που κάθε αποτυχημένο ξαναγράψιμο ανακάλυψε πολύ αργά.
- Αρχιτεκτονική
- Συντήρηση
