Το Δρομολόγιο της Ανάπτυξης II: 25 Στάσεις και το Άνοιγμα στον Κόσμο
By Miltos Vafiadis
Αυτός είναι ο δεύτερος τόμος. Ο πρώτος χαρτογραφεί τα iterations 1–24, από το πρώτο commit μέχρι ένα προϊόν που δουλεύει. Το άρθρο υπάρχει και στα αγγλικά.
Ο πρώτος τόμος τελείωνε στις 3 Αυγούστου με ένα phrasebook και μια υπόσχεση ότι το ταξίδι συνεχίζεται. Συνεχίστηκε. Πεντέμισι εβδομάδες αργότερα το κοντέρ γράφει 49 iterations, και κάπου στη μέση τους η εφαρμογή έπαψε να είναι κάτι που έφτιαχνα και έγινε κάτι που χρησιμοποιούν άλλοι — στις 4 Σεπτεμβρίου, όταν το planitshare.app άνοιξε κανονικά στον κόσμο και, μέσα στις επόμενες μέρες, μπήκαν καμιά εικοσαριά άνθρωποι που δεν είχα γνωρίσει ποτέ.
Αυτός ο τόμος είναι το κομμάτι της ιστορίας όπου τα ενδιαφέροντα προβλήματα σταμάτησαν να είναι «πώς το φτιάχνω αυτό» και έγιναν «πώς ξέρω ότι αυτό είναι αλήθεια». Ορίστε η διαδρομή. (Ο χάρτης είναι στα αγγλικά — όπως και ο κώδικας.)
Σκέλος 1 — The B-Side (iterations 25–27)
Όποιος ταξιδεύει μαζί μου κάνει την ίδια ερώτηση: πού θα φάμε. Το B-Side είναι η προσπάθειά μου για έναν ψηφιακό Μίλτο — ένα AI που προτείνει πράγματα φτιαγμένα από την καθημερινότητα ενός τόπου αντί για τη λίστα με τα αξιοθέατα, μαζί με το εσωτερικό αστείο ότι σου προτείνει καφενείο ενώ εσύ ζήτησες μουσείο.
Και μετά το iteration 26 μου έμαθε το πιο χρήσιμο πράγμα όλου του τόμου. Όταν έλεγξα τις προτάσεις σοβαρά, το μοντέλο δεν είχε βγάλει ούτε ένα μέρος από το μυαλό του. Κάθε μπαρ, κάθε γέφυρα, κάθε φούρνος ήταν αληθινά. Αυτό που έβγαζε από το μυαλό του ήταν ο λόγος: ένα υπαρκτό μπαρ περιγραφόταν ως φτηνή ταβέρνα χωρίς κατάλογο, μια υπαρκτή γέφυρα ως γέφυρα που ανοίγει για να περνούν βάρκες. Η φαντασία δεν ήταν στο ουσιαστικό, ήταν στο επίθετο — δηλαδή ακριβώς εκείνη που επιβιώνει από ένα βιαστικό κοίταγμα. Τώρα λοιπόν κάθε ισχυρισμός περνάει από τη δική του αναζήτηση στο web, το μοντέλο επιτρέπεται να πει «δεν ξέρω» για την τιμή, και μια κατηγορία επιτρέπεται να γυρίσει άδεια. Και βλέπεις ζωντανά τον έλεγχο να γίνεται, πρόταση-πρόταση.
Στο iteration 27 το B-Side έπαψε να είναι εργαλείο ενός ανθρώπου: κάθε ταξίδι απέκτησε καρτέλα Explore, όπου όλη η παρέα ψηφίζει τις ιδέες — με όνομα, όχι ανώνυμα νούμερα — και οι νικήτριες περνάνε κατευθείαν στο πρόγραμμα.
Σκέλος 2 — Ground Truth (iterations 28–32)
Το Ground Truth είναι η εγκυκλοπαίδεια των χωρών: πρίζες, τάση ρεύματος, νερό της βρύσης, φιλοδωρήματα, τηλέφωνα έκτακτης ανάγκης, κανόνες εισόδου και βίζας, κάρτες άφιξης. Είναι επίσης το μοναδικό σημείο της εφαρμογής όπου, όταν πατάς το κουμπί, δεν τρέχει κανένα AI. Η έρευνα έχει γίνει από πριν, ένας άνθρωπος την ελέγχει και τη δημοσιεύει, και κάθε στοιχείο κουβαλάει την ημερομηνία που ελέγχθηκε. Παίρνεις απάντηση στο δευτερόλεπτο, και είναι κρίση ανθρώπου — όχι φρέσκια εικασία.
Η ιστορία που το διαμόρφωσε: ο κανόνας διαβατηρίου για την Ταϊλάνδη δημοσιεύτηκε με πηγή το thaiembassy.com — ένα εμπορικό γραφείο βίζας, ένα γράμμα μακριά από το πραγματικό δίκτυο της ταϊλανδέζικης πρεσβείας στο .org. Κι ένας προσεκτικός άνθρωπος το ενέκρινε, γιατί οι προσεκτικοί άνθρωποι εγκρίνουν πράγματα. Ο έλεγχος πηγών λοιπόν βγήκε από το κεφάλι του ελεγκτή και μπήκε στον κώδικα· η επανάληψη της έρευνας έφερε το ταϊλανδέζικο υπουργείο Εξωτερικών, με μηδέν εμπορικές πηγές από τις έξι στις επτά που είχε πριν.
Ο κανόνας που βγήκε από εκεί ισχύει για όλη την εφαρμογή: η απουσία δεδομένων δεν είναι άδεια εισόδου. Αν δεν ξέρουμε αν το διαβατήριό σου καλύπτει έναν κανόνα, ο κανόνας εμφανίζεται ουδέτερος — ποτέ πράσινος.
Σε αυτό το σκέλος κρύβεται και το αγαπημένο μου bug όλου του project. Ένα ταξίδι με τίτλο «Family in Halkidiki» καρφίτσωσε τη θέση του στην Ιντιάνα των ΗΠΑ, επειδή στη μηχανή αναζήτησης άρεσε το «in». Η Χαλκιδική, όπως αποδείχθηκε, έλειπε ολόκληρη από εκείνον τον πάροχο χαρτών. Μπήκε δεύτερη μηχανή αναζήτησης από πίσω.
Σκέλος 3 — Ταξίδι με την οικογένεια (iterations 33–36)
Μια διαπίστωση που μου κόστισε ένα ολόκληρο iteration για να τη δω: ένα παιδί δεν έχει email, άρα καμία εφαρμογή δεν μπορεί να το προσκαλέσει πουθενά. Κάθε εφαρμογή που είχα αντιγράψει, μαζί και η δική μου, θεωρούσε ότι «ποιος είναι σε αυτό το ταξίδι» και «ποιος μπορεί να συνδεθεί και να το αλλάξει» είναι η ίδια λίστα. Δεν είναι. Η συμμετοχή στο ταξίδι είναι δικαίωμα· η παρουσία στο ταξίδι είναι γεγονός. Μόλις χώρισαν αυτά τα δύο, ακολούθησαν τα νοικοκυριά, τα παιδιά, τα πολλαπλά διαβατήρια ανά άτομο και μια πραγματική λίστα ελέγχου πριν φύγεις.
Και μετά το αντίστροφο: ο/η σύντροφος που ξεκίνησε ως μια γραμμή μέσα στο νοικοκυριό κάποιου άλλου μπορεί πλέον να διεκδικήσει δικό του λογαριασμό, και τα διαβατήριά του μεταφέρονται σε αυτόν — ο κάτοχος του νοικοκυριού χάνει την πρόσβαση, δεν κερδίζει. Το iteration 36 έφερε τους buddies, ώστε το να καλέσεις τους ανθρώπους με τους οποίους ταξιδεύεις πάντα να είναι ένα πάτημα, αντί να γράφεις ένα email που όλο το γράφεις λάθος.
Στο ίδιο σκέλος, για όποιον έχει πετάξει ποτέ ένα μπουκάλι νερό στον έλεγχο ασφαλείας: δεκαεπτά αεροδρόμια είναι πλέον καταχωρημένα ως αεροδρόμια που κατάργησαν το όριο των 100 ml για τα υγρά στην καμπίνα — και όσα το έχουν κάνει μόνο σε κάποιες λωρίδες παίρνουν άλλη πρόταση, όχι έναν πράσινο τίτλο με ψιλά γράμματα από κάτω. Έτσι ακριβώς βρίσκεται κανείς στη λάθος ουρά.
Σκέλος 4 — Τα παιχνίδια (iterations 37–40)
Δύο, και είναι ξεκάθαρα για την πλάκα τους.
Το Been There Done That είναι ο χάρτης του κόσμου που έχεις πραγματικά δει — τσεκάρεις χώρες πάνω στον χάρτη, μαζεύεις σφραγίδες διαβατηρίου, κυνηγάς 229 επιλεγμένα μέρη σε πέντε συλλογές (Θαύματα, μνημεία της UNESCO, μια λίστα με τις 50 κορυφαίες παραλίες, τοποθεσίες γυρισμάτων του Game of Thrones, και τα μαγαζιά που κατέγραψε ο Anthony Bourdain). Βγήκε πριν το μεσημέρι και μετά συνέχισε να εξελίσσεται όλο το απόγευμα όσο έπαιζα μαζί του, που είναι και ο καλύτερος τρόπος να ανακαλύψεις τι λείπει.
Το Aviation Geek Log είναι για το άλλο είδος ταξιδιώτη: καταγράφεις αεροπορικές, τύπους αεροσκαφών και αεροδρόμια που έχεις πετάξει, κερδίζεις δέκα σήματα, παίζεις το κουίζ με τους κωδικούς, συγκρίνεις το μητρώο σου με ενός φίλου. Από κάτω υπάρχει ένα dataset φτιαγμένο στο χέρι με 1.003 αεροπορικές και 119 τύπους αεροσκαφών. Η αγαπημένη μου σχεδιαστική απόφαση εκεί μέσα: το μητρώο σου μετράει ό,τι πέταξες ποτέ, αλλά οι μπάρες προόδου μετράνε μόνο ό,τι πετάει ακόμη — έτσι εκείνη η πτήση με τη Sabena το 2001 σου δίνει σήμα Retro Airlines αντί να σου κρατάει για πάντα το ποσοστό χαμηλά.
Ανάμεσα στα δύο, το iteration 39 έκανε κάτι λιγότερο διασκεδαστικό και πιο καθυστερημένο: η εφαρμογή άρχισε να λέει φωναχτά ότι είναι σε Beta και ότι τα επιμελημένα της δεδομένα δεν είναι πλήρη. Και τη στιγμή που το παραδέχτηκε, η παραδοχή έγινε η πρόσκληση — ζητούνται άνθρωποι επιμελητές. Χρησιμοποίησέ την, στείλε πραγματικά σχόλια, κι αν η κρίση σου σταθεί, παίρνεις δικό σου γραφείο επιμέλειας.
Σκέλος 5 — Έξω στον κόσμο (iterations 41–44)
Το iteration 41 άνοιξε τα Lessons: πέντε πραγματικές μελέτες περίπτωσης από αυτό ακριβώς το χτίσιμο, γραμμένες για προπτυχιακούς φοιτητές, 95 μαθήματα σε βάθος, με μόνιμο σύνδεσμο το καθένα ώστε μια διαφάνεια σε μάθημα να μπορεί να παραπέμψει κατευθείαν εκεί. Οι σελίδες εννοιών δείχνουν το ίδιο σχήμα αποτυχίας να χτυπάει σε πέντε εντελώς διαφορετικές τεχνολογίες. Είναι το πρώτο κομμάτι του site φτιαγμένο για να διαβάζεται, όχι για να χρησιμοποιείται.
Και μετά, στις 4 Σεπτεμβρίου, το planitshare.app άνοιξε στον κόσμο. Όλο αυτό το iteration ξεκίνησε από ένα screenshot: ένα άρθρο μοιρασμένο σε εφαρμογή συνομιλίας, όπου η προεπισκόπηση είχε κόψει το λογότυπό μου σε «...anitshare...», επειδή οι εφαρμογές συνομιλίας κόβουν προς ένα κεντρικό τετράγωνο και τίποτα δεν είχε συντεθεί για αυτό. Ακολούθησαν σωστές προεπισκοπήσεις, RSS και ευρετηρίαση από τις μηχανές αναζήτησης.
Αυτό που ακολούθησε είναι ο λόγος που υπάρχει αυτό το σκέλος. Μπήκαν καμιά εικοσαριά άνθρωποι που δεν είχα γνωρίσει ποτέ, και κάθε οθόνη διαχείρισης της εφαρμογής αποδείχθηκε φτιαγμένη για έναν κόσμο όπου ήξερα προσωπικά κάθε χρήστη. Και οι τέσσερις αντικαταστάτριες οθόνες σχεδιάστηκαν, εγκρίθηκαν και φτιάχτηκαν μέσα σε μία μέρα.
Και μετά τα νούμερα έγιναν ειλικρινή. Το να εξαιρέσω τους δικούς μου λογαριασμούς από τις αναφορές πήρε ένα απόγευμα και παρήγαγε, μέσα σε μία ώρα, την πιο χρήσιμη πρόταση του τόμου: κάθε Smart Mileage Search του προηγούμενου μήνα ήταν δική μου. Δύο μέλη είχαν τσεκάρει μέρη στο Been There Done That, ένα είχε σφραγίσει το Logbook, ένα είχε φτιάξει λίστα στο B-Side. Αυτή είναι μια αληθινή εικόνα ενός αληθινού προϊόντος στη δεύτερη εβδομάδα του, και την προτιμώ από μια κολακευτική.
Σκέλος 6 — Όργανα και αφίξεις (iterations 45–49)
Το iteration 45 είναι αυτό που προτείνω σε όποιον φτιάχνει οτιδήποτε: πήρα την εφαρμογή σε ένα αληθινό ταξίδι — Λονδίνο, Οκτώβριο — και δύο μέρες πραγματικής χρήσης έβγαλαν περισσότερες διορθώσεις απ' όσες θα έβγαζε το spec που είχα γράψει για εκείνο το iteration. Τίποτα δεν βρίσκει τις γωνίες σαν το να γίνεις ο ίδιος ο εκνευρισμένος χρήστης σου.
Το iteration 46 έφερε το Will It Be Late?, που απαντά σε αυτό που ο πίνακας αναχωρήσεων δεν λέει ακόμη: όχι «έχει καθυστέρηση η πτήση μου», αλλά «το ίδιο το αεροσκάφος που θα κάνει την πτήση μου τρέχει καθυστερημένο αυτή τη στιγμή κάπου αλλού;». Κυνηγάει το εισερχόμενο αεροσκάφος ακριβώς ένα σκέλος πίσω, με ζωντανά δεδομένα από το FlightAware, και λέει «δεν μπορώ να ξέρω» αντί να μαντέψει παραπέρα. Το δοκίμασα το ίδιο βράδυ σε αληθινές αναχωρήσεις, διαλέγοντας επίτηδες την Κωνσταντινούπολη ως δύσκολη περίπτωση, και βγήκαν έξι διορθώσεις πριν τα μεσάνυχτα.
Το iteration 47 άνοιξε κανονικά το γραφείο επιμέλειας, ώστε οι εθελοντές που προσφέρθηκαν να βοηθήσουν με τα δεδομένα των προγραμμάτων πιστότητας να έχουν επιτέλους πού να πάνε. Το iteration 48 επιμελήθηκε τη Singapore Airlines από την αρχή ως το τέλος — 35 συνεργάτες, 75 περιοχές, 356 κανόνες, περασμένοι από τον επίσημο πίνακα της ίδιας της εταιρείας — και το iteration 49 έβγαλε ζωντανό το KrisFlyer ως τρίτο πρόγραμμα πιστότητας.
Η πραγματική ιστορία του 49 όμως είναι ο επανέλεγχος. Ένα δεύτερο πέρασμα από διαφορετικό μοντέλο βρήκε πέντε λάθη σε εκείνα τα ολοκαίνουργια δεδομένα. Η δική μου δεκάλεπτη βόλτα στο γραφείο επιμέλειας βρήκε άλλα δύο, που ένας agent είχε ήδη υπογράψει ως καθαρά. Και το χειρότερο εύρημα δεν ήταν καν στα δεδομένα: ρωτώντας γιατί το Will It Be Late? «δεν είχε ακούσει ποτέ» για μια πτήση που καθόταν στην πύλη 12, αποκαλύφθηκε ότι δεν είχε δουλέψει ποτέ για τις αυριανές πτήσεις, από τη μέρα που βγήκε — ο πάροχος αρνιόταν το αίτημα, κι η εφαρμογή μετέφερε ευγενικά αυτή την άρνηση στους ταξιδιώτες ως «δεν υπάρχει τέτοια πτήση».
Τα νούμερα
Διδάσκω· ξέρω καλά το βλέμμα «ωραία τα λες, δείξε μου τα δεδομένα». Σαράντα εννιά iterations σε λίγο λιγότερο από δέκα εβδομάδες. Τρία προγράμματα πιστότητας περασμένα στο χέρι, με το νεότερο να φτάνει μόνο του τους 356 κανόνες. 1.003 αεροπορικές και 119 τύποι αεροσκαφών στο dataset του Logbook. 229 επιλεγμένα μέρη στο παιχνίδι. 95 μαθήματα στο εκπαιδευτικό κομμάτι. Δύο γλώσσες σε απόλυτο συγχρονισμό, κάθε κείμενο, κάθε iteration. Μία βάση δεδομένων παραγωγής, με κάθε migration ελεγμένο πριν τρέξει.
Τέσσερα πράγματα που μου έμαθε αυτός ο τόμος
Το AI έπαψε να είναι το ενδιαφέρον κομμάτι. Ο έλεγχος έγινε το ενδιαφέρον κομμάτι. Οποιοσδήποτε μπορεί να βάλει ένα μοντέλο να βγάλει μια σίγουρη παράγραφο· η μηχανική είναι στο να αποφασίσεις τι πρέπει να επαληθευτεί, από τι, πριν το δει άνθρωπος.
Η απουσία δεδομένων δεν είναι άδεια εισόδου. Ο έλεγχος διαβατηρίου μένει ουδέτερος όταν δεν ξέρει. Ο κανόνας για τα υγρά δεν λέει τίποτα εκεί που δεν έχει τεκμηριωθεί. Το κενό είναι κενό, και το να το ντύσεις με πράσινο τικ είναι ο τρόπος με τον οποίο το λογισμικό βλάπτει κάποιον.
Έλεγξε τα όργανα πριν τη μηχανή. Πάνω από μία φορά, αυτό που φαινόταν χαλασμένο ήταν το ταμπλό που το μετρούσε — το «σήμερα» υπολογισμένο σε λάθος ζώνη ώρας είπε σε έναν ταξιδιώτη στις 00:25 ώρα Ελλάδας ότι το ταξίδι του που είχε ήδη τελειώσει ήταν «σε εξέλιξη, ημέρα 13 από 13». Όταν το αποτέλεσμα φαίνεται λάθος, υποπτεύσου πρώτα τη μέτρηση.
Ένα δεύτερο ζευγάρι μάτια δεν είναι προαιρετικό — και δεν χρειάζεται να είναι ανθρώπινο. Κάποιος άνθρωπος όμως πρέπει να περπατήσει τον χώρο: τα δύο λάθη που επιβίωσαν από μηχανικό έλεγχο σε αυτόν τον τόμο βρέθηκαν με δέκα λεπτά κλικ και καχυποψίας.
Όλος ο τόμος σε μία σελίδα
Για μοιράσιμο, και για τον τοίχο:
Υπάρχει και boarding pass για κάθε iteration — η τράπουλα φτάνει πλέον και στα σαράντα εννιά — που θα συνεχίσω να ανεβάζω όσο προχωράει το ταξίδι.
Θες να έρθεις μαζί; Επιβιβάσου — δωρεάν. Κι αν προτιμάς να το χτίσεις αντί απλώς να το χρησιμοποιείς, το πρόγραμμα beta και τα γραφεία επιμέλειας είναι ανοιχτά από το dashboard σου — και το μόνο προσόν που ζητάνε και τα δύο είναι να κρίνεις σωστά.
Comments
No comments yet — be the first.
