Why I build on boring technology

Γράφει ο Panagiotis Athanasakopoulos · Παναγιώτης Αθανασακόπουλος

Architecture14 Σεπτεμβρίου 20262 min

Το stack που διαλέγω, για τους πελάτες της TWENTYONE και για το TRVL, είναι σκόπιμα βαρετό. React για ό,τι βλέπει ο χρήστης, Next.js για να φτάνει στον browser, Node.js στον server, React Native για τα apps σε iOS και Android, και PostgreSQL κάτω από όλα. Κανένα από αυτά δεν θα σας εξασφάλιζε ομιλία σε συνέδριο. Γι' αυτό ακριβώς είναι εκεί.

Την πιο καθαρή εκδοχή του επιχειρήματος τη δίνει το δοκίμιο του Dan McKinley Choose Boring Technology. Κάθε οργανισμός, λέει, έχει να ξοδέψει λίγα «κουπόνια καινοτομίας». Κάθε καινούργια, αδοκίμαστη τεχνολογία ξοδεύει ένα, γιατί κανείς δεν ξέρει ακόμη πώς αποτυγχάνει. Ξοδέψτε τα σε ό,τι κάνει το προϊόν σας διαφορετικό. Όλα τα υπόλοιπα χτίστε τα σε τεχνολογίες που ξέρουμε ήδη πώς χαλάνε.

Αυτό το τελευταίο είναι το πραγματικό όφελος. Όταν η PostgreSQL συμπεριφέρεται παράξενα, κάποιος το έχει ξαναδεί, το έχει καταγράψει και έχει απαντήσει στην ερώτηση. Το μήνυμα λάθους βρίσκεται με μια αναζήτηση, η συμπεριφορά υπό φορτίο είναι τεκμηριωμένη, και οι ακραίες περιπτώσεις συζητιούνται εδώ και δεκαετίες. Μια νέα βάση δεδομένων μπορεί κάλλιστα να είναι πιο γρήγορη στο benchmark της αρχικής της σελίδας. Σίγουρα όμως λίγοι ξέρουν πώς συμπεριφέρεται τη στιγμή που κάτι θα πάει στραβά, δηλαδή τη μόνη στιγμή που θα σας ενδιαφέρει πραγματικά.

Το δεύτερο όφελος ανήκει στον πελάτη. Ένα σύστημα χτισμένο στα πιο διαδεδομένα open source εργαλεία του κόσμου μπορεί να δοθεί σε οποιονδήποτε ικανό developer, οπουδήποτε, και να γίνει κατανοητό μέσα σε μια εβδομάδα. Αυτή η ιδιότητα αξίζει περισσότερο από τις περισσότερες λειτουργίες. Σημαίνει ότι μια επιχείρηση δεν είναι ποτέ όμηρος του ενός ανθρώπου που καταλάβαινε το έξυπνο κομμάτι. Ακόμη κι αν αυτός ο άνθρωπος είμαστε εμείς.

Το τρίτο είναι ότι μία γλώσσα τρέχει παντού. Με TypeScript στο web frontend, στον server και στα mobile apps, οι κανόνες που αποφασίζουν μια τιμή, ελέγχουν μια κράτηση ή μορφοποιούν μια ημερομηνία γράφονται μία φορά και μοιράζονται. Δεν ξαναγράφονται τρεις φορές, για να καταλήξουν σιγά σιγά να λένε διαφορετικά πράγματα. Τα περισσότερα bugs που με απασχολούν ζουν στα κενά ανάμεσα σε δύο υλοποιήσεις του ίδιου κανόνα. Όσο λιγότερα αντίγραφα, τόσο λιγότερα κενά.

Η PostgreSQL αξίζει μια δική της παράγραφο, γιατί συνήθως χρησιμοποιείται λιγότερο απ' όσο μπορεί. Είναι σχεσιακή βάση δεδομένων με πραγματικές συναλλαγές. Είναι επίσης απολύτως ικανή αποθήκη για έγγραφα JSON, μηχανή αναζήτησης πλήρους κειμένου και, με την επέκταση PostGIS, γεωγραφική βάση δεδομένων. Πολλά προϊόντα προσθέτουν ξεχωριστή υπηρεσία για καθένα από αυτά. Η καθεμία είναι κάτι ακόμη που πρέπει να τρέχει, να ασφαλιστεί, να έχει backup και να μένει συγχρονισμένο με τα υπόλοιπα. Συχνά η βαρετή απάντηση είναι ότι η βάση που ήδη έχετε μπορεί να το κάνει.

