Πίσω στην κοινότητα

Παραγωγικός μέντορας και αυτοματοποιητής συστημάτων

Σε έχουν χαρακτηρίσει αρνητικά ως πολυτεχνίτη; Ίσως όμως να είναι τελικά κάτι καλό, ειδικά όταν καθοδηγείς ανθρώπους από διαφορετικά υπόβαθρα, με διαφορετική εμπειρία στον προγραμματισμό και διαφορετικές κουλτούρες! Ο Isaac είναι ένας αυτοαποκαλούμενος άνθρωπος της τεχνολογίας και πολυτεχνίτης...ανάμεσα σε πολλά άλλα!

Δες το στο Youtube
ΔΙΑΡΚΕΙΑ 37ΛΕΠΤΑ

Jonathan: Γεια σε όλους και καλώς ήρθατε στο Exercism Community Podcast. Έχω την τιμή να έχω μαζί μου τον Isaac, ο οποίος είναι ένας από τους συντηρητές και τους συνεισφέροντές μας και πρόσφατα έκανε πολλή καθοδήγηση σε πολλούς μαθητές στα GoHorts μας, τις ομάδες μάθησης που τρέξαμε για 30 μέρες, δύο φορές νομίζω πια, ειδικά στη Go και στην Elixir. Και ο Isaac βοήθησε στη διαδρομή της Go, κάτι που ήταν καταπληκτικό. Λοιπόν Isaac, ένα τεράστιο καλωσόρισμα. Θα μου έλεγες λίγα λόγια για το πού μένεις, από πού κατάγεσαι και πώς μπήκες στον χώρο της τεχνολογίας; Isaac: Ναι, μένω στην Καλιφόρνια. Μένω στο Σαν Χοσέ της Καλιφόρνια. Η ειλικρινής αλήθεια είναι ότι μπήκα στην τεχνολογία επειδή ο μεγαλύτερος αδερφός μου ήταν στην τεχνολογία και εγώ έκανα ό,τι έκανε εκείνος. Είχαμε πολλά αδέρφια. Μας άρεσε να περνάμε χρόνο μαζί, ή σε κάποιους άρεσε να περνάει ο ένας με τον άλλον περισσότερο από ό,τι σε άλλους. Είχα έναν μεγαλύτερο αδερφό με τον οποίο μου άρεσε πολύ να περνάω χρόνο. Σε εκείνον δεν άρεσε απαραίτητα το ίδιο να περνάει χρόνο μαζί μου, αλλά εγώ τον ακολουθούσα συνέχεια και ήθελα να κάνω ό,τι έκανε εκείνος. Πήρε ένα βιβλίο "C for Dummies" που βρισκόταν στο σπίτι όταν ήταν περίπου 15 χρονών, και εγώ ήμουν 9, αν θυμάμαι καλά. Άρχισε λοιπόν να γράφει C, και σκέφτηκα ότι αν το κάνει εκείνος, θα το κάνω κι εγώ. Τα προγράμματά μου ήταν αρκετά απλά και βασικά σε εκείνη την ηλικία. Ήταν πιο πολύ του τύπου "πώς σε λένε, γεια σου Bob". Δεν ήταν υπερβολικά πολύπλοκα. Πρέπει να ξεκινήσεις από κάπου. Έπρεπε να ξεκινήσω από εκεί. Σκέφτηκα ότι μπορείς να τυπώσεις τον οπτικό χαρακτήρα και βγάζει ήχο. Αυτό είναι τόσο ωραίο. Έγραψα ένα πρόγραμμα που κυριολεκτικά τυπώνει ένα κάθετο A. Αλλά ξεκινούσα στα 9. Έγραφα προγράμματα σε C. Είχαμε ένα παλιό μηχάνημα με Windows 3.1 που έκανε boot σε DOS και μετά ο αδερφός μου είχε στήσει ένα batch script, ώστε όταν ξεκινούσε ο υπολογιστής να εμφανίζεται ένα μενού όπου μπορούσες να επιλέξεις να ανοίξεις τα Windows, τα παιχνίδια, κάτι σαν μενού παιχνιδιών. Μπορούσες να πληκτρολογήσεις 5 για το Warcraft ή ό,τι άλλο. Έτσι έγραφα batch scripts καθώς είχαμε εγκαταστήσει κι άλλα παιχνίδια και τα λοιπά. Από εκεί και πέρα πήραμε την κατηφόρα. Ο αδερφός μου πήγε στο πανεπιστήμιο για μηχανικός υπολογιστών και για άλλη μια φορά σκέφτηκα ότι αν το κάνει εκείνος, θα το κάνω κι εγώ. Έτσι άρχισα να γράφω C όταν ήμουν 9. Έγραφα... Visual Basic 6 στο λύκειο. Είχα ένα POM pilot στο οποίο έγραφα διάφορα προγράμματα στο λύκειο. Ο καθηγητής μου στα μαθηματικά ήταν πολύ cool. Ήμουν σε ένα από εκείνα τα παλιά... Jonathan: Αυτό ήταν κάτι σαν, θυμάσαι που προσπάθησαν να κυκλοφορήσουν κάτι σαν το προ-iPad και κάποιοι λίγοι το απέκτησαν και είχε αυτό το μικρό πραγματάκι με το στυλό για γράψιμο; Και όλοι νόμιζαν ότι ήταν σούπερ cool γιατί έβγαινε από μέσα, και ήταν σαν ζουπ, και μετά μπορούσες να το χτυπάς με το στυλό. Ήταν κάπως, δεν... Το θυμάμαι πάντα αυτό γιατί μετά άρχισε να βγαίνει το iPad και όλοι έλεγαν, α, λίγο νωρίς. Το ένα pilot ήταν ακριβώς εκεί, λίγο μπροστά από την εποχή του, καταλαβαίνεις τι λέω; Isaac: Ήταν εξαιρετικό για μια δεκαετία περίπου, αλλά ναι, υπάρχει το palm graffiti που χρησιμοποιούσες για εισαγωγή. Υπάρχει ένα μικρό pad εισαγωγής, και έπρεπε να γράφεις χαρακτήρες, αλλά ήταν κάπως βασισμένοι στο αλφάβητο. Δηλαδή το A ήταν απλώς ένα τρίγωνο και το F ήταν η ορθή γωνία. Ναι, ο καθηγητής μου στα μαθηματικά στο λύκειο μου είπε, αν έγραψες το πρόγραμμα, είναι εντάξει να το χρησιμοποιήσεις στο διαγώνισμα. Έτσι έγραφα προγράμματα για POM pilot στο λύκειο, κάτι που ήταν πραγματικά ωραίο. Πήγα στο πανεπιστήμιο για μηχανικός υπολογιστών. Έβλεπα κόσμο να μιλάει για γλώσσες scripting. Δεν ήξερα ακριβώς τι ήταν αυτές, οπότε διάλεξα στην τύχη την Perl. Και μετά βγήκα από τη μεταπτυχιακή σχολή, πήγα και με προσέλαβε η Google. Το 2013 με μετακίνησαν από την Ανατολική Ακτή στην Καλιφόρνια. Και εκεί έπιασα την Python πριν από περίπου μια δεκαετία. Και η Python είναι η κύρια γλώσσα μου τα τελευταία δέκα χρόνια. Δούλεψα στη Google, οπότε το στυλ μου είναι πολύ επηρεασμένο από το στυλ της Google. Και γι' αυτό γράφω κυρίως έτσι. Και μετά, περίπου... Πριν από τέσσερα χρόνια, υποθέτω το 2018 περίπου, η Google άρχισε να προωθεί τη γλώσσα Go εσωτερικά και τότε έπιασα τη Go. Jonathan: Ωραία. Και Isaac, όταν μιλάς για το στυλ της Google, υπήρχε μια συγκεκριμένη αίσθηση ότι αυτός είναι ο σωστός τρόπος να το κάνεις ή ήταν κάτι σαν... πώς, ανάπτυξέ το λίγο αυτό γιατί έχει ενδιαφέρον. Isaac: Το στυλ γραφής κώδικα δεν είναι απαραίτητα ο σωστός τρόπος να το κάνεις, αλλά περισσότερο ένας ενιαίος τρόπος που όλοι πρέπει να ακολουθούν. Λένε ότι μια καλή συμφωνία ή μια καλή συναλλαγή είναι αυτή όπου κανείς δεν είναι ευχαριστημένος. Κανείς δεν είναι απόλυτα ευχαριστημένος με τον οδηγό στυλ, αλλά όσο όλοι τον ακολουθούν, ο κώδικας φαίνεται ενιαίος. Αυτό σημαίνει ότι οποιοσδήποτε μπορεί να πάρει οποιοδήποτε κομμάτι κώδικα στη βάση κώδικα της Google και να κάνει αλλαγές, και όσο ακολουθεί τις ίδιες κατευθύνσεις στυλ, ο κώδικας είναι όλος ενιαίος, δεν χρειάζεται να σκέφτεσαι "αυτή η βάση κώδικα χρησιμοποιεί τέσσερα κενά για στοίχιση και αυτή δύο" ή "αυτή έχει αυτή τη σύμβαση ονοματοδοσίας και εκείνη κάποια άλλη". Τα πάντα σε ολόκληρη τη βάση κώδικα γίνονται με τον ίδιο τρόπο. Κανείς δεν είναι ευχαριστημένος με τίποτα από αυτά. Ο καθένας έχει τα σημεία όπου θα ήθελε να γίνεται διαφορετικά, αλλά δεδομένου ότι υπάρχει ένας τεκμηριωμένος οδηγός στυλ, δημόσια διαθέσιμος, μπορείς απλώς να ψάξεις στο Google για τον οδηγό στυλ της Google για την Python και σου λέει πώς γράφουμε κώδικα στη Google. Όσο όλοι μένουν σε αυτόν τον οδηγό, ο κώδικας φαίνεται πολύ ενιαίος, κάτι που είναι πολύ ωραίο, γιατί μπορείς να ανοίξεις οποιαδήποτε βάση κώδικα και να μην υπάρχουν εκπλήξεις του τύπου "α, αυτό θα το έγραφαν διαφορετικά". Jonathan: Γι' αυτό μήπως η Go ταιριάζει τόσο καλά σε αυτό το πλαίσιο; Επειδή είναι μορφοποιημένη και είναι ακριβώς έτσι όπως είναι. Σίγουρα φαίνεται η επιρροή της Google σε αυτό. Isaac: Ναι, δεν ξέρω πόσο επηρεάστηκε ο Rob Pike από την προσέγγιση της Google ή πόσο εκείνος επηρέασε την προσέγγιση της Google. Δεν είμαι σίγουρος ποιο οδήγησε σε ποιο, αλλά η Go το πάει σίγουρα σε άλλο επίπεδο, όπου... Υπάρχουν ακόμη περισσότερα, όπως στην Python υπάρχουν διαφορετικά στυλ και ο κόσμος ρυθμίζει τους linters του να δέχονται διαφορετικά πράγματα. Για παράδειγμα, εσωτερικά η Google χρησιμοποιεί δύο κενά για στοίχιση στην Python επειδή υπάρχει πολύς κώδικας με βαθιά εμφώλευση και δεν θέλουν να έχουν έναν τεράστιο τοίχο από κενά. Εξωτερικά, οι περισσότεροι χρησιμοποιούν τέσσερα κενά, και αυτό είναι κάπως γραμμένο στην τεκμηρίωση της Python. Αλλά ναι, όσον αφορά τη Go, το πήγαν σε άλλο επίπεδο και είπαν ότι η ίδια η γλώσσα έχει και τη μορφοποίηση. Υπάρχει μόνο ένας τρόπος μορφοποίησης. Δεν υπάρχουν επιχειρήματα για το ποιος είναι ο σωστός τρόπος. Υπάρχει μόνο ένας τρόπος. Jonathan: Γλιτώνει πάρα πολύ πήγαινε-έλα. Ας το πούμε έτσι. Ναι. Ωραία λοιπόν. Isaac: Ναι. Jonathan: Λοιπόν, όταν ξεκίνησες στη Google, δεν είχες δουλέψει ποτέ με Python ή είχες ασχοληθεί λίγο, ή ήταν μια εύκολη μετάβαση; Πώς... γιατί το έκανες να ακούγεται σαν να πήρες τη δουλειά στη Google και μετά ήταν "εντάξει, μάθε Python, πάμε". Isaac: Σωστά. Πιστεύω ότι πριν μπω στη Google δεν είχα γράψει ποτέ Python. Έγραφα Perl για ένα-δύο χρόνια. Υποθέτω ένα-δύο χρόνια μέχρι τότε είχα αρχίσει να γράφω Perl. Την πρώτη μου καλοκαιρινή δουλειά. Είναι όλη μια άλλη ιστορία. Άρχισα να γράφω Perl έξι χρόνια πριν μπω στη Google, οπότε έγραφα αρκετή Perl εκείνη την εποχή. Έγραφα λίγο Bash, οπότε ήμουν εξοικειωμένος με τις γλώσσες scripting. Αλλά δεν είχα γράψει ποτέ Python. Όμως όταν έχεις ασχοληθεί με αρκετές γλώσσες... η καμπύλη μάθησης είναι λιγότερο απότομη για να πιάσεις άλλη μια γλώσσα, γιατί έχεις δει τις περισσότερες δομές ήδη και είναι απλώς λίγο διαφορετική σύνταξη, λίγο διαφορετικό σύνολο εργαλείων. Αλλά είναι πολύ το ίδιο πράγμα, απλώς γραμμένο λίγο διαφορετικά. Οι δομές τείνουν να είναι αρκετά παρόμοιες. Έτσι, όταν έχεις πιάσει τέσσερις γλώσσες, το να πιάσεις μια πέμπτη είναι σαν "α, αυτό είναι απλώς γραμμένο λίγο διαφορετικά". Jonathan: Ναι, ναι. Αυτό έχει ενδιαφέρον. Τώρα, γέλασες λίγο με την πρώτη σου δουλειά, μετά το λύκειο. Επειδή λοιπόν, είχες πάντα στο μυαλό σου "θα ασχοληθώ με τη μηχανική, θα κάνω το θέμα με τους υπολογιστές"; Ήταν πάντα συνειδητή σκέψη ή ήταν απλώς "εδώ ταιριάζω φυσικά, αυτό μου αρέσει και τέλος"; Πώς ήταν... Isaac: Υποθέτω. Προσπαθούσα πολύ να ακολουθήσω τα βήματα του αδερφού μου. Πήγε για μηχανικός υπολογιστών. Άρχισε να γράφει προγράμματα. Άρχισε να προγραμματίζει όταν ήμουν παιδί. Τον ακολούθησα. Έγραφα προγράμματα από μικρός. Πήγε για μηχανικός υπολογιστών και αυτό ήταν, ήθελα να κάνω το ίδιο πράγμα με εκείνον, και επίσης περνούσα υπέροχα γράφοντας προγράμματα και όλα αυτά. Έτσι, από τότε που μπήκα στο λύκειο, και ο αδερφός μου πήγαινε ήδη στο πανεπιστήμιο, ήξερα ότι εκεί ήθελα να καταλήξω. Jonathan: Είναι λίγα χρόνια μεγαλύτερός σου, οπότε φαίνεται ότι είχε τεράστια επιρροή πάνω σου ως άνθρωπο. Πόσα άλλα αδέρφια έχεις; Ή ήταν ό,τι καλύτερο στα μάτια σου; Isaac: Έχω οκτώ αδέρφια, αλλά εκείνος ήταν σίγουρα αυτός με τον οποίο τα πήγαινα πολύ καλά. Είναι ένας από αυτούς με τους οποίους... υποθέτω τα πηγαίνω καλύτερα με κάποιους από ό,τι με άλλους. Όταν έχεις οκτώ, πάντα υπάρχει εύρος. Τα πήγαινα πολύ καλά μαζί του. Τείνουμε να σκεφτόμαστε πολύ παρόμοια. Τείνουμε να έχουμε παρόμοια ενδιαφέροντα. Ξετρελαινόμασταν με τους υπολογιστές όλη την ώρα. Ακόμα το κάνουμε. Στη γυναίκα του δεν αρέσει όταν αυτό γίνεται το θέμα της συζήτησης στο τραπέζι. Λέει, όχι δουλειά στο τραπέζι. Απλώς ξετρελαινόμαστε με τον προγραμματισμό και μιλάμε γι' αυτόν συνέχεια. Είναι πολύ δύσκολο να πω πόσο ήταν απλώς εγώ που ήθελα να τον αντιγράψω και πόσο το ότι είχαμε παρόμοια ενδιαφέροντα. Σίγουρα έχουμε παρόμοια ενδιαφέροντα τώρα. Δεν ξέρω πόσο από αυτό είναι έμφυτο και πόσο επίκτητο. Δεν μπορώ πραγματικά να σχολιάσω πόσο από αυτό είναι εγώ να τον αντιγράφω και πόσο το ότι έχουμε απλώς παρόμοια ενδιαφέροντα. Αλλά δεδομένου ότι ακολουθούσα τα βήματά του από μικρή ηλικία, τον ακολουθούσα και εκείνος έστρωνε κατά κάποιον τρόπο τον δρόμο και εγώ τον ακολουθούσα. Jonathan: Ναι, αυτό είναι πολύ ωραίο. Και εκείνος, πού είναι τώρα; Έτσι, από περιέργεια, είναι στην Ανατολική Ακτή; Isaac: Είναι ακόμα στην Ανατολική Ακτή, δουλεύει στην τεχνολογία. Δουλέψαμε για λίγο στην ίδια εταιρεία. Jonathan: Μάλιστα, ωραία. Ωραία λοιπόν. Τώρα, ένα από τα πράγματα που... έχεις ασχοληθεί πολύ με την ομάδα που μόλις είχαμε. Δηλαδή με την τελευταία ομάδα μάθησης, ειδικά με τη Go, τρέχαμε ένα πρόγραμμα 30 ημερών με τη Go, πώς... και η ενασχόλησή σου με το Exercism στο παρελθόν ήταν κυρίως στη συντήρηση, αλλά και αρκετή καθοδήγηση απ' ό,τι καταλαβαίνω. Πώς σου φάνηκε αυτή η κατανομή; Δηλαδή, πώς βρήκες το Exercism και ποιες είναι οι διαφορετικές πτυχές στις οποίες σου αρέσει να συνεισφέρεις; Isaac: Βρήκα αρχικά το Exercism επειδή προσπαθούσα να ξαναμάθω Haskell. Είχα πάρει ένα μάθημα Haskell 101 στη Google που ήταν αρκετά διασκεδαστικό. Και μετά σκέφτηκα ότι θα έπρεπε να ασχοληθώ περισσότερο με αυτό. Και αυτό έμεινε στην άκρη. Και μετά προσπάθησα να το ξαναπιάσω. Jonathan: και τα λέμε την επόμενη φορά. Isaac: Με οποιαδήποτε γλώσσα, βρίσκω ότι ο ευκολότερος τρόπος να τη μάθεις είναι να τη γράφεις πραγματικά. Ο ευκολότερος τρόπος να τη γράφεις είναι να έχεις έναν σκοπό γι' αυτό. Δεν έχω βρει κάποιον σπουδαίο σκοπό για να γράφω Haskell, κάτι που το έκανε πολύ δύσκολο να την πιάσω. Αλλά ανακάλυψα το Exercism και σκέφτηκα ότι αυτό μπορεί να με βοηθήσει να γράψω περισσότερη Haskell. Έτσι βρήκα αρχικά το Exercism. Μόλις μπήκα, σκέφτηκα ότι υπάρχει διαδρομή Python και διαδρομή Shell και κάτι ασκήσεις εδώ μέσα, οπότε... και κάτω στο λαγούμι; Jonathan: Και κάτω στο λαγούμι πήγες. Isaac: Ναι. Άρχισα να λύνω ασκήσεις σε Python. Άρχισα να λύνω ασκήσεις σε Bash. Έκανα μερικές από τις ασκήσεις της Go. Όταν εμφανίστηκε το Go Hort και κοίταξα μερικές από τις προηγούμενες λύσεις μου, είδα ότι πολλές είχαν υποβληθεί τρία χρόνια νωρίτερα. Έτσι, εγγράφηκα για πρώτη φορά στη διαδρομή της Go το 2019 και έλυσα ένα μέρος αυτών των ασκήσεων τότε. Και μετά έκανα Python για μια δεκαετία πια. Έτσι ένιωθα σχετικά άνετα να μπω ως μέντορας Python, και εκεί περνάω τον περισσότερο χρόνο μου σε ασκήσεις αυτές τις μέρες. Και μετά άρχισα να υποβάλλω PR, pull requests στη διαδρομή της Python επειδή υπήρχαν πράγματα που δεν ήταν στη σωστή τους θέση. Και μετά άρχισα να ασχολούμαι με τη διαδρομή της Bash. Και δεν είμαι απόλυτα σίγουρος πώς συνέβη, αλλά πέρασα από το να υποβάλλω διορθώσεις στη διαδρομή της Bash στο να γίνω συντηρητής της Bash. Jonathan: Έτσι απλά, δηλαδή είναι απλώς, πρόσεχε τι δηλώνεις, σωστά; Isaac: Ναι, και μετά ο Glenn έφτιαξε τη διαδρομή της Ock και σκέφτηκα, α, ξέρω Ock, μου αρέσει η Ock, ας μπω κι εγώ σε αυτό το βαγόνι. Έτσι βοήθησα να χτιστούν οι ασκήσεις στη διαδρομή της Ock. Δεν είμαι απόλυτα σίγουρος, αλλά νομίζω ότι πριν τρία χρόνια, όταν είδα τις ασκήσεις της Go, ολοκλήρωσα ολόκληρη τη διαδρομή και μετά ένας από τους μέντορες είπε, α, ολοκλήρωσες όλες τις ασκήσεις, ίσως θα έπρεπε να γίνεις μέντορας. Δεν είμαι αρκετά... δεν γράφω Go αρκετά συχνά, αρκετά τακτικά, ώστε να νιώθω άνετα να κάνω καθοδήγηση σε αυτή. Έτσι δεν ήμουν πραγματικά μέντορας Go. Αλλά όταν μπήκα στο Go Hort και υπήρχε ένα σωρό κόσμος που ήθελε καθοδήγηση, σκέφτηκα ότι θα μπορούσα να δηλώσω για καθοδήγηση για τον μήνα και να βοηθήσω εκεί. Αλλά πρόσφατα μπήκα στο Go Hort ως μαθητής. Και μετά θα γλιστρήσω από το τμήμα των μαθητών, υποθέτω. Jonathan: Πήγα κι εγώ και γλίστρησα από το τμήμα των μαθητών, υποθέτω. Πρόσεχε τι δηλώνεις. Σου λέω, φαίνεται να αναδύεται ένα μοτίβο όπου δηλώνεις για ένα πράγμα και καταλήγεις σε κάτι άλλο, αλλά αυτό είναι πολύ ωραίο. Λοιπόν, όσον αφορά την καθοδήγηση μαθητών στη διαδρομή της Go ειδικά, ποια είναι μερικά από τα πιο συνηθισμένα πράγματα που βλέπεις; Δηλαδή, η διαδρομή της Go, πιθανότατα έχει αρκετούς έμπειρους προγραμματιστές, θα έλεγα, που την έκαναν, ανθρώπους με κάποιο ιστορικό στην ανάπτυξη, αλλά ποια ήταν μερικά από τα πράγματα που παρατήρησες και σκέφτηκες "εντάξει, αυτά είναι τα συνηθισμένα σημεία όπου ο κόσμος φαίνεται να κολλάει"; Υπήρχαν μοτίβα ή πράγματα που βρήκες και είπες "εντάξει, αυτό είναι συνηθισμένο, αυτό εμφανίζεται αρκετά σταθερά, ενδεχομένως"; Isaac: Δεν ξέρω. Δεν έχω δει... Η περισσότερη καθοδήγηση που έχω κάνει αφορούσε ανθρώπους με ολοκληρωμένες λύσεις. Ο κόσμος τις περισσότερες φορές έχει λύσει την άσκηση πριν ζητήσει καθοδήγηση. Έτσι, ο κόσμος γενικά δεν κολλάει στις περισσότερες από τις συζητήσεις που έχω. Είναι κυρίως... ξέρεις, έχουν ολοκληρώσει με επιτυχία μια άσκηση και μετά πολλά από τα σχόλια είναι: υπάρχει πιο αποδοτικός τρόπος να το κάνω; Υπάρχει καλύτερος αλγόριθμος; Ένα από τα συνηθισμένα που εμφανίζονται υπερβολικά συχνά είναι η κατασκευή συμβολοσειρών, σε γλώσσες όπως η Go και η Python όπου οι συμβολοσειρές είναι αμετάβλητες, το να κάνεις πολλές συνενώσεις συμβολοσειρών δεν είναι πολύ αποδοτικό. Έτσι, είναι πολύ το "θα μπορούσες να το φτιάξεις με έναν πίνακα και μετά να ενώσεις τις συμβολοσειρές", ή μπορείς να χρησιμοποιήσεις ένα string builder στη Go. Υπάρχει λοιπόν πολύ το να τους σπρώχνεις προς καλύτερα, ας πούμε, μοτίβα, βέλτιστες πρακτικές και μοτίβα. Ευχαριστώ που μας παρακολουθήσατε. Jonathan: Εντάξει, ωραία. Έχει ενδιαφέρον. Τώρα λοιπόν, αυτή τη στιγμή, πώς μοιάζει η καθημερινότητά σου με τη δουλειά, από την άποψη του πού χωράει η ανάπτυξη; Δηλαδή, είσαι χρόνια στην τεχνολογία, πώς μοιάζει η μέρα; Ποιες είναι οι προκλήσεις; Ποια είναι τα κομμάτια που απολαμβάνεις στη δουλειά σου αυτή τη στιγμή; Isaac: Είμαι σε ρόλο μηχανικού αξιοπιστίας συστημάτων, που είναι περίπου παρόμοιος με το DevOps. Έχει και κάποια διαχείριση συστημάτων μέσα. Κουβαλάω βομβητή σε εναλλαγή εφημεριών εδώ και περίπου μια δεκαετία. Έτσι, η καθημερινότητά μου εξαρτάται πολύ από το αν είναι η εβδομάδα εφημερίας μου ή όχι. Όταν είμαι σε εφημερία, είναι πολύ το να προσέχω τον βομβητή, υπάρχει ουρά αιτημάτων, ουρά υποστήριξης, να διασφαλίζω ότι οποιεσδήποτε αποτυχημένες διεργασίες ή προβλήματα διαγιγνώσκονται και διορθώνονται. Αυτό είναι περίπου μία εβδομάδα στις έξι, ή όσο μεγάλη είναι η ομάδα αυτή τη στιγμή. Και τον υπόλοιπο καιρό, είμαι σε εφημερία. Jonathan: Μμ-χμ. Isaac: Περνάω πολύ χρόνο ασχολούμενος με τον αυτοματισμό, οπότε είναι πολύ το να εντοπίζω διαδικασίες που είναι δυσκίνητες και να τις κάνω λιγότερο δυσκίνητες. Μπορεί να... Μπορεί να υπάρχει λόγος που συμβαίνει αυτό, αλλά γενικά βρίσκω ότι μέχρι κάτι να αρχίσει, ξέρεις, όταν συμβαίνει αυτό το πρόβλημα, πρέπει να τρέξουμε, ξέρεις, να διορθώσουμε χειροκίνητα εκτελώντας αυτές τις εντολές και εκείνες τις εντολές, και σκέφτομαι, γιατί τρέχουμε αυτές τις εντολές με το χέρι; Μπορούμε να γράψουμε ένα script Python που να τα κάνει όλα αυτά για σένα; Ή μπορούμε να βελτιώσουμε τα εργαλεία ώστε να μην αποτυγχάνουν και να πιάνουν το πρόβλημα μόνα τους; Και πολύ απλώς το να προσπαθώ να βελτιώσω την καθημερινή λειτουργία των συστημάτων μας, ώστε οι άνθρωποι να εμπλέκονται λιγότερο ή να μη χρειάζεται να εμπλέκονται τόσο βαθιά για να κυλούν όλα ομαλά. Jonathan: Άρα η μέρα σου... απολαμβάνεις να ψάχνεις αυτές τις μικρές περιοχές όπου τα πράγματα μπορούν να βελτιστοποιηθούν; Πόσο από τη δουλειά σου είναι αντίδραση σε πράγματα και μετά, μέσα από την αντίδραση, να σκέφτεσαι "ωραία, αυτή είναι μια ευκαιρία", και πόσο είναι προληπτικό ψάξιμο αυτών των μικρών περιοχών; Ποια είναι συνήθως η ισορροπία; Isaac: Απολαμβάνω τον αυτοματισμό, αυτό είναι πιθανώς το πράγμα που απολαμβάνω περισσότερο στη δουλειά μου, το να μπορώ να αυτοματοποιώ πράγματα. Δεν είναι πάντα αντιδραστικό. Δηλαδή, αντιδραστικό μπορεί να σημαίνει ότι κάτι χαλάει, αλλά μπορεί επίσης να σημαίνει "α, ξέρεις, ο κόσμος τρέχει αυτή την εντολή" όπου βρήκα ότι υπάρχει αυτή η εντολή που τείνουμε να αντιγράφουμε και να επικολλούμε, μπορώ να τη βελτιώσω; Όπου βλέπω κάποιον να κάνει μια αλλαγή σε κάποιο runbook κάπου ή να βελτιώνει μια εντολή κάπου και σκέφτομαι "α, αυτή η εντολή είναι αρκετά ακατάστατη, μπορώ απλώς να την ξαναγράψω από την αρχή;" Και φυσικά η προσοχή είναι υπερβολική, πρέπει να ισορροπείται με την έλξη, πρέπει να είναι λιγότερες μεγάλες λέξεις, καλύτερη γλώσσα, όλα αυτά τα πράγματα. Πρέπει να τα καταφέρεις προσπαθώντας να το κάνεις. Ειλικρινά, όλα στη δουλειά μου ταιριάζουν αν το σκεφτώ. Είμαι πολύ κινητοποιημένος άνθρωπος, δηλαδή όχι, η δουλειά μου υποθέτω είναι εκεί όπως παντού, αλλά σε κάθε δουλειά που αγαπώ το να σκοτώνω χρόνο για τον εαυτό μου, είναι εκεί μόνο για να προσπαθήσω να... Jonathan: Κατασκευή, θα έλεγες. Isaac: Αναδιαμόρφωση, το να προσέχω ότι υπάρχουν εργαλεία που, ξέρεις, είναι δυσκίνητα στη χρήση και να αποφασίζω να τα ξαναγράψω ή να γράψω wrappers γύρω τους. Θα δω, ναι, θα δω αλλαγές κώδικα σε κάποιο μεγάλο, περίπλοκο πρόγραμμα και θα σκεφτώ "α, αυτό το πρόγραμμα είναι χάος. Μπορώ να μπω και να το ξαναγράψω ή να το αναδιαμορφώσω;" Ή να δημιουργήσω νέα... δηλαδή δεν είναι πάντα αναδιαμόρφωση, είναι επίσης μερικές φορές απλώς η δημιουργία νέων εργαλείων. Είναι σαν "α, έχουμε μια διαδικασία που περιλαμβάνει 20 βήματα, ας τα χώσω όλα σε ένα πρόγραμμα". Πολλά από αυτά τείνουν να είναι, ξέρεις, πρέπει να τα ανακαλύψω με κάποιον τρόπο. Μερικές φορές τα ανακαλύπτω επειδή μου ανατίθεται να εκτελέσω ένα σύνολο εργασιών, και μετά λέω "δεν θέλω να τα τρέξω αυτά με το χέρι". Μερικές φορές τα ανακαλύπτω απλώς παρατηρώντας, δηλαδή ψάχνω κάποιο κομμάτι κώδικα κάπου, και λέω "α, αυτός ο άλλος κώδικας εκεί, που τον συντηρεί άλλη ομάδα, τα κάνει άσχημα, ας τον αναδιαμορφώσω, ή ας χρησιμοποιήσω σύγχρονες βιβλιοθήκες ή ό,τι άλλο, ναι". Jonathan: Πολύ το... απλώς το να μπορείς να τα βλέπεις. Πόση ελευθερία έχεις; Έχεις αρκετά μεγάλη ελευθερία να κυκλοφορείς και να μπαίνεις ξαφνικά και να κάνεις μικροδιορθώσεις εδώ; Πρέπει να είναι αρκετά διασκεδαστικό, αρκετά απολαυστικό. Isaac: Ο προϊστάμενός μου μου δίνει μεγάλη ελευθερία, κάτι που είναι πολύ ωραίο. Δεν ξέρω πόσο από αυτό προέρχεται από... δεν είμαι πια στη Google, αλλά δεν ξέρω πόσο από αυτό προέρχεται από το υπόβαθρό μου στη Google. Στη Google, ο κόσμος ήταν πολύ ανοιχτός στο να μπαίνει ξαφνικά και να λέει "α, παρατήρησα... ξέρεις, τυχαίνει να χρησιμοποιώ αυτή τη βιβλιοθήκη και θα μπορούσε να βελτιωθεί με αυτόν τον τρόπο. Ας το διορθώσω". Δούλεψα πολύ, πολύ σύντομα σε μια startup όπου η κουλτούρα ήταν πολύ διαφορετική, ήταν πολύ λιγότερο ανοιχτή. Και στη startup, ο κόσμος ήταν πολύ προστατευτικός με τις βάσεις κώδικά του και το να τροποποιούν άλλοι τον κώδικά τους δεν ήταν πολύ αποδεκτό. Έτσι έλεγα "α, υπάρχει ένα ζήτημα με αυτή τη βάση κώδικα", και πραγματικά να την αλλάξω, για εκείνη τη βάση κώδικα. Jonathan: Ναι, πίσω. Αλλά αυτό έχει ενδιαφέρον γιατί... υποθέτεις ότι μια startup θα ήταν πολύ πιο του τύπου "απλώς κάνε τη δουλειά και κάν' την όσο πιο φτηνά γίνεται", ξέρεις, αλλά στην πραγματικότητα, ίσως η Google ήταν πολύ πιο ικανή να το διαχειριστεί αυτό ως έννοια. Και αυτό είναι... συγγνώμη, μόλις άναψα τα φώτα γιατί εμείς, όχι φώτα αυτή τη στιγμή για όλους όσους ακούν, δεν υπάρχει ρεύμα στο Κέιπ Τάουν πού και πού. Μόλις τυφλώθηκα, αλλά δεν πειράζει. Αλλά αυτό έχει ενδιαφέρον, επιστρέφοντας στο σημείο για την κουλτούρα της startup και το πώς ο κόσμος είναι, ειρωνικά, πολύ πιο απορροφημένος με το να έχει την κυριότητα πραγμάτων και μετά ίσως να τα παρακωλύει λίγο, ξέρεις; Isaac: Ναι, δεν ξέρω αν το να είσαι startup συνδέεται απαραίτητα καλά με το να είσαι ανοιχτός... ήταν σαν κουλτούρα εργασίας βασισμένη στο παιχνίδι. Στη Google, πολλά από αυτά που έκανε ο κόσμος ήταν παιχνίδι, όπου απολάμβανε αυτό που έκανε. Το έκανε επειδή το απολάμβανε. Ήταν πολύ φιλικοί με αυτό ή πολύ ανοιχτοί. Κάποιες άλλες κουλτούρες στο χώρο εργασίας αφορούν λιγότερο το να κάνεις πράγματα επειδή τα απολαμβάνεις και περισσότερο το ότι είναι δουλειά, ή ότι "αυτός είναι ο κώδικάς μου και ξέρω πώς λειτουργεί. Δεν θέλω άλλοι να τον πειράζουν". Δεν είμαι απόλυτα σίγουρος τι συντελεί σε αυτές τις αλλαγές κουλτούρας στο χώρο εργασίας. Αλλά η Google καλλιεργούσε πολύ την αίσθηση ότι όλοι έχουν πρόσβαση σε όλο τον κώδικα. Όλοι έχετε τη δύναμη να κάνετε αλλαγές σε αυτόν. Προχωρήστε και κάντε ό,τι νομίζετε ότι είναι σωστό. Και στην τωρινή μου δουλειά, με τον τωρινό μου προϊστάμενο, μου έχει δώσει κι εκείνος μεγάλη ελευθερία. Λέει, βέβαια, βρήκες κάτι να διορθώσεις. Προχώρα και διόρθωσέ το. Βρήκες μια περιοχή όπου τα πράγματα μπορούν να βελτιωθούν. Θα βγω απλώς από τον δρόμο σου. Πες μου τι μπορώ να κάνω για να βοηθήσω. Έτσι μπορώ πολύ να αυτοκατευθύνω πολλά από αυτά που κάνω και απλώς, ξέρεις, αν βρω μια περιοχή όπου λέω "α, θα μπορούσα να το κάνω καλύτερο", εκείνος λέει "ναι, ωραία, προχώρα". Jonathan: Εντάξει, ωραία. Και εσύ, η εταιρεία εδρεύει στην Ανατολική Ακτή, σωστά, οπότε δουλεύεις εξ αποστάσεως; Νομίζω θυμάμαι να λες ότι επρόκειτο να μετακομίσεις, και μετά χτύπησε ο COVID και όλο αυτό το πράγμα τελείωσε. Πώς σου φαίνεται η εξ αποστάσεως εργασία, η απόσταση, η χρονική διαφορά, όλα αυτά; Σε επηρεάζουν ή...; Isaac: Μου λείπει σίγουρα το να είμαι σε γραφείο και να αλληλεπιδρώ με ανθρώπους διά ζώσης. Υπάρχει λοιπόν αυτό, και η χρονική διαφορά, η ομάδα μου είναι πολύ εξυπηρετική με τη διαφορά ώρας. Είμαι τρεις ώρες πίσω από την υπόλοιπη ομάδα μου. Υπάρχει ένα σύντομο καθημερινό standup που το χάνω. Έχουμε δύο καθημερινά standup για δύο διαφορετικά προϊόντα. Το πρώτο λοιπόν το χάνω και η ομάδα μου είναι πολύ καλή στο να με εξυπηρετεί εκεί, και χρησιμοποιούμε πολύ το Slack εσωτερικά. Είναι πολύ καλοί στο να έχουν ένα καθημερινό thread στο Slack με τα ζητήματα που προέκυψαν, ώστε να μπορώ να ενημερώνομαι, και αν χρειάζονται κάτι, μου στέλνουν μήνυμα. Προσπαθώ όσο καλύτερα μπορώ να είμαι άμεσος στην ανταπόκριση και να τα διεκπεραιώνω όσο πιο γρήγορα μπορώ το πρωί. Έτσι, είναι λίγο... η χρονική διαφορά δεν είναι ιδανική, αλλά επίσης δεν είναι... έχουμε καταφέρει να το διαχειριστούμε αρκετά καλά. Και αντίστροφα, υπάρχει η άλλη πλευρά, όπου ξέρουν ότι έχουν κάποιον στην ομάδα που είναι ξύπνιος λίγο αργότερα. Έχω συναδέλφους που, ξέρεις, θα είναι 6 το απόγευμα στην Ανατολική Ακτή και θα πουν "α, αυτό είναι χαλασμένο. Ο Isaac είναι στη Δυτική Ακτή, ο Isaac θα μπορούσε να με βοηθήσει με αυτό γιατί εκεί είναι ακόμα 3 το μεσημέρι". Λειτουργεί λοιπόν και προς τις δύο κατευθύνσεις. Ναι... Jonathan: Ναι. Isaac: Ήμουν... ναι, έφυγα από τη Google το 2019, συγγνώμη, το 2020. Πέρασα συνέντευξη το 2019. Έπρεπε να μπω το 2020 τον Μάιο. Σχεδίαζα να μετακομίσω τον Αύγουστο, τον Απρίλιο του 2020, αλλά ξεκίνησε ο COVID και όλα αυτά και το γραφείο έκλεισε, και ήταν πολύ το "α, το γραφείο δεν είναι ακόμα ανοιχτό. Θα μετακομίσει μόλις ανοίξει το γραφείο". Και μετά, δύο χρόνια μέσα στην πανδημία, άρχισαν να ανοίγουν ξανά το γραφείο. Και σκέφτηκα, ξέρεις, δεν είμαι σίγουρος ότι θέλω να μετακομίσω πια. Η Νέα Υόρκη ακουγόταν πολύ συναρπαστική, αλλά υπήρχαν όλες αυτές οι επιχειρήσεις ανοιχτές και, ξέρεις, χώροι και διάφορα που συνέβαιναν. Αλλά τώρα που υπάρχει πανδημία, πολλά από αυτά δεν ακούγονται και τόσο συναρπαστικά πια. Έτσι μεταπήδησα σε θέση εξ αποστάσεως αφού δούλεψα εξ αποστάσεως για δύο χρόνια. Jonathan: Και είσαι άνθρωπος της πόλης ή της εξοχής, ή κάτι ενδιάμεσο; Δηλαδή, επειδή η Νέα Υόρκη είναι πόλη. Είναι 100% πόλη. Δεν υπάρχει άλλη εκδοχή. Καταλαβαίνεις τι λέω; Θα ήταν λοιπόν μεγάλη αλλαγή, υποθέτω. Ναι. Παρ' όλα αυτά συναρπαστική. Isaac: Μεγάλωσα σε μια μεγάλη μητροπολιτική περιοχή, οπότε δεν μου είναι άγνωστη η ζωή στην πόλη. Αυτή τη στιγμή μένω σε προάστιο. Απολαμβάνω το περπάτημα και το ποδήλατο και προσπαθώ να βγαίνω στη φύση όσο πιο συχνά μπορώ. Απολαμβάνω λοιπόν να μένω σε προάστιο κοντά σε καταπληκτικά μονοπάτια για πεζοπορία και ποδήλατο και όλα αυτά. Η μετακόμιση στη Νέα Υόρκη θα ήταν μεγάλη αλλαγή. Αλλά σκέφτομαι ότι το να αλλάζω τα πράγματα πού και πού δεν είναι κακό. Και αν μισήσω τη ζωή μου στη Νέα Υόρκη, μπορώ πάντα να φύγω. Jonathan: Δεν είναι και τόσο δύσκολο να το κάνεις αυτό. Αλλά ωραία. Τώρα λοιπόν, πιθανότατα, διόρθωσέ με αν κάνω λάθος, περνάς πολύ χρόνο στην οθόνη, σε κάποιο γραφείο, ή στο σπίτι σου, ή ό,τι άλλο. Δηλαδή, βγαίνεις έξω κάθε μέρα για να... πώς ισορροπείς όλο αυτόν τον κόσμο της οθόνης με... έχεις κάποια καθημερινή ώρα όπου λες "πρέπει να βγω έξω και να κάνω κάτι άλλο"; Isaac: Μακάρι να το έκανα. Κάποιες μέρες ή κάποιους μήνες ή κάποια χρόνια τα πάω καλύτερα από άλλους. Το 2020 ήμουν αρκετά καλός στο να κάνω ποδήλατο σχεδόν κάθε μέρα. Βγαίνω έξω τα περισσότερα σαββατοκύριακα. Προσπαθώ να κάνω μία πεζοπορία την εβδομάδα. Δεν τα πάω σπουδαία σε αυτό, αλλά πάω για πεζοπορία. Εξαρτάται από την εποχή. Είμαι στην Καλιφόρνια. Κάποιες εβδομάδες είναι εξαιρετικά ζεστές. Μόλις είχαμε έναν καύσωνα όπου είχε πάνω από 40 βαθμούς Κελσίου για περίπου μια εβδομάδα συνεχόμενα. Αυτό κάνει δύσκολο το να βγεις έξω. Είμαστε στην Καλιφόρνια όπου έχουμε πυρκαγιές, οπότε μερικές φορές περνάμε μια-δυο εβδομάδες όπου η ποιότητα του αέρα έξω δεν είναι απολύτως ασφαλής για αναπνοή. Αυτό κάνει δύσκολο το να είσαι έξω στην Καλιφόρνια κάποιες εβδομάδες. Και το να είσαι μέσα σε μια πανδημία είναι επίσης δύσκολο. Υπάρχουν λοιπόν σίγουρα κάποιες εβδομάδες όπου είμαι πολύ περισσότερο μέσα από ό,τι άλλες. Αλλά μου αρέσει να βγαίνω έξω. Υπήρξαν, ξέρεις, περίοδοι έξι μηνών όπου έκανα πεζοπορίες, πήγαινα για πεζοπορίες τουλάχιστον κάθε δεύτερη εβδομάδα. Jonathan: και μετά... Isaac: Είχα περιόδους όπου πήγαινα για κάμπινγκ μία φορά τον μήνα για, ξέρεις, έξι μήνες συνεχόμενα. Υπάρχουν λοιπόν περίοδοι όπου τα πάω καλύτερα από άλλες, και μετά υπάρχουν περίοδοι όπου απλώς μένω στο σπίτι για δύο εβδομάδες συνεχόμενα. Jonathan: Ναι, ωραία. Και λοιπόν Isaac, ποιο είναι το επόμενο... Μπορεί, δεν ξέρω, μπορεί να μην το έχεις σκεφτεί τόσο μακριά, αλλά πώς μοιάζουν τα επόμενα πέντε χρόνια για σένα, όσον αφορά... έχεις κάποια ιδέα ή είσαι του τύπου "θέλω να ξεκινήσω τη δική μου επιχείρηση" ή "θέλω να κάνω αυτό", ή είσαι απλώς του τύπου "α, απολαμβάνω τη ζωή και το πού βρίσκομαι"; Isaac: Πριν μετακομίσω στη Δυτική Ακτή, πίστευα ότι είχα καλύτερη αίσθηση του πώς θα είναι το μέλλον μου. Αλλά το να ανατραπούν όλα αυτά με έμαθε ότι είναι πραγματικά δύσκολο να προβλέψεις τι θα συμβεί τον επόμενο χρόνο, πόσο μάλλον σε πέντε. Είμαι αρκετά ευχαριστημένος. Μόλις άλλαξα δουλειά σχετικά πρόσφατα. Άλλαξα δουλειά πριν από περίπου δύο, δυόμισι χρόνια. Απολαμβάνω αρκετά την τωρινή μου δουλειά, οπότε δεν βλέπω να αλλάζει σύντομα. Θα ήμουν ευχαριστημένος να μείνω στην ίδια δουλειά για τα επόμενα δύο, τρία χρόνια, πέντε χρόνια μετά. Λατρεύω να ζω στην Καλιφόρνια. Λατρεύω το να μπορώ να πηγαίνω για πεζοπορία και ποδήλατο και κάμπινγκ και όλα αυτά. Δεν βλέπω λοιπόν τον εαυτό μου να φεύγει από την Καλιφόρνια σύντομα. Και δεν βλέπω τον εαυτό μου να φεύγει από αυτή τη δουλειά σύντομα, γιατί απολαμβάνω πολύ να δουλεύω εκεί. Είμαι λοιπόν αρκετά ικανοποιημένος και δεν έχω σχεδιάσει καμία μεγάλη αλλαγή, αλλά είναι πραγματικά δύσκολο να πω. Jonathan: Ωραία. Εντάξει, έχω μερικές ακόμη ερωτήσεις, για τις οποίες θα ήθελα την οπτική σου. Η πρώτη μάλλον δεν είναι αυτή για την οποία σε προετοίμασα, αλλά... Αν λοιπόν επρόκειτο να... Αν δέκα άνθρωποι έμπαιναν στο γραφείο σου τώρα, δέκα εντελώς άγνωστοι, και δεν ήξεραν τίποτα για τον προγραμματισμό, και είχες, ας πούμε, μια αρπίστρια και έναν κηπουρό και ό,τι άλλο, ποιες θα ήταν οι τρεις κορυφαίες συμβουλές που θα τους έδινες για να αρχίσουν να μαθαίνουν προγραμματισμό; Δηλαδή, αν μπορούσες να το συμπυκνώσεις σε "κάντε το αυτό οπωσδήποτε", ποιες θα ήταν μερικές από αυτές τις συμβουλές; Isaac: Η νούμερο ένα σύστασή μου θα ήταν να προσπαθήσεις να βρεις ένα πρόβλημα που θα μπορούσες να λύσεις με προγραμματισμό. Δηλαδή, να έχεις ένα συγκεκριμένο έργο που σου δίνει κίνητρο χωρίς συγκεκριμένο στόχο στο μυαλό σου για να σε σπρώξει μπροστά. Είναι εξαιρετικά δύσκολο να μάθεις προγραμματισμό από την αρχή, όπως κάθε άλλη δεξιότητα, το να μάθεις προγραμματισμό απαιτεί αρκετή επιμονή ή αντοχή. Πρέπει απλώς να συνεχίζεις. Μπορεί να είναι πολύ δύσκολο στην αρχή. Μπορεί να είναι πολύ αποθαρρυντικό. Χωρίς κάτι να σε σπρώχνει μπροστά, είναι πολύ εύκολο να τα παρατήσεις. Έτσι, αν είναι δυνατόν, το να έχεις κάτι που θέλεις πραγματικά να κάνεις με αυτό βοηθάει πολύ. Είναι όλα λίγο πολύ στο ίδιο πνεύμα. Απλώς πρέπει να επιμένεις. Βοηθάει πολύ να έχεις υπομονή με τον εαυτό σου και να αναγνωρίζεις ότι μαθαίνεις μια νέα δεξιότητα και ότι θα αποτύχεις πολλές φορές. Έχω δει ανθρώπους που προσπαθούν να μάθουν προγραμματισμό και αποθαρρύνονται. Λένε "α, συνήθως τα καταφέρνω στα πράγματα και αυτό δεν δουλεύει από την αρχή". Και τους λέω "ναι, η αποτυχία είναι μέρος της μαθησιακής διαδικασίας". Και αν δεν αισθάνεσαι άνετα με την αποτυχία σε κάτι, μπορεί να δυσκολευτείς πολύ να μάθεις νέες δεξιότητες. Πρέπει να έχεις υπομονή με τον εαυτό σου και με τη διαδικασία, και απλώς να επιμένεις πολύ. Jonathan: Αυτό είναι χρήσιμο. Δηλαδή, θα έλεγα ότι είναι λίγο... μόλις τώρα συνειδητοποίησα πώς λειτουργούν οι μέθοδοι. Και αυτό προέκυψε μέσα από τη διαδικασία, γιατί πολλή από τη γνώση, όταν ο κόσμος μιλάει για διάφορα πράγματα, υπάρχει τόση υπονοούμενη γνώση όταν διδάσκει ο κόσμος, ειδικά. Έτσι, ξαφνικά όλοι πετάνε τη λέξη "μέθοδοι" γύρω. Και λέω, τι στο καλό είναι μια μέθοδος; Τι συμβαίνει; Και ήταν μόνο μέσα από την ομάδα με τη Go που άρχισα να συνειδητοποιώ, α, οι μέθοδοι λειτουργούν με αυτόν τον τρόπο. Αλλά ήταν σχεδόν σαν να έπεσε το κέρμα, αλλά έπρεπε να βυθιστώ σε αυτό το περιβάλλον και αυτή την ορολογία για τόσο καιρό που κάπως εισχωρεί μέσα. Θα έλεγα ότι αυτό ήταν ένα από τα μεγαλύτερα μαθήματα για μένα: να μην προσπαθήσω να τα μάθω όλα, αλλά να δουλέψω σιγά-σιγά μια απλή έννοια. Επειδή όλα συνδέονται τόσο πολύ μεταξύ τους, ώστε τελικά καταφέρνεις να αρχίσεις να δένεις το νοητικό μοντέλο, κάτι που είναι πολύ σημαντικό. Είναι λοιπόν ένα εξαιρετικό μικρό εργαλείο. Θα το πω λοιπόν στον κόσμο, τη σύσταση του Isaac: να έχεις υπομονή και να είσαι ευγενικός με τον εαυτό σου και να δουλεύεις σιγά-σιγά. Πολύ ωραίο. Εντάξει. Και μετά η τελευταία ερώτηση, και πριν σε αφήσω να συνεχίσεις την υπόλοιπη μέρα σου, συζητήσαμε ως ομάδα αυτή την έννοια του λόφου στον οποίο θα πέθαινες στην τεχνολογία. Ακούγεται αρκετά μελοδραματικό και αρκετά, με πολύ δράμα. Και η ιδέα είναι ουσιαστικά ποιο είναι το ένα πράγμα που πιστεύεις ότι είναι απολύτως βασικό, που θεωρείς αμετακίνητη νοοτροπία ή προοπτική στην τεχνολογία. Ένα καλό παράδειγμα θα ήταν, δεν ξέρω, σε πολύ ασήμαντο επίπεδο, πάντα βάζω πρώτα τις συναρτήσεις μου και μετά γράφω το CSS μου αν κάνω frontend. Δηλαδή λειτουργικότητα, μετά λογική, μετά ό,τι άλλο. Θα μπορούσε να είναι, ξέρεις, είχαμε μία, τη Rebecca που τρέχει τη διαδρομή της Unison. Εκείνη έλεγε ότι το να έχεις έναν ιδιοφυή με άποψη και δύσκολο στη συνεργασία... θα προτιμούσε να έχει 50 ανθρώπους που αγαπούν πραγματικά να δουλεύουν σε ομάδα και να λύνουν προβλήματα μαζί, παρά έναν ιδιοφυή που καταναλώνει όλο το εύρος ζώνης όσον αφορά τη διαχείριση. Αυτό ήταν λοιπόν ένα από τα δικά της, και το διατύπωσα ωραία, αλλά ποιος θα ήταν ο δικός σου λόφος στον οποίο θα πέθαινες στον χώρο της τεχνολογίας, που είναι το μη διαπραγματεύσιμό σου; Isaac: Αυτό είναι πιθανώς εξαιρετικά επηρεασμένο από το πώς κάνει τα πράγματα η Google. Στη Google έχουν αυτή την έννοια του readability, όπου ο κώδικας υποτίθεται ότι είναι εύκολος στην ανάγνωση. Και πολλά από αυτά που κάνω όταν γράφω κώδικα, θέλω ο κώδικάς μου να είναι απλός στην ανάγνωση και την κατανόηση. Και έχω δει πολύ κώδικα, ειδικά στον κώδικα, υπάρχει μεγάλη έμφαση στην αποδοτικότητα και τα benchmarks και το να κάνεις τον κώδικά σου πιο γρήγορο. Και συχνά αναγνωρίζω ότι ο τρόπος που το κάνω δεν είναι απαραίτητα ο πιο αποδοτικός, αλλά αν βρίσκω ότι ο κώδικας είναι πιο εύκολος στην ανάγνωση, θα προτιμήσω μη αποδοτικό κώδικα που διαβάζεται εύκολα από έναν εξαιρετικά αποδοτικό κώδικα. Έτσι, ξέρεις, υπάρχει αυτό το γνωστό απόφθεγμα, δεν είμαι σίγουρος σε ποιον ακριβώς αποδίδεται, ότι η πρόωρη βελτιστοποίηση είναι η ρίζα κάθε κακού. Και όποτε ο κόσμος λέει "α, πώς μπορεί αυτό να είναι πιο αποδοτικό;", εγώ λέω "χρειάζεται να είναι πιο αποδοτικό; Έχεις συναντήσει... δηλαδή, τρέχει σε παραγωγή και αντιμετωπίζεις προβλήματα με την αποδοτικότητα; Είναι πολύ αργό για να χρησιμοποιηθεί σε παραγωγή;" Αν δεν έχεις πραγματικά βιώσει πρόβλημα με τον κώδικα σε παραγωγή, όπου χρειάζεται να είναι πιο αποδοτικός, γιατί να τον κάνεις πιο αποδοτικό; Είναι πιο εύκολος στην ανάγνωση όπως είναι. Είναι πιο εύκολος στη συντήρηση. Άλλοι άνθρωποι μπορούν να καταλάβουν τι συμβαίνει. Γιατί να χαρίσεις καλογραμμένο κώδικα που είναι εύκολος στη χρήση και τη συντήρηση για να γλιτώσεις λίγους κύκλους CPU; Είναι το ρεύμα αρκετά φθηνό και οι CPU αρκετά φθηνές ώστε να μην χρειάζεται να βελτιστοποιούμε τον κώδικα απλώς για να τον βελτιστοποιήσουμε; Jonathan: Ναι, είναι πάντα αστείο γιατί είναι ένα από αυτά τα πράγματα που λέω... το πρόγραμμά μας μεταγλωττίστηκε και έτρεξε σε 30 χιλιοστά του δευτερολέπτου. Και λένε "α, αλλά το κατεβάσαμε στα 20 χιλιοστά του δευτερολέπτου". Και λέω, δεν θα μπορούσα να σου πω. Δεν θα μπορούσα να σου πω ποιο ήταν πιο γρήγορο, ποιο πιο αργό. Αυτό φαίνεται γρήγορο. Νομίζω λοιπόν ότι είναι ένα καλό σημείο. Είμαι σίγουρος ότι θα απολάμβανα να διαβάζω τον κώδικά σου, αλλά αυτό είναι υπέροχο. Isaac, ευχαριστώ πολύ για τον χρόνο σου, που ξύπνησες νωρίς και που ανέχτηκες τις διακοπές ρεύματος στο Νότιο Ημισφαίριο. Και για μένα που κάθομαι σε απόλυτο σκοτάδι, είμαι σίγουρος ότι αυτό είναι μάλλον κωμικό για σένα. Αλλά ευχαριστώ πολύ για τον χρόνο σου. Ανυπομονώ να σε δω σε μελλοντικές ομάδες μάθησης και στις ροές καθοδήγησης και όλα αυτά. Και ευχαριστώ για όλη τη συνεισφορά που κάνεις στο Exercism και σε όλα τα επίπεδα. Το εκτιμώ πολύ. Και ναι, ευχαριστώ πάρα πολύ για άλλη μια φορά. Και θα σε δω σε λίγο. Όχι, με μεγάλη μου χαρά. Να προσέχεις, Isaac. Αντίο. Isaac: Ευχαριστώ πάρα πολύ για άλλη μια φορά. Καμία ευχαρίστηση. Να προσέχεις Isaac.

Περισσότερες ιστορίες από την κοινότητά μας

Άκουσε, μάθε και εμπνεύσου από τα μέλη της κοινότητάς μας.