Βαρετό δεν σημαίνει ότι δεν αλλάζει ποτέ. Τα ίδια τα εργαλεία κινούνται συνέχεια. Τα React και Next.js βγάζουν μεγάλες εκδόσεις αρκετά συχνά ώστε να κρατούν τον καθένα απασχολημένο, και η παρακολούθησή τους είναι μέρος της δουλειάς. Αυτό που μένει σταθερό είναι η επιλογή των θεμελίων, ώστε η προσπάθεια να πηγαίνει στο προϊόν και όχι στη μετακόμιση από τη μια μόδα στην άλλη.

Και υπάρχει στιγμή για να ξοδέψετε ένα κουπόνι. Όταν το ίδιο το προϊόν είναι η νέα ιδέα, όταν η ασυνήθιστη τεχνολογία είναι αυτό για το οποίο πληρώνουν οι πελάτες, τότε η ασυνήθιστη τεχνολογία είναι η σωστή επιλογή. Η πειθαρχία βρίσκεται στο να ξοδέψετε το κουπόνι σκόπιμα, μία φορά, εκεί που μετράει. Όχι αυτόματα, σε κάθε επίπεδο, μόνο και μόνο επειδή κυκλοφόρησε κάτι καινούργιο.

Common questions

Τι σημαίνει «choose boring technology»;
Είναι η αρχή, που έκανε γνωστή ο Dan McKinley, να χτίζετε πάνω σε καθιερωμένα εργαλεία που η συμπεριφορά τους και οι τρόποι που αποτυγχάνουν είναι ευρέως γνωστοί. Τη νέα ή αδοκίμαστη τεχνολογία την κρατάτε για τα λίγα σημεία όπου δίνει πραγματικό πλεονέκτημα στο προϊόν.
Αρκεί η PostgreSQL για μια πλατφόρμα e-commerce ή κρατήσεων;
Για τις περισσότερες, ναι. Η PostgreSQL εξασφαλίζει την ακεραιότητα των συναλλαγών για παραγγελίες και πληρωμές. Χειρίζεται επίσης δεδομένα JSON, αναζήτηση πλήρους κειμένου και, με το PostGIS, γεωγραφικά ερωτήματα. Αυτές οι δυνατότητες συχνά προστίθενται ως ξεχωριστές υπηρεσίες, ενώ θα μπορούσε να τις δώσει η βάση που ήδη υπάρχει.
Γιατί mobile apps σε React Native και όχι εξ ολοκλήρου native;
Γιατί το app μπορεί να μοιράζεται την επιχειρησιακή λογική και τη γλώσσα του με την web πλατφόρμα και τον server, οπότε κανόνες όπως η τιμολόγηση και οι έλεγχοι γράφονται μία φορά. Όπου ένα προϊόν χρειάζεται εκτεταμένη δουλειά ειδικά για μία πλατφόρμα, μπορούν να γραφτούν native modules μόνο για εκείνο το κομμάτι.

More from Panagiotis Athanasakopoulos

Initiate the blueprint

Talk to him directly.

Στην TWENTYONE δεν υπάρχει account manager. Πείτε μας τι ετοιμάζετε. Την πρώτη κουβέντα θα την κάνετε με τον άνθρωπο που θα αποφασίσει πώς θα φτιαχτεί.

Honestly? You’re going to regret switching tabs.

Δύσκολα θα βρείτε κορυφαίους custom developers που να νοιάζονται πραγματικά για το πώς θα μεγαλώσει η επιχείρησή σας.

Είμαστε οι καλύτεροι σε αυτό που κάνουμε, και το δείχνει η δουλειά μας. Μη χάσετε χρόνο και χρήματα με κάτι λιγότερο.

Με πείσατε.
Ας μιλήσουμε.