Τι είναι ένας "πολύγλωσσος", θα μου πεις...λοιπόν, σύμφωνα με το λεξικό, είναι η ικανότητα να γνωρίζεις πολλές γλώσσες! Πώς λοιπόν γίνεσαι "πολύγλωσσος"; Μιλάς με τον Erik Schierboom και μαθαίνεις τα μυστικά!
Jonathan: Λοιπόν, γεια σε όλους και καλώς ήρθατε στο podcast ή στο live stream του Exercism. Με λένε Jonathan και έχω την τιμή να είμαι ο οικοδεσπότης σου σήμερα. Και μαζί μου είναι ο Eric, που είναι μέλος της ομάδας του Exercism και ασχολείται με αυτό εδώ και αρκετά χρόνια. Αν έχεις βρεθεί στο οικοσύστημα του Exercism οποιαδήποτε στιγμή τα τελευταία δύο χρόνια, είναι πολύ πιθανό να έχεις πέσει πάνω στον Eric κάπου στην πορεία. Αλλά Eric, είναι υπέροχο που σε έχουμε στη σημερινή εκπομπή. Ανυπομονώ να μάθω λίγα περισσότερα για την ιστορία σου, για το πώς κατέληξες στον χώρο της τεχνολογίας και για κάποιες από τις απόψεις σου πάνω σε διάφορα πράγματα της τεχνολογικής σκηνής. Αλλά πριν βουτήξουμε πολύ βαθιά σε αυτά, θα ήθελα να συστηθείς και να μας δώσεις λίγο από το υπόβαθρό σου, λίγο από την ιστορία του πώς έφτασες εκεί που είσαι τώρα.
Erik: Σίγουρα. Ναι. Υπέροχα που είμαι εδώ. Λοιπόν, είμαι ο Eric, όπως πιθανότατα είπες ήδη. Ζω στην Ολλανδία. Γεννήθηκα εκεί. Οπότε έχω ζήσει εδώ σε όλη μου τη ζωή. Άρχισα να σκέφτομαι πότε ήταν η πρώτη φορά που έκανα πραγματικά κάτι με υπολογιστές. Και νομίζω ότι πρέπει να ήταν ένα σύστημα NES. Δηλαδή να παίζω Mario. Και αυτό με κόλλησε. Ναι, ήταν υπέροχο. Και ταυτόχρονα πολύ εκνευριστικό, γιατί τα παιχνίδια ήταν αμείλικτα τότε.
Jonathan: Δεν είχες σημεία αποθήκευσης κ.λπ., απλώς ξανά από την αρχή.
Erik: Λοιπόν, εξαρτάται από το αν ζούσες στις ΗΠΑ ή στον υπόλοιπο κόσμο, γιατί υπήρχαν στην πραγματικότητα δύο διαφορετικές εκδόσεις. Αλλά ναι, νομίζω ότι άνοιγες τη θυρίδα στο μπροστινό μέρος και μετά έβαζες τους δίσκους ή όπως αλλιώς λέγονται, τα κάρτριτζ. Και το λάτρευα πραγματικά, πάρα πολύ. Δεν είχαμε NES, αλλά είχα μερικούς φίλους που είχαν. Οπότε πήγαινα εκεί τακτικά για να παίζω και υπήρχαν τόσα πολλά υπέροχα παιχνίδια που έπαιξα, και εκνευριστικά παιχνίδια. Αλλά ήταν τόσο, τόσο υπέροχο πράγμα. Και μετά αυτό με κόλλησε κάπως. Νομίζω ότι έτσι κολλάνε πολλοί προγραμματιστές με την ιδέα να γίνουν προγραμματιστές, απλώς επειδή θέλουν να φτιάξουν ένα παιχνίδι. Το σκέφτηκα. Το οποίο, προειδοποίηση σπόιλερ, δεν το έκανα ποτέ. Δεν είμαι προγραμματιστής παιχνιδιών. Εντάξει. Όχι, όχι, όχι. Αλλά αυτός ήταν ο λόγος που άρχισα να μου αρέσουν οι υπολογιστές. Και μετά ο μπαμπάς μου είχε ένα περιστατικό πριν γεννηθώ. Ήταν παράλυτος από τους ώμους και κάτω. Οπότε ήταν σε αναπηρικό καροτσάκι. Αλλά ήταν πάντα στο σπίτι. Οπότε αυτό ήταν υπέροχο. Είχα έναν μπαμπά που ήταν σπίτι 24/7. Ήταν πάντα υπέροχο να γυρίζω σπίτι. Και του άρεσαν και αυτού οι υπολογιστές. Κάποια στιγμή λοιπόν, νομίζω ήμουν ίσως 10 χρονών ή κάτι τέτοιο, πήρε αυτόν τον όχι και τόσο εντυπωσιακό υπολογιστή. Νομίζω ήταν ένας X286. Ήταν ασπρόμαυρος και είχε εγκατεστημένα τα MS-DOS. Και μπορούσες να παίξεις παιχνίδια. Υπήρχαν λοιπόν τόσα πολλά παιχνίδια, και πήρα μερικά από φίλους μου που μου έδωσαν παιχνίδια, και έπρεπε να εκτυπώσουν όλα τα φύλλα με τους κωδικούς για να μπορούν πραγματικά να ξεκινήσουν τα παιχνίδια, γιατί υπήρχε προστασία με κωδικό. Ήταν σαν το εγχειρίδιο. Δεν μπορείς να το ξεφύγεις αυτό τώρα. Αλλά τότε μπορούσες. Και λάτρευα να παίζω αυτά τα παιχνίδια, αλλά μου άρεσε επίσης να προσπαθώ να καταλάβω πώς λειτουργούσε. Και χάλασα τον υπολογιστή μου. Δεν μπορώ καν να θυμηθώ πόσες φορές. Είχα λοιπόν αυτό το help desk, που ήταν ο μπαμπάς ενός φίλου μου που ήταν πραγματικά καλός με τους υπολογιστές. Και όποτε χάλαγα το σύστημά μου, τον έπαιρνα τηλέφωνο και ήταν πολύ ευγενικός και ερχόταν και με βοηθούσε να το φτιάξω. Αλλά θυμάμαι ακόμα τον εαυτό μου σε κατάσταση πανικού όταν συνειδητοποιούσα ότι δεν μπορούσα να βγω από αυτό το πρόβλημα. Οπότε έχοντας... αλλά έμαθα πολλά από αυτό.
Jonathan: αυτό το πρόβλημα. Αλλά έμαθα πολλά από αυτό. Σε μια δισκέτα, και θυμάμαι ότι μάζευα λεφτά γι' αυτό το πράγμα για χρόνια και μετά το έβαζα μέσα και απλώς δεν φόρτωνε ποτέ, ποτέ, με αυτές τις μικρές δισκέτες. Οπότε αυτό ήταν μία από τις μεγάλες μου απογοητεύσεις. Δεν νομίζω ότι ξεπέρασα ποτέ το σημείο να προσπαθώ να καταλάβω πώς να το φτιάξω. Αλλά τα παιχνίδια έρχονταν σε δισκέτες και έπρεπε... έπαιρνες ένα μικρό κάρτριτζ που τα έβαζες μέσα και τα φόρτωνες και όλα αυτά τα πράγματα.
Erik: Ποτέ.
Jonathan: Ναι.
Erik: Ναι. Μερικές φορές είχες πολλές δισκέτες. Οπότε ναι, ήταν πραγματικά μια υπέροχη περίοδος. Και λάτρευα το MS-DOS και το να ανακαλύπτω τι μπορούσα να κάνω. Και μετά ανακάλυψα τι δεν μπορούσα να κάνω. Οπότε ναι, ήταν πραγματικά ωραία.
Jonathan: Ναι, ήταν πραγματικά ωραία. Δούλευε τότε με πλήρες ωράριο εκείνη; Και ο μπαμπάς σου ήταν στο σπίτι;
Erik: Όχι, η μαμά μου φρόντιζε τον μπαμπά μου με πλήρες ωράριο. Χρειαζόταν πολλή φροντίδα. Στην αρχή μπορούσε να κινείται με τα χέρια του και αργότερα χρησιμοποιούσε το πηγούνι του, γιατί τα χέρια του άρχισαν να υποβαθμίζονται λίγο, οπότε είχε λιγότερο έλεγχο. Αλλά εκείνη τον φρόντιζε με πλήρες ωράριο. Οπότε οι γονείς μου ήταν πάντα στο σπίτι. Για μένα λοιπόν ήταν πολύ περίεργο να πηγαίνω σε άλλους όπου οι γονείς τους δούλευαν. Δηλαδή, ήταν το τέλος της μέρας και οι γονείς ακόμα δεν ήταν σπίτι. Για μένα αυτό ήταν πολύ περίεργο. Αλλά ναι, είναι απλώς μια διαφορετική κατάσταση.
Jonathan: Για μένα αυτό ήταν πολύ περίεργο. Ήσουν μόνο εσύ;
Erik: Έχω, έχω μία αδερφή. Είναι τρία χρόνια μικρότερή μου. Κανείς δεν θα έλεγε ποτέ ότι είμαστε αδέρφια. Είμαστε τόσο διαφορετικοί. Αλλά παλιά τσακωνόμασταν πολύ, ενώ τώρα τα πάμε μια χαρά. Οπότε κατέληξε καλά. Εντάξει. Και δεν της άρεσαν οι υπολογιστές, οπότε δεν εισέβαλλε στον χρόνο μου στον υπολογιστή.
Jonathan: Αλλά τσακωνόμασταν συχνά για τον υπολογιστή. Εκείνη ήθελε να παίζει Sims και εγώ ήθελα να παίζω SimCity ή κάτι τέτοιο. Οπότε τσακωνόμασταν συνεχώς από αυτή την άποψη.
Erik: Αντίο. Σίγουρα προτιμώ πολύ περισσότερο την επιλογή του Sim City. Αλλά όχι, εκείνη δεν ενδιαφερόταν ποτέ πραγματικά για τους υπολογιστές. Ο μόνος τρόπος με τον οποίο μπορούσα να της κεντρίσω το ενδιαφέρον ήταν όταν είχα ένα SNES, δηλαδή το Super Nintendo, και είχαμε το Mario Kart. Και της άρεσε το Mario Kart, οπότε παίζαμε πολύ Mario Kart μαζί. Φυσικά, πάντα κέρδιζα, γιατί είχα πολύ περισσότερη εξάσκηση, αλλά και πάλι της άρεσε.
Jonathan: Οπότε σου αρέσει ακόμα να πειραματίζεσαι; Ναι, MS-DOS, αν δεν κάνω λάθος, κάτι αρκετά χαμηλού επιπέδου. Ναι. Οπότε μάλλον αρκετά χαμηλού επιπέδου. Ναι, απολύτως. Και πόσο χρονών ήσουν όταν έπαιζες με αυτό το σύστημα;
Erik: Εντάξει. Αρκετά χαμηλού επιπέδου, ναι. Απολύτως χαμηλού επιπέδου. Ναι, ήμουν περίπου 10, νομίζω. Και μετά είχα έναν φίλο που ήταν στην ποδοσφαιρική μου ομάδα, βασικά. Αλλά ήταν ήδη καλός προγραμματιστής και μπορούσε πραγματικά να προγραμματίζει παιχνίδια. Και το έκανε σε Visual Basic. Και έμεινα εντελώς άναυδος. Ερχόταν στον υπολογιστή μου και μου έδειχνε ότι θα πληκτρολογήσει κάτι και δεν καταλάβαινα τίποτα από αυτά. Αλλά μετά από μισή ώρα είχε κάτι που περπατούσε στην οθόνη και ήταν εντελώς μαγικό για μένα. Ήμουν κατάπληκτος. Αλλά δεν προσπάθησα ποτέ πραγματικά να προγραμματίσω σε εκείνο το σημείο. Ένιωθα ακόμα ότι ήταν πολύ δύσκολο για μένα ακόμα και να προσπαθήσω. Οπότε δεν το έκανα. Απλώς πειραματιζόμουν και έπαιζα παιχνίδια.
Jonathan: Οπότε... Απλώς πετάγομαι στη συζήτηση.
Erik: Και μετά, όταν ήμουν λίγο μεγαλύτερος.
Jonathan: Πώς έγινε η σύνδεση μεταξύ του «α, μπορώ να προγραμματίσω το παιχνίδι» και «μπορώ να το κάνω αυτό κάτι σαν στα σοβαρά», αν βγάζει νόημα, ή «μπορώ να το ακολουθήσω αυτό με πιο σοβαρό τρόπο»;
Erik: Ναι, αυτό ήρθε αργότερα. Όταν ήμουν περίπου, νομίζω, 17, έπρεπε να διαλέξω ποιον δρόμο θα πάρω, βασικά. Είχα δύο επιλογές στο μυαλό μου. Η μία ήταν να σπουδάσω ιστορία και η άλλη να ασχοληθώ με την πληροφορική. Οπότε στο τέλος ήταν μια αρκετά απλή επιλογή, γιατί ένιωθα ότι η πληροφορική ήταν κάτι που θα λάτρευα να κάνω λίγο περισσότερο από το να ασχολούμαι απλώς με την ιστορία. Μπορεί να υπάρχουν πολύ βαρετά κομμάτια στην ιστορία, και δεν πίστευα ότι θα υπάρχουν βαρετά κομμάτια στην πληροφορική, αλλά φυσικά υπάρχουν. Οπότε έκανα λάθος. Ναι, ναι. Όχι, λοιπόν, μπορούμε να το συζητήσουμε αυτό άλλη στιγμή. Αλλά ναι, υπάρχουν βαρετά κομμάτια. Αλλά τότε έκανα την επιλογή. Και ήταν την εποχή που όλα ήταν σε άνθηση. Ήταν η εποχή της φούσκας των dotcom. Όταν επισκεπτόμασταν το λύκειό μου, το σχολείο στο οποίο θα πήγαινα, που ήταν πανεπιστήμιο εφαρμοσμένων επιστημών, μπορούσα να επιλέξω ανάμεσα σε πανεπιστήμιο εφαρμοσμένων επιστημών και σε πανεπιστήμιο. Αλλά προτιμούσα τις εφαρμοσμένες επιστήμες γιατί θέλω να φτιάχνω πράγματα. Δεν είμαι σπουδαίος θεωρητικός. Δεν ξέρω πώς το λέτε, αλλά δεν τα πάω καλά με τη θεωρία. Οπότε μου αρέσει να φτιάχνω πράγματα. Είμαι πολύ πρακτικός. Ξεκίνησα λοιπόν με το πρακτικό κομμάτι. Και μου άρεσε πραγματικά. Και ήταν μια περίοδος όπου όλες αυτές οι εταιρείες έβγαζαν τόνους χρήματα. Και έλεγαν, ε, μόλις αποφοιτήσεις, παίρνεις αυτοκίνητο, παίρνεις αυτό, παίρνεις εκείνο. Και μετά, όταν αποφοίτησα, ήταν η κατάρρευση των dotcom. Όλα ήταν σε συντρίμμια και ήταν στην πραγματικότητα αρκετά δύσκολο να βρει κανείς δουλειά. Και σε εκείνο το σημείο ένιωσα ότι ίσως θα έπρεπε απλώς να δοκιμάσω το πανεπιστήμιο, γιατί το κομμάτι των εφαρμοσμένων επιστημών ήταν πολύ διασκεδαστικό. Και εκεί έμαθα πραγματικά να προγραμματίζω. Αλλά σκέφτηκα, λοιπόν, ίσως απλώς αναβάλω λίγο την επαγγελματική μου καριέρα και δω αν μπορώ να τα καταφέρω στο πανεπιστήμιο. Οπότε ήταν ωραία.
Jonathan: Στο ευρωπαϊκό εκπαιδευτικό σύστημα λοιπόν, απ' όσο καταλαβαίνω, σε κατευθύνουν κάπως γρήγορα, ανάλογα με τις πρακτικές δεξιότητες, προς το πανεπιστήμιο ή μάλλον προς την πιο ακαδημαϊκή πορεία. Ισχύει αυτό στην Ολλανδία; Είναι αρκετά καλοί στο να λένε, ε, είσαι πραγματικά κατάλληλος για αυτό; Ξέρω ότι στην Ελβετία, που είναι το σημείο αναφοράς μου, αν είσαι πολύ καλός, μπορείς να πεις, εντάξει, ωραία, πήγαινε να κάνεις μαθητεία και να αποκτήσεις δεξιότητες με αυτόν τον τρόπο. Και στην πραγματικότητα είναι εξίσου, δεν θεωρείται κατώτερο ούτε ανώτερο από το να πας στο πανεπιστήμιο ή κάτι τέτοιο. Είναι απλώς πιο ταιριαστό με τις προτιμήσεις σου, με αυτή την έννοια. Ισχύει αυτό και στην Ολλανδία; Και υπήρχε αυτού του είδους η διαδικασία να περάσεις μεγαλώνοντας;
Erik: Δεν θα έλεγα ότι θεωρούνταν ίσο. Υπάρχει ακόμα αυτή η ιδέα ότι το να πας στο πανεπιστήμιο και όχι στο πανεπιστήμιο εφαρμοσμένων επιστημών είναι καλύτερο ή δυσκολότερο ή τουλάχιστον με μεγαλύτερο κύρος. Μπορείς επίσης να πάρεις διαφορετικό τίτλο. Αλλά σε μένα αυτό δεν με τράβηξε ιδιαίτερα. Ήταν απλώς πολύ θεωρητικό. Ήθελα να μάθω να προγραμματίζω, γιατί ακόμα δεν είχα μάθει να προγραμματίζω. Ήξερα ότι μάλλον θα μου άρεσε. Είχα δει κομμάτια από HTML, αλλά δεν είχα γράψει ποτέ πραγματικά μια γραμμή κώδικα. Αλλά ήμουν αρκετά σίγουρος ότι θα μου άρεσε πραγματικά. Όταν ξεκίνησα, τον πρώτο χρόνο βασικά δεν έγραψα ούτε μία γραμμή κώδικα. Απλώς ακολουθούσα κάποιους συμφοιτητές μου σε μια ομάδα, γιατί ένας από αυτούς ήταν πραγματικά φανταστικός προγραμματιστής που τα ήξερε όλα. Έκανε τα πάντα, οπότε δεν είχα καν την ευκαιρία να κάνω πολλά. Αλλά τον δεύτερο χρόνο πήρα μια συνειδητή απόφαση: δεν πάει καλά έτσι. Δεν θα μάθω ποτέ να προγραμματίζω. Οπότε το πήρα στα σοβαρά και προγραμμάτιζα ασταμάτητα. Αυτό ήταν μια βαθιά βουτιά. Ξεκίνησα με C, που είναι φρικτή γλώσσα για να ξεκινήσεις. Δεν θα μπω στο τι πιστεύω για τη C ως γλώσσα, αλλά για αρχή είναι πολύ δύσκολη γλώσσα. Το να φτιάχνεις λοιπόν μια συνδεδεμένη λίστα στο δεύτερο ή τρίτο μάθημα, σίγουρα δεν είναι κάτι που θα εκτιμήσεις ως φοιτητής, αν δεν έχεις καθόλου υπόβαθρο. Αλλά κατάφερα να προγραμματίσω και μου άρεσε τόσο πολύ που άρχισα να προγραμματίζω στον ελεύθερό μου χρόνο, πολύ. Ο τρόπος λοιπόν με τον οποίο έμαθα σχεδόν μόνος μου να προγραμματίζω, επειδή ο τρόπος που το δίδασκαν ήταν πραγματικά, πραγματικά κακός, ήταν να βρίσκω κάτι που θα ήθελα να χρησιμοποιήσω ο ίδιος και μετά να το φτιάχνω, ή τουλάχιστον να προσπαθώ να το φτιάξω, γιατί στην αρχή απλώς παλεύεις και δεν καταφέρνεις και πολλά. Αυτό είναι στην πραγματικότητα χρήσιμο. Αλλά στο τέλος είναι απλώς εξάσκηση, εξάσκηση, εξάσκηση. Ανακάλυψα λοιπόν ότι ο προγραμματισμός είναι μια δεξιότητα που την αποκτάς απλώς κάνοντάς το. Μπορείς να πάρεις όση θεωρία θέλεις και να δεις, δεν ξέρω, δέκα εκατομμύρια βίντεο. Αλλά αν δεν αφιερώσεις πραγματικά χρόνο, δεν νομίζω ότι θα γίνεις ποτέ καλός προγραμματιστής. Απλώς πρέπει να το κάνεις. Και αυτό είναι ένα μεγάλο βήμα. Θυμάμαι ακόμα ότι μπορούσα να διαβάζω κώδικα και ήμουν αρκετά ευχαριστημένος με αυτό. Αλλά μετά το να γράφω κώδικα, αυτό ήταν ένα τόσο μεγάλο βήμα.
Jonathan: ευχαριστημένος με αυτό και μετά το να γράφω κώδικα, αυτό ήταν ένα τόσο μεγάλο βήμα. Στις τελευταίες εκπομπές ρωτάω πότε «κλικάρισε» ο προγραμματισμός για τους ανθρώπους, και αναρωτιέμαι αν υπήρξε για σένα μια στιγμή όπου «έπεσε το κέρμα» και σκέφτηκες «ω, Θεέ μου, όλα βγάζουν νόημα». Μήπως πάλευες προσπαθώντας να κατανοήσεις τη θεωρία, ή υπήρξε μια στιγμή όπου είπες «εντάξει, όχι, αυτό είναι απλό»;
Erik: Δεν νομίζω ότι είχα μία μοναδική στιγμή «εύρηκα». Νομίζω ότι είχα αρκετές. Έρχεται σε στάδια. Νομίζω ότι το πρώτο πραγματικό πρόγραμμα που έγραψα ήταν ένα όπου έπρεπε να μαντέψεις μια λέξη. Όπως το τρέχον πολύ δημοφιλές παιχνίδι όπου παίρνεις το... Λοιπόν, είναι σαν την κρεμάλα, ας πούμε ότι είναι η κρεμάλα. Αλλά ήταν σε C και κατάφερα πραγματικά να το κάνω να δουλέψει, οπότε μπορούσα να παίξω το δικό μου παιχνίδι. Κατάλαβα λίγο τι συνέβαινε και μετά προχωράς λίγο. Είχα κάτι που είχε να κάνει, νομίζω, με mutex. Υπήρχαν δηλαδή τρένα και δεν έπρεπε να συγκρουστούν. Μπορούσες να χρησιμοποιήσεις ένα mutex για όταν διασταυρώνονταν. Και το mutex είναι βασικά σαν ένα σήμα που λέει «στοπ» ή «προχώρα». Οπότε αυτό ήταν πολύ διασκεδαστικό. Ήμουν αρκετά ευχαριστημένος με αυτό. Οπότε το έδωσα στον καθηγητή μου. Και μου είπε: «Και τι γίνεται αν θέλω να έχω τέσσερα τρένα;» Και είπα: «Ω, ω, ω, ουάου. Δεν το είχα σκεφτεί». Οπότε αυτό ήταν σαν να μου άνοιξαν τα μάτια, και ήταν απλώς μία απλή φράση. Και σκέφτηκα: «Ω, θα έπρεπε να είχα λάβει υπόψη το ενδεχόμενο να ρωτήσει κάτι τέτοιο». Οπότε πήγα και πέρασα το σαββατοκύριακο προσπαθώντας να παραμετροποιήσω τον κώδικά μου, ώστε να μπορείς να έχεις πολλά τρένα, και τα κατάφερα. Το έβαλα με κόλπο. Δεν ήταν όμορφο, αλλά δούλευε. Οπότε αυτή ήταν άλλη μια στιγμή όπου σκέφτηκα: «Ω, αυτό είναι πραγματικά, πραγματικά ωραίο. Και μπορώ να κάνω τέτοια πράγματα».
Jonathan: Ωραία. Μπορώ να φανταστώ ότι κάνεις τέτοια πράγματα. Οπότε από το ότι σε ξέρω, το ξέρω αυτό. Και επίσης από το ότι έπρεπε να μάθω να προγραμματίζω, υπάρχει αυτή η διαδικασία όπου απλώς πετάς κάτι κάτω, το κάνεις να δουλέψει και μετά το βελτιώνεις. Και ήταν αυτή η εμπειρία σου επίσης; Ήταν κάπως σαν, απλώς γράψ' το, κάν' το να δουλέψει. Ποιος νοιάζεται για τα υπόλοιπα; Και μετά βελτίωσέ το.
Erik: Ναι, ναι, νομίζω ότι τον πρώτο χρόνο περίπου, αρκεί να έτρεχε, ήμουν πολύ, πολύ χαρούμενος. Δεν υπήρχε κάτι σαν αισθητική ή κάτι τέτοιο. Απλώς, αν τρέχει, είναι καλό. Και το παράκανα εντελώς με τα σχόλια στον κώδικά μου, γιατί ο καθηγητής μου μου είπε ότι πρέπει να σχολιάζεις τον κώδικά σου. Και η αναλογία κώδικα προς σχόλια ήταν ίσως ένα προς δέκα ή κάτι τέτοιο, τεράστια. Και... ναι, υπάρχει ακόμα το παλαιότερο project μου, που είναι ακόμα online, που το ανέβασα. Αυτό ήταν το πρώτο μου project ανοιχτού κώδικα. Θυμάσαι το MSN Messenger όπου μπορούσες να στείλεις μήνυμα;
Jonathan: Εντάξει, κάτι μου λέει, αλλά όχι ακριβώς.
Erik: Θυμάσαι το Winamp;
Jonathan: Ναι.
Erik: Ναι, λοιπόν, το Winamp ήταν ένας media player. Ήταν στην εποχή του Napster. Κατέβαζες MP3 και μετά το έπαιζες μέσω του Winamp. Αυτό που ήθελα να κάνω ήταν, αν έπαιζα ένα τραγούδι, να προστίθεται αυτόματα στο όνομά μου στο MSN Messenger. Και ήμουν αρκετά ενθουσιασμένος με τον προγραμματισμό των Windows τότε. Αυτό ήταν το Win32. Πολύ παλιομοδίτικο, όχι αυτό που έχουμε τώρα, αλλά πολύ χαμηλού επιπέδου και πολύ ωραία πράγματα επίσης. Έφτιαξα λοιπόν ένα plugin σε C++, που ήταν η αγαπημένη μου γλώσσα τότε, αλλά ήξερα και τρεις γλώσσες, οπότε δεν λέει και πολλά. Αλλά έφτιαξα ένα plugin. Αν έπαιζε το Winamp, έπαιρνε το όνομα μέσω περίπλοκων Win32 APIs και μετά ενημέρωνε το όνομα που είχες στο παράθυρο του MSN. Οπότε όλοι μπορούσαν να δουν ποιο κομμάτι έπαιζα. Και το ανέβασα πραγματικά online, γιατί σκέφτηκα ότι ίσως αρέσει και σε άλλους. Νομίζω ήταν στο SourceForge, που τώρα πια δεν το χρησιμοποιεί κανείς, γιατί νομίζω είχαν κάποια θέματα με την ιδιωτικότητα ή κάτι τέτοιο. Αλλά στην πραγματικότητα άλλοι άνθρωποι στον κόσμο το χρησιμοποίησαν και έμεινα κατάπληκτος. Έβλεπα τις λήψεις, δεν ξέρω, διακόσιες λήψεις, και άνθρωποι χρησιμοποιούσαν το λογισμικό που είχα γράψει. Αυτό ήταν το καλύτερο συναίσθημα όλων των εποχών. Και αυτό ήταν το πρώτο μου πρόγραμμα ανοιχτού κώδικα. Δεν είχα ποτέ πραγματικά σύνδρομο του απατεώνα. Ένιωθα ότι αυτός είναι ο κώδικάς μου. Αν κάποιος νομίζει ότι είναι κακός, εντάξει. Δουλεύει, οπότε ήμουν ευχαριστημένος με αυτό. Και μπορώ να μάθω από τα σχόλια των άλλων. Δεν ήμουν ποτέ τύπος του συνδρόμου του απατεώνα, κάτι που δεν θα εξέπληττε όσους με ξέρουν.
Jonathan: Δεν θα με εξέπληττε. Ως προς την εμπειρία σου με καθηγητές και δασκάλους στο πανεπιστήμιο, υπήρχαν συγκεκριμένοι δάσκαλοι που ξεχώρισαν για σένα, και ο τρόπος που δίδασκαν, που επιτάχυνε το πώς έμαθες ή είχε τεράστιο αντίκτυπο στο πώς καταλάβαινες τον προγραμματισμό; Και τι έκαναν συγκεκριμένα που σου επέτρεψε να γεφυρώσεις το χάσμα από τη θεωρία στην πρακτική εφαρμογή; Αυτή είναι αρκετά μεγάλη ερώτηση. Μπορείς να τη χωρίσεις σε όσα κομμάτια θέλεις. Ναι, ναι.
Erik: Ναι, ναι. Ναι, λοιπόν, πρέπει να το διαχωρίσω ανάμεσα στο πανεπιστήμιο εφαρμοσμένων επιστημών και στο πανεπιστήμιο. Μιλώντας πρώτα για το δεύτερο, στο πανεπιστήμιο, νομίζω ότι το γενικό επίπεδο των δεξιοτήτων που έπρεπε να έχει κάποιος για να διδάξει ήταν πολύ, πολύ χαμηλό. Ήταν πολύ χαμηλά ο πήχης. Και το αίσθημά μου ήταν ότι πολλοί από αυτούς που δίδασκαν στο πανεπιστήμιο το έκαναν επειδή έπρεπε, όχι επειδή ήθελαν. Πολλές φορές στο πανεπιστήμιο θέλεις να κάνεις έρευνα, αλλά υπάρχει ένας αριθμός ωρών που πρέπει να περάσεις διδάσκοντας. Είναι μέρος της δουλειάς, αλλά δεν τους άρεσε πραγματικά. Ήθελα λοιπόν να μάθω περισσότερο προγραμματισμό αφού είχα μάθει να προγραμματίζω. Οπότε πήρα την ειδίκευση στον προγραμματισμό εκεί, αλλά ήταν τόσο κακή. Ήμουν σχεδόν θυμωμένος που αυτό ήταν το επίπεδο γνώσης προγραμματισμού που ήθελαν να μου μεταδώσουν, ήταν τόσο κακό, που άλλαξα στην ασφάλεια. Και δεν με ενδιαφέρει πραγματικά η ασφάλεια, αλλά τα μαθήματα προγραμματισμού ήταν τόσο κακά. Πάντα λέω ότι, στην πανεπιστημιακή μου πορεία, το μόνο πράγμα που έμαθα πραγματικά ήταν το πώς να γράφω σωστά άρθρα, πώς να κάνω σωστή έρευνα πηγών, ώστε να ξέρεις τις πηγές σου και να μην δέχεσαι απλώς οποιαδήποτε πηγή. Και αυτό το έμαθα σε εκείνα τα χρόνια, αλλά δεν έμαθα τίποτα απολύτως για τον προγραμματισμό.
Jonathan: Τώρα ακούγεται πολύ σαν την ιστορία επίσης, το πώς ανακρίνεις μια πηγή, το πώς διασφαλίζεις ότι το επιχείρημά σου στέκει, όλα αυτά. Πώς εκδηλώθηκαν οι δεξιότητες και η απόλαυση της ιστορίας...
Erik: πολύ γύρω από αυτό.
Jonathan: Πώς εκδηλώθηκαν στον κώδικά σου και στη μάθηση του προγραμματισμού, αν όντως συνέβη; Ποιες ήταν μερικές από τις διασταυρώσεις εκεί;
Erik: Αυτή είναι δύσκολη ερώτηση. Λοιπόν, και τα δύο περιλαμβάνουν πολύ διάβασμα. Η ιστορία έχει να κάνει με το διάβασμα. Αλλά και ο προγραμματισμός έχει να κάνει με το διάβασμα κώδικα. Ο αριθμός των φορών που γράφεις πραγματικά κώδικα είναι πολύ μικρότερος από τον αριθμό των φορών που διαβάζεις κώδικα. Οπότε μοιάζει αρκετά και με το διάβασμα. Μπορεί να μοιάζει λίγο με το να είσαι αρχαιολόγος, αν έχεις μια νέα δουλειά και ξεκινάς με αυτό το πανάρχαιο σύστημα legacy που πρέπει να βρεις τον δρόμο σου μέσα σε αυτό. Νιώθεις σαν να κρυφοκοιτάς σε γωνιές και σχισμές και να βλέπεις τι κρύβεται εκεί. Και μερικές φορές βγαίνουν πτώματα από ντουλάπες κ.λπ. Οπότε νιώθεις λίγο σαν εξερεύνηση. Θέλω να πω, τι ήταν αυτό που σου άρεσε σε αυτό; Δεν ξέρω αν υπάρχει κάτι άλλο... Ποια ήταν η απόλαυση;
Jonathan: Ευχαριστώ. Πού ήταν η απόλαυση στον κλάδο για σένα;
Erik: Κυρίως, λοιπόν, οι ιστορίες που έλεγαν οι δάσκαλοί μου. Δηλαδή πειρατές, έλεγαν για το πώς τους έσερναν με ένα σχοινί κάτω από το πλοίο και ήταν πολύ γραφικοί, κ.λπ. Μου αρέσουν αυτά. Μου αρέσουν πραγματικά. Και λατρεύω τους Ρωμαίους και τον πολιτισμό τους και το πώς εξαπλώθηκαν, και ήταν απλώς... Και επίσης η πολιτική. Δηλαδή οι μαχαιριές στην πλάτη, κ.λπ. Το λατρεύω. Είχα επίσης Λατινικά στο λύκειό μου. Δεν μου άρεσαν καθόλου τα Λατινικά, αλλά λατρεύω τις ιστορίες που... Δηλαδή δεν μου άρεσε που έπρεπε να κάνω Λατινικά, αλλά οι ιστορίες που έπρεπε να μεταφράσουμε, αυτές μου άρεσαν. Αλλά τα παράτησα μετά από δύο χρόνια.
Jonathan: Αυτές μου άρεσαν. Όχι, ο λόγος που το ρώτησα, γύρω από την ιστορία, ήταν...
Erik: Ναι, ξέρω την ιστορία.
Jonathan: Έχω δει αρκετούς ανθρώπους που τους αρέσει το πιο καλλιτεχνικό ή κοινωνικό... Πώς να το πούμε; Ίσως οι τέχνες στο αγγλικό πλαίσιο, όπως οι τέχνες και η ιστορία, να πέφτουν σε αυτή την κατηγορία. Αλλά βλέπω όλο και περισσότερους ανθρώπους που απολάμβαναν αυτόν τον χώρο να περνούν στη μάθηση του προγραμματισμού. Και ο λόγος που με ενδιαφέρει είναι ότι υπάρχει σαφώς... επικάλυψη, και το να προσπαθήσω να τη χαρτογραφήσω λίγο ήταν ένα εξαιρετικά ενδιαφέρον κομμάτι των συζητήσεών μου με διάφορους ανθρώπους. Και νιώθω ότι αν έχεις μια μεγάλη εικόνα και μια πολυεπιστημονική προσέγγιση στα διάφορα πράγματα που μελετάς, το να τα φέρνεις αυτά στον προγραμματισμό είναι εξαιρετικά ωφέλιμο, γιατί μπορείς να εφαρμόσεις διαφορετικές δεξιότητες στον χώρο του προγραμματισμού. Και νομίζω, ναι, αυτό είναι απλώς... θα σχολίαζα αυτό. Οπότε είναι ενδιαφέρον που λάτρευες την ιστορία και τώρα έχεις, τι, εμπειρία σε πάνω από 30 διαφορετικές γλώσσες προγραμματισμού και συντηρείς πολλές από αυτές. Λοιπόν, όχι απαραίτητα συντηρείς, αλλά είσαι βαθιά εμπλεκόμενος στη διαχείριση όλων αυτών στο Exercism, που είναι το δικό σου... Λοιπόν, ναι, ναι. Ναι, πες.
Erik: Πόσο είναι δικό σου; Μπορώ να επιστρέψω λίγο σε αυτό που μόλις είπες; Ανέφερες ότι υπάρχουν πολλοί διαφορετικοί τύποι ανθρώπων, με διαφορετικά ενδιαφέροντα, που ασχολούνται με τον προγραμματισμό. Αλλά ένας από τους λόγους που νομίζω ότι συμβαίνει αυτό είναι ότι ο προγραμματισμός ελκύει και πολύ τεχνικά σκεπτόμενους ανθρώπους, γιατί έχει αυστηρούς κανόνες, οι γλώσσες είναι πολύ συγκεκριμένες. Υπάρχει γραμματική, υπάρχει σύνταξη. Είναι όλα πράγματα που αρέσουν σε ανθρώπους που θέλουν τα πράγματα με έναν συγκεκριμένο τρόπο. Για παράδειγμα, αν είσαι φυσικός, σου αρέσουν οι κανόνες, οι νόμοι, κ.λπ. Και υπάρχουν τέτοια πράγματα στον προγραμματισμό, αλλά είναι και σαν τέχνη. Και έτσι μερικές φορές οι άνθρωποι το συγκρίνουν με το να γράφεις ένα βιβλίο, και νομίζω ακόμα... Αυτό είναι πιθανώς ένα από τα καλύτερα παραδείγματα. Δεν μου αρέσει αυτό με το χτίσιμο ενός σπιτιού, γιατί κανένα σπίτι δεν θα χτιζόταν αν χτίζαμε το λογισμικό μας όπως χτίζουμε ένα σπίτι. Αλλά είναι πραγματικά και επιστήμη και τέχνη, νιώθω. Ο Jeremy το ανέφερε πρόσφατα στα πιο βαθιά πράγματα, ότι με μια πολύ απλή άσκηση οι άνθρωποι μπορούν να βρουν εκατοντάδες διαφορετικές λύσεις, ακόμα κι αν νομίζεις ότι θα έπρεπε να υπάρχει μόνο ένας τρόπος να λυθεί. Αλλά πάντα υπάρχουν περισσότεροι από ένας τρόποι. Και αυτό λάτρευα στον προγραμματισμό, ότι μπορείς να έχεις κάτι που δουλεύει, αλλά μετά μπορείς να εξερευνήσεις, δεν ξέρω, άλλες 20 επιλογές, και να γράψεις και να δεις, ε, αυτό δουλεύει κι αυτό. Είναι αυτός ο συνδυασμός του να είναι και τέχνη και επιστήμη που μου αρέσει πολύ, γιατί νομίζω ότι είναι επίσης ο μόνος τρόπος με τον οποίο μπορώ πραγματικά να είμαι δημιουργικός. Δεν είμαι καθόλου δημιουργικός άνθρωπος. Έχω ένα αριστερό και ένα δεξί χέρι, αλλά θα το καταλάβαινες... δεν θα το καταλάβαινες αν έκανα κάτι γύρω από το σπίτι, όπως δουλειές ή ξυλουργική ή κάτι τέτοιο. Δεν τα πάω καλά με αυτά, κάτι που οφείλεται επίσης στο ότι ο πατέρας μου δεν μπορούσε πραγματικά να μου τα μάθει. Είναι πραγματικά ενδιαφέρον.
Jonathan: Αλλά επίσης, δεν με ενδιέφερε καθόλου αυτό. Εγώ έκανα τέχνη στο σχολείο. Έχω κάνει μουσική, έχω παίξει κιθάρα ή ό,τι άλλο. Και για μένα λοιπόν, το πλαίσιο που έχω για τη δημιουργικότητα ήταν πάντα στο σχέδιο ή στη μουσική και τα σχετικά. Και δεν είχα σκεφτεί ποτέ πραγματικά τη δημιουργική πτυχή του κώδικα. Και τώρα που το ανέφερες, πώς εκδηλώνεται αυτό για σένα; Δηλαδή, παίζεις κάποιο όργανο ή...; Ξέρω ότι σου αρέσει η μουσική, αλλά απλώς προσπαθώ να συνδέσω αυτά τα δύο.
Erik: Λοιπόν, ε... Έχω, έχω. Ναι, λοιπόν, προσπάθησα να μάθω κιθάρα. Ήταν πολύ δύσκολο για τη γυναίκα μου, γιατί μέναμε στο φοιτητικό της διαμέρισμα και ήταν ίσως 20 τετραγωνικά μέτρα. Οπότε προσπαθούσα να μάθω κιθάρα και ήμασταν τόσο κοντά ο ένας στον άλλον. Ακόμα απορώ που το ανέχτηκε. Αλλά δεν έχω...
Jonathan: Είναι απλώς...
Erik: Δεν έχω κανένα έμφυτο ταλέντο να παίζω όργανο. Έπρεπε να δουλέψω πραγματικά, πραγματικά, πραγματικά σκληρά για να φτάσω σε ένα συγκεκριμένο επίπεδο, που ήταν ακόμα πολύ χαμηλό. Μπορούσα να κρατήσω ρυθμούς κ.λπ., αυτά τα κατάφερνα μια χαρά. Αλλά κάποια στιγμή ο δάσκαλος κιθάρας μου μου ζήτησε να αυτοσχεδιάσω και μετά να κάνω σόλο, και ήμουν εντελώς χαμένος. Δεν μπορούσα με τίποτα να το κάνω. Δεν υπάρχει καμία μουσική δημιουργικότητα μέσα μου.
Jonathan: Δεν υπάρχει καμία μουσική δημιουργικότητα μέσα μου. Ο προγραμματισμός; Σε αντίθεση με σένα. Όταν έρχεσαι στον προγραμματισμό φρέσκος, ας πούμε ότι παίρνεις ένα brief από τον Jeremy ή ένα αίτημα για χαρακτηριστικό στο Exercism και λέει «θα κάνουμε το Χ, το Υ ή το Ζ». Σε ζωντανεύει αυτό πραγματικά νοητικά και νιώθεις σαν «ουάου, εντάξει, ωραία, ας το εξερευνήσουμε πραγματικά» και το απολαμβάνεις, και σου αρέσει αυτή η διαδικασία; Είναι πραγματικά αυτό όπου νιώθεις ότι ζωντανεύεις, κατά μία έννοια;
Erik: Σε αντίθεση με σένα. Εντάξει. Ναι, ναι. Λοιπόν, είναι... το πρόγραμμα είναι το να έχεις μια ιδέα και να την κάνεις να γίνει κάτι. Είσαι σχεδόν σαν ένας μικροσκοπικός Θεός, ναι, όπου ξεκινάς από το τίποτα, έχεις μια ιδέα και μετά υπάρχει κάτι. Και είναι απλώς τόσο, τόσο μαγικό. Και νιώθω ακόμα πολύ, πολύ ενθουσιασμένο όταν έχω ένα script. Και υπάρχει όλο αυτό το κείμενο, γραμμή προς γραμμή, και μετά το βλέπεις απλώς να κάνει πράγματα. Και είναι τόσο διασκεδαστικό να βλέπεις τον υπολογιστή να δουλεύει για σένα με βάση αυτό που του είπες να κάνει. Ακόμα μου αρέσει. Και η πτυχή της δημιουργικότητας είναι σίγουρα επίσης στο να εξερευνάς προς ποια κατεύθυνση θα προσπαθήσεις να φτιάξεις κάτι. Και μετά, μόλις το φτιάξεις, πιθανότατα έχεις ακούσει για τον κύκλο της αναδιαμόρφωσης, όπου έχεις κάτι που δουλεύει και μετά αρχίζεις να το επεξεργάζεσαι και να δεις αν μπορείς να το κάνεις καλύτερο. Και λατρεύω απόλυτα την αναδιαμόρφωση. Υπάρχει ένα από τα βιβλία, πού είναι; Ω, δεν το βλέπω γιατί είναι πολύ έξω από την κάμερα. Αλλά είναι το Refactoring του Martin Fowler. Και είναι μία από τις καλύτερες εμπειρίες μου διαβάζοντας για λογισμικό. Οπότε λατρεύω την αναδιαμόρφωση. Είναι απλώς η διαδικασία όπου έχεις κάτι που δουλεύει, αλλά μπορείς να το κάνεις ακόμα καλύτερο ή πιο όμορφο, πιο γρήγορο, ό,τι κριτήριο έχεις. Και γι' αυτό επίσης λάτρεψα πραγματικά το Exercism, γιατί είναι φτιαγμένο για αυτό: λύνεις tests, και μετά μπορείς, έχεις ένα πλαίσιο δοκιμών και κάνεις ό,τι θέλεις με τον κώδικά σου. Και όσο είναι πράσινο, δουλεύει. Οπότε...
Jonathan: Μου αρέσει πολύ αυτό. Θα συνεχίσω να το γυρίζω σε διαφορετικά χρονοδιαγράμματα. Οπότε τώρα τελείωσες το πανεπιστήμιο, έμαθες να προγραμματίζεις, είπες πραγματικά «εντάξει, δεσμεύομαι σε αυτή τη διαδικασία της μάθησης, θα βυθιστώ βαθιά σε αυτό». Τι συνέβη λοιπόν από εκείνο το σημείο της πραγματικής δέσμευσης και μετά, όταν άρχισες πιθανότατα να σκέφτεσαι την καριέρα, που είναι πάντα μεγάλο μέρος της διαδικασίας του να είσαι στο πανεπιστήμιο, σαν «τι θα κάνω για την υπόλοιπη ζωή μου;» Πώς εξελίχθηκε αυτό; Ποιες ήταν οι σκέψεις σου γύρω από αυτό; Τι άνοιξε μπροστά σου;
Erik: Σίγουρα. Δεν σκέφτηκα ποτέ πραγματικά την καριέρα μου. Δεν νομίζω ότι το έχω κάνει ποτέ αυτό στη ζωή μου. Το μόνο πράγμα που πραγματικά με νοιάζει είναι να κάνω κάτι που μου αρέσει. Και αυτό να είναι κοντά μου, ώστε να μην χρειάζεται να οδηγώ πολύ. Δεν μου αρέσει να οδηγώ πολύ. Αλλά όχι, δεν σκέφτηκα ποτέ πραγματικά την καριέρα μου. Και επίσης ήμουν απίστευτα τυχερός. Βασικά δεν χρειάστηκε ποτέ να κάνω αίτηση για δουλειά, εκτός ίσως από μία ή δύο φορές. Πάντα είχα φίλους ή ανθρώπους που με ήξεραν. Το ίδιο και με το Exercism. Ο Jeremy με ήξερε και δεν χρειάστηκε να κάνω αίτηση, να περάσω, δεν ξέρω, τέσσερα ή πέντε διαφορετικά στάδια συνέντευξης όπως έπρεπε εσύ. Ίσως ακόμα περισσότερα για σένα, παρεμπιπτόντως. Αλλά, ε... Όχι, όχι, ξέρω. Αλλά δεν είχα κανένα. Οπότε ήταν το ίδιο όταν έψαχνα για δουλειά. Πάντα δούλευα παράλληλα όταν μάθαινα στο σχολείο, ακόμα και στο λύκειο, πάντα προσπαθούσα να βγάλω λίγα χρήματα, γιατί οι γονείς μου δεν είχαν πολλά χρήματα. Έπρεπε να βγάζω το δικό μου μερίδιο. Αλλά μου αρέσει να δουλεύω. Και νομίζω ότι δούλευα ίσως 20 ώρες σε μια δουλειά προγραμματισμού ενώ ήμουν στο πανεπιστήμιο, γιατί είχαμε τόσο λίγο πραγματικό χρόνο που έπρεπε να περάσουμε στο πανεπιστήμιο, ώστε μπορούσα να βγάλω αρκετά χρήματα... και αγόρασα αυτή την τεράστια συλλογή DVD από αυτό.
Jonathan: Ας μην μπούμε σε αυτό.
Erik: Ας μην μπούμε σε αυτό. Ναι, συγγνώμη. Στην πραγματικότητα χάρισα τα περισσότερα και κράτησα αυτά για τα οποία έχω πολύ, πολύ αγαπημένες αναμνήσεις, αλλά τα περισσότερα τα χάρισα. Είχα 400 ή 500 DVD κάποια στιγμή.
Jonathan: 400-500 DVD κάποια στιγμή. Ω, αυτό είναι διασκεδαστικό.
Erik: Ήταν κοντά σε αυτό. Ήταν κοντά σε αυτό. Ναι. Αλλά λοιπόν, ενώ ήμουν στο πανεπιστήμιο, ένας φίλος μου, ο ίδιος που ήταν προγραμματιστής τότε που ήμουν 10 χρονών ή κάτι τέτοιο, έκανε το πανεπιστήμιο μαζί μου. Και είχε μια δουλειά και με ρώτησε: «Ε, θέλεις να έρθεις σε αυτή την εταιρεία για να βγάλεις λίγα επιπλέον χρήματα;» Οπότε το έκανα. Και μετά έμεινα βασικά εκεί. Μόλις τελείωσα το πανεπιστήμιο, με ρώτησαν αν ήθελα να κάνω διδακτορικό. Αλλά διάβασα αυτό ως... βρήκες κάτι ενδιαφέρον στο διδακτορικό σου, που ήταν καθαρή τύχη, παρεμπιπτόντως, έκανα τη δουλειά, αλλά ήταν τύχη. Αλλά το διάβασα αυτό ως «θέλουμε να βάλουμε τα ονόματά μας σε κάτι που θα γράψεις, για να πάρουμε μια δημοσίευση». Οπότε δεν ήμουν για κάτι τέτοιο. Και δεν ήθελα να κάνω τέσσερα χρόνια θεωρητικά πράγματα. Και όλος ο ακαδημαϊκός κόσμος δεν με τράβηξε πραγματικά. Ήμουν πολύ πιο άνετα κάνοντας απλώς πρακτικά πράγματα μέσα σε μια εταιρεία. Οπότε απλώς έμεινα εκεί που δούλευα. Δηλαδή ήμουν σε PHP και είχαμε μια υπέροχη ομάδα. Νομίζω ότι, εκτός ίσως από τη σημερινή μας ομάδα, δεν είχα ποτέ δουλέψει σε τόσο ποικιλόμορφη και ικανή ομάδα. Αλλά μας διοικούσε μια διοίκηση που ήταν τόσο κακή. Υπήρχε ένα τόσο δυσαρεστημένο τεχνολογικό περιβάλλον εκεί. Ήταν απλώς, δεν ήταν καλό, αλλά και πάλι περνούσα πολύ καλά. Αλλά η PHP δεν είναι η αγαπημένη μου γλώσσα. Οπότε ήμουν ενθουσιασμένος με την C#. Ήμουν θαυμαστής της C# από τότε που ήταν ακόμα C# 1.0. Ήταν αρκετά τραχιά στις άκρες τότε. Παρήγγειλα βιβλία από την Αμερική και έπρεπε να πληρώσω κάποιον επιπλέον φόρο και ήταν αρκετά ακριβό στο τέλος, αλλά χρησιμοποιώ ακόμα πραγματικά, πραγματικά πολύ αυτό το βιβλίο. Και μετά είπα ότι θέλω να κάνω C# για δουλειά. Όχι μόνο στο πλάι. Και έκανα αίτηση. Στην πραγματικότητα, ήταν και για το πανεπιστήμιο, αλλά όχι για έρευνα ή κάτι τέτοιο. Ήταν κάτι σαν, λοιπόν, υποστήριξη για τα διάφορα τμήματα του πανεπιστημίου. Και έκανα C# για επτά χρόνια περίπου.
Jonathan: Και έκανα C# για επτά χρόνια περίπου. Απλώς πες μου την ιστορία εκεί. Γιατί ξεκίνησες ως εθελοντής ή ως συνεισφέρων, σωστά; Και μετά χτίστηκες από εκεί.
Erik: Ναι. Ναι, λοιπόν, ενώ δούλευα στο πανεπιστήμιο, ήταν πολύ ελαστικοί στο να σου επιτρέπουν να σπουδάζεις πράγματα ή να πηγαίνεις σε συνέδρια, κ.λπ. Κάποια στιγμή λοιπόν είχα ακούσει για κάτι που λέγεται συναρτησιακός προγραμματισμός. Και σκέφτηκα: «Ε, δεν ξέρω γι' αυτό». Ήξερα ότι δίδασκαν ένα προαιρετικό μάθημα στο πανεπιστήμιο, αλλά δεν έκανα τίποτα με αυτό. Και σκέφτηκα ότι ίσως θα έπρεπε να μάθω συναρτησιακό προγραμματισμό, ίσως να έχει πλάκα. Και βρήκα έναν άλλο συνάδελφό μου που ήθελε να συμμετάσχει. Κάναμε λοιπόν ένα δωρεάν μάθημα, ένα μάθημα Scala στο Coursera, πρέπει να πληρώσεις αν το κάνεις τώρα, αλλά τότε δεν χρειαζόταν. Και το δίδασκε ο Martin Odersky, που είναι ο δημιουργός της Scala, μιας συναρτησιακής γλώσσας που την έχουμε και στο Exercism. Και πέρασα πολύ ωραία μαθαίνοντας συναρτησιακό προγραμματισμό. Ήταν επίσης αρκετά νοητικά δύσκολο κατά διαστήματα, γιατί είναι ένας πραγματικά διαφορετικός τρόπος να σκέφτεσαι τα πράγματα. Αλλά κάπως επέμεινα, και μου άρεσε πολύ. Και υπήρχε αυτό το φόρουμ όπου μπορούσες να συζητήσεις με άλλους μαθητές, για παράδειγμα ασκήσεις που δεν μπορούσες να λύσεις. Αλλά κάποιοι ρώτησαν: «Τι πηγές μπορώ να χρησιμοποιήσω αν θέλω να μάθω περισσότερα για τη Scala;» Και κάποιος ανέφερε: «Ε, δοκίμασε το Exercism, έχουν αυτό το καταπληκτικό πράγμα όπου κάνεις πολλές διαφορετικές ασκήσεις, σαν μικρά παζλ». Και σκέφτηκα: «Ε, αυτό ακούγεται καλό». Οπότε γράφτηκα και έκανα τη διαδρομή Scala. Και έμαθα πραγματικά πολλά. Και αυτό ήταν... βούτηξα τα δάχτυλά μου στον κόσμο του συναρτησιακού προγραμματισμού. Οπότε σκέφτηκα μήπως κάνω τη βαθιά βουτιά. Και πήγα στη Haskell. Και αυτό ήταν μια πραγματικά βαθιά βουτιά για μένα τότε. Αλλά ήταν πολύ... ήταν το Exercism V1. Δηλαδή απλώς οι άνθρωποι σχολίαζαν τον κώδικά σου, δεν υπήρχε επίσημο σύστημα καθοδήγησης ή κάτι τέτοιο. Αλλά οι άνθρωποι της Haskell ήταν απολύτως φανταστικοί. Οπότε βασικά έμαθα τη Haskell από αυτούς. Έκανα πολύ googling και βρήκα μερικές πραγματικά περίεργες λύσεις, έφτιαξα μερικές περίεργες λύσεις, αλλά πάντα προσπαθούσαν να με κατευθύνουν προς κάτι που ήταν ιδιωματική Haskell και όμορφη. Και ήταν μια τόσο υπέροχη εμπειρία που σκέφτηκα: «Ε, μάλλον θα έπρεπε να το κάνω κι εγώ για άλλους ανθρώπους. Ίσως μπορώ να βοηθήσω κι εγώ». Πάντα μου άρεσε να βοηθάω. Οπότε σκέφτηκα ότι θα κάνω C# και θα σχολιάζω απλώς τον κώδικα C# άλλων ανθρώπων. Και μου άρεσε. Και μετά είδα ότι, ε, η διαδρομή C# έχει, δεν ξέρω, 40 ασκήσεις και η Haskell έχει περισσότερες. Γιατί συμβαίνει αυτό; Προσπάθησα λοιπόν να καταλάβω γιατί. Και ε, μπορούσες να υποβάλεις pull requests στο Exercism και να προσθέσεις νέες ασκήσεις. Και αυτό ήταν που με κόλλησε. Και μετά απλώς έκανα ασκήσεις κάθε σαββατοκύριακο, προσθέτοντας τες. Και όταν τελείωσα με τη C#, σκέφτηκα: «Ε, F#, ας κάνουμε F#. Η F# είναι συναρτησιακή. Και είναι στο οικοσύστημα της Microsoft. Οπότε μου αρέσουν και οι δύο. Ας συνδυάσω τα αγαπημένα μου πράγματα». Και έκανα F# και έκανα το ίδιο πράγμα. Ήμουν συντηρητής της F#, φτιάχνοντας ασκήσεις, και το λάτρευα πραγματικά, πραγματικά.
Jonathan: Το λάτρευες πραγματικά. Έχεις μια γλώσσα, λες «εντάξει, θα δοκιμάσω τη Scala». Κάπως το έπιασα, και μετά πήγες στη βαθιά βουτιά. Τώρα, ο χρόνος που χρειαζόταν για κάθε γλώσσα να την καταλάβεις, μειωνόταν με τον χρόνο; Γιατί τώρα έχεις αρκετές. Θέλω να πω, πώς εξελίχθηκε αυτό;
Erik: Ναι, ναι. Λοιπόν, λειτουργεί με τον ίδιο τρόπο όπως με τις φυσικές γλώσσες. Αν μάθεις γαλλικά και ξέρεις καλά γαλλικά, τότε το να μάθεις ισπανικά θα είναι πολύ πιο εύκολο, γιατί υπάρχει τόση κοινή γνώση, όπως κοινό λεξιλόγιο, σχεδόν διάλεκτοι. Το ίδιο συμβαίνει και με τον προγραμματισμό. Αν ξέρεις C και πας στην C++, υπάρχουν πολλές νέες έννοιες, αλλά υπάρχει και πολύ πράγμα που είναι ακριβώς το ίδιο. Ολόκληρη λοιπόν η οικογένεια των γλωσσών τύπου C, που είναι και ένα από τα πράγματα που μου αρέσουν στον προγραμματισμό, ότι έχεις σαν γενεαλογικά δέντρα. Υπάρχει ο κλάδος της Lisp, ο κλάδος της ML, ο κλάδος τύπου C. Και είναι σχεδόν σαν την ιστορία, όπου έχεις αυτή τη γενεαλογία σε ένα οικογενειακό δέντρο ή κάτι τέτοιο. Αυτό το είπα πολύ δυνατά. Ναι, αυτή είναι η Haskell ή η Prolog. Αλλά λατρεύω και αυτές τις παραφωνίες, γιατί έχουν μοναδικές ιδέες. Αυτό είναι που θέλω συνήθως να δοκιμάσω. Δηλαδή να βρεις μια γλώσσα που κάνει κάτι διαφορετικά, ακόμα κι αν όλες οι γλώσσες προγραμματισμού μοιράζονται πολλή από την ίδια γνώση. Όλες έχουν Boolean λογική, και η Boolean λογική είναι απλώς κάτι σταθερό, δεδομένο. Λειτουργεί το ίδιο παντού. Μπορεί να χρειάζεται να βάλεις δύο ampersands, ή να γράψεις το and ως λέξη ή κάτι τέτοιο, αλλά τα βασικά είναι ακόμα τα ίδια. Οπότε μόλις έχεις αυτά τα βασικά, τα ξέρεις καλά, και μπορείς να τα εφαρμόσεις σε άλλες γλώσσες πιο εύκολα.
Jonathan: Είναι σχεδόν σαν την ιστορία, όπου έχεις αυτή τη γενεαλογία σε ένα οικογενειακό δέντρο ή κάτι τέτοιο. γλώσσες πιο εύκολα. Μαθαίνεις να προγραμματίζεις και παίρνεις υπόψη τη δική σου εμπειρία. Ποιες είναι μερικές από τις συμπεριφορές και τα πράγματα που κάνουν οι άνθρωποι για να μάθουν να προγραμματίζουν; Και είμαι σίγουρος ότι υπάρχει διασταύρωση σε πολλούς διαφορετικούς κλάδους. Ανέφερες ότι απλώς δεσμεύτηκες και βυθίστηκες βαθιά και πάλευες με αυτό μέχρι να το καταλάβεις. Υπάρχουν άλλες συμπεριφορές ή πράγματα που κάνουν άνθρωποι που έχεις δει και λες «ναι, αυτοί έβαλαν τον εαυτό τους σε θέση να μάθει»; Ναι, πραγματικά καλά.
Erik: Εμ, λοιπόν, πάντα προσπαθούσα να ενθαρρύνω τους ανθρώπους να φτιάχνουν κάτι που θα ήθελαν να φτιάξουν. Όταν λοιπόν μάθαινα PHP, έφτιαξα κάτι που παρακολουθούσε τις ταινίες του IMDB Top 250 που είχα δει. Έβλεπα λοιπόν πολλές ταινίες, οπότε ήθελα να τσεκάρω καθεμία από αυτές τις ταινίες, και έμαθα πολλή PHP και MySQL από αυτό, απλώς φτιάχνοντας κάτι που ήθελα να φτιάξω. Γιατί τότε διαπερνάς το... αν χτυπήσεις σε εμπόδιο, θέλεις να μην σταματήσεις, αλλά να συνεχίσεις, θέλεις να το φτιάξεις, θέλεις να δουλέψει. Και έχω δώσει αυτή τη συμβουλή σε αρκετούς ανθρώπους που άρχισαν να μαθαίνουν προγραμματισμό, και λειτούργησε καλά γι' αυτούς. Και στις μέρες μας είναι τόσο διαφορετικά από όταν μάθαινα να προγραμματίζω, με το Stack Overflow, κ.λπ. Και υπάρχει τόση γνώση που μπορείς να βρεις online. Είναι επίσης δύσκολο να βρεις τις σωστές πηγές. Και εκεί νομίζω ότι το Exercism μπορεί πραγματικά να λάμψει, γιατί μπορούμε να είμαστε σχεδόν σαν φύλακες, δηλαδή έχουμε ανθρώπους στην κοινότητά μας που ξέρουν ποιες είναι οι σωστές πηγές. Και αυτό είναι ένα πράγμα που βλέπω ότι δυσκολεύει τους νέους ανθρώπους. Και επίσης ότι υπάρχει αυτό... Είναι, σχεδόν ποτέ δεν βρίσκεις πηγές όπου ξεκινάς πραγματικά από το μηδέν. Συνήθως το κοινό του Exercism ξέρει τουλάχιστον μία γλώσσα. Και μετά προχωράς σε άλλες γλώσσες ή εμβαθύνεις σε αυτή τη γλώσσα. Αλλά δεν είναι για ανθρώπους που δεν έχουν κανένα υπόβαθρο προγραμματισμού. Δηλαδή δεν ξέρεις τι είναι ένας for βρόχος. Δεν ξέρεις τι είναι οι μεταβλητές. Οι συμβολοσειρές είναι κάτι εντελώς διαφορετικό από ό,τι έχεις στον νου σου. Ναι, πάντα με κοιτάζουν περίεργα αν η γυναίκα μου με δει να μιλάω για «strings». Εδώ στην Ολλανδία είναι κάτι διαφορετικό.
Jonathan: Ναι. Θα κάνω μερικές γενικεύσεις εδώ. Τα τελευταία χρόνια, είναι μάλλον αλήθεια ότι όλο και περισσότεροι άνθρωποι έχουν γίνει ενήμεροι για τον προγραμματισμό. Στο παρελθόν, υπήρχε μάλλον μικρότερος αριθμός ανθρώπων που ήξεραν πώς να κινούνται σε αυτόν τον χώρο. Προφανώς, καθώς αυτός ο κλάδος μεγαλώνει και μεγαλώνει με αρκετά γρήγορο ρυθμό, προφανώς υπάρχουν πολλές απόψεις και άνθρωποι που ακόμα ψάχνουν να βρουν πού στέκονται σε συγκεκριμένα πράγματα και θέματα. Όλη αυτή η έννοια του «λόφου στον οποίο θα πέθαινες» είναι βασικά ποια άποψη έχεις που θα υπερασπιζόσουν πραγματικά, με υγιή τρόπο προφανώς. Αλλά ποιο είναι το ένα πράγμα που θα υπερασπιζόσουν και θα ήθελες να το καρφώσεις και να πεις «δεν κουνιέμαι από αυτό το σημείο» και να το υπερασπιστείς; Ποιο θα ήταν αυτό; Εντάξει.
Erik: Έχω πολλές τέτοιες απόψεις, αλλά νομίζω ότι αυτή που θα ήθελα να εξηγήσω εδώ είναι ότι θα έπρεπε να μαθαίνεις περισσότερες γλώσσες από αυτές που ήδη ξέρεις. Δηλαδή δοκίμασε νέες γλώσσες που δεν ξέρεις και δοκίμασε γλώσσες που είναι πολύ διαφορετικές από αυτές που ήδη ξέρεις. Είναι πολύ εύκολο. Για παράδειγμα, αν ξέρεις C#, απλώς μείνε στη C# και αυτό είναι εντάξει. Αλλά αν καταφέρεις να βρεις τον χρόνο και τη θέληση να δοκιμάσεις κάτι άλλο, για παράδειγμα F# ή, δεν ξέρω, δοκίμασε Kotlin, απλώς κάνε κάτι διαφορετικό και δες ποιες είναι οι διαφορές. Θα γίνεις πολύ καλύτερος προγραμματιστής. Είμαι απολύτως 100% σίγουρος ότι το ότι έμαθα F# με έκανε καλύτερο προγραμματιστή C#, ακόμα κι αν είναι διαφορετικές γλώσσες και έχουν διαφορετικές φιλοσοφίες. Αλλά υπάρχει τόση επικάλυψη μεταξύ των γλωσσών σήμερα. Όταν οι γλώσσες ήταν ακόμα αρκετά νέες, για παράδειγμα, η Lisp δεν μοιάζει καθόλου με τη C. Οι συναρτησιακές γλώσσες ήταν λοιπόν πολύ διαφορετικές από τις προστακτικές. Αλλά οι σύγχρονες γλώσσες, όπως η C#, η Java, η Kotlin, η Rust, για παράδειγμα, παίρνουν έμπνευση και από άλλες γλώσσες, αλλά και από συναρτησιακές γλώσσες. Όταν ήμουν στο πανεπιστήμιο, το αστείο που έλεγαν πάντα ήταν ότι ο συναρτησιακός προγραμματισμός είναι υπέροχος, αλλά κανείς δεν τον χρησιμοποιεί. Αλλά αυτό δεν ισχύει πια. Ακόμα κι αν λοιπόν δεν δουλεύεις σε μια συναρτησιακή γλώσσα, ο συναρτησιακός προγραμματισμός είναι παντού. Η JavaScript έχει πολλές συναρτησιακές έννοιες. Η C# έχει προηγμένη αντιστοίχιση προτύπων, έχει LINQ, έχει τόσα πολλά συναρτησιακά πράγματα. Και αυτό που βλέπεις είναι ότι οι γλώσσες δανείζονται έννοιες από παντού. Οπότε δεν είναι τόσο ξεκάθαρο ποια γλώσσα είναι συναρτησιακή και ποια είναι απλώς προστακτική. Είναι πιο πολύ ένα μείγμα τώρα. Αλλά εξακολουθώ να πιστεύω ότι υπάρχει πολύ κέρδος αν αρχίσεις να μαθαίνεις μια νέα γλώσσα. Κάποιοι έλεγαν «μάθε μια νέα γλώσσα κάθε χρόνο». Προσπαθώ να το κάνω. Μπορώ να φανταστώ ότι αυτό θα είναι ενοχλητικό για κάποιους ανθρώπους, και θα κατακλυστούν. Αλλά δοκίμασε τουλάχιστον μία διαφορετική γλώσσα και προσπάθησε να είναι μια γλώσσα λίγο έξω από τη ζώνη άνεσής σου. Και σου υπόσχομαι ότι μαθαίνεις πράγματα, θα μάθεις πολλά και θα γίνεις καλύτερος προγραμματιστής γενικά. Και επίσης για τη γλώσσα με την οποία ήδη δουλεύεις.
Jonathan: Και επίσης, ήδη δουλεύεις με αυτήν. Προφανώς οι άνθρωποι φτιάχνουν νέες γλώσσες για να καλύψουν μια συγκεκριμένη ανάγκη. Και λες ότι η προστακτική και η συναρτησιακή κάπως συγχωνεύονται λίγο. Βλέπεις ποτέ μια κατάσταση όπου οι γλώσσες θα εξαφανιστούν και θα μείνουμε με μερικές βασικές γλώσσες; Ή είναι αυτό αφελές;
Erik: Όχι, όχι, νομίζω ότι οι άνθρωποι έχουν πολύ ισχυρές απόψεις γι' αυτό. Οπότε θα υπάρχουν πάντα νέες γλώσσες. Θα υπάρχουν νέες γλώσσες κάθε μέρα, που είναι εντάξει. Αλλά θα γίνει κάποιο ξεκαθάρισμα. Οι δημοφιλείς, στο τέλος, μάλλον θα επιβιώσουν. Δεν βλέπω λοιπόν τη Java ή τη C# να εξαφανίζονται σύντομα. Αλλά για παράδειγμα, η C ή η C++ ήταν πάντα τεράστιες γλώσσες. Αλλά τώρα βλέπουμε τη Rust, που είναι σαν μια νέα προσέγγιση για να αντιμετωπίσεις τα ίδια ζητήματα, αλλά με μεγαλύτερη ασφάλεια. Δηλαδή ενσωματωμένη ασφάλεια. Και είναι μια φανταστική γλώσσα που στην πραγματικότητα θα έπρεπε να μάθω καλύτερα. Αλλά είναι ενδιαφέρον να βλέπεις ότι η Rust μπαίνει τώρα σιγά σιγά στον ίδιο χώρο, ότι οι άνθρωποι αρχίζουν να τη χρησιμοποιούν αντί για C ή C++, που είναι πολύ καλό πράγμα, κατά τη γνώμη μου. Αλλά για παράδειγμα, στο Linux, μπορείς τώρα να γράψεις τους drivers σου σε Rust. Οπότε βλέπεις... πάντα θα είναι C++. Αλλά τώρα υποστηρίζουν το να κάνεις drivers σε Rust. Οπότε αυτό ήταν ένα αρκετά μεγάλο βήμα. Νομίζω λοιπόν ότι θα υπάρχουν ακόμα γλώσσες, γιατί δεν μπορείς να φτιάξεις μια γλώσσα που να ταιριάζει σε κάθε πιθανό σκοπό. Γι' αυτό επίσης νομίζω ότι θα έπρεπε να μαθαίνεις πολλές γλώσσες, γιατί διαφορετικές καταστάσεις ζητούν διαφορετικές γλώσσες. Μπορείς να δοκιμάσεις... και είναι σαν να μεταχειρίζεσαι το... τι είναι; Το σφυρί σαν πριόνι. Δεν ξέρω ποια είναι η έκφραση.
Jonathan: Την έκφραση; Είναι σαν, εντάξει, χρειάζεσαι ένα πριόνι, αλλά έχεις μόνο ένα σφυρί. Τι θα κάνεις; Εντάξει.
Erik: Ναι, ναι, κάτι τέτοιο. Είναι ένα νέο... νομίζω είναι με ένα καρφί και ένα σφυρί, κάτι τέτοιο, αλλά δεν είμαι καλός στις παροιμίες στα αγγλικά, αλλά δεν θα σε ζαλίσω με την ολλανδική εκδοχή. Αλλά βασικά, αν ξέρεις μόνο C# και υπάρχει ίσως ο πειρασμός να χρησιμοποιήσεις τη C# για τα πάντα, αλλά μπορεί να υπάρχουν καλύτερες γλώσσες για προγραμματισμό συστημάτων ή, δεν ξέρω, τεχνητή νοημοσύνη, από τη C#. Ακόμα κι αν μπορείς να το κάνεις σε C#, δεν σημαίνει ότι θα έπρεπε. Οπότε αν ξέρεις περισσότερες γλώσσες, μάλλον θα είσαι καλύτερα προετοιμασμένος να κάνεις μια καλή επιλογή, που ταιριάζει περισσότερο στον τομέα στον οποίο δουλεύεις.
Jonathan: Εντάξει, οπότε έχει πλάκα και είναι όμορφο. Όσον αφορά την κοινότητα του Exercism, τι σύσταση θα έδινες στην κοινότητα του Exercism αυτή την εβδομάδα, που θα πρότεινες έντονα να δοκιμάσουν; Και μπορεί να είναι από οτιδήποτε, ξέρεις, πήγαινε μια βόλτα. Δοκίμασε να σταθείς στα χέρια. Δεν ξέρω. Μπορείς και μπορείς να έχεις περισσότερες από μία αν θέλεις, μπορείς... Ξέρω ήδη τι θα πω, οπότε μπορείς να έχεις τρεις συστάσεις.
Erik: Έχει πλάκα και είναι χρήσιμο. Ξέρω ήδη τι θα πω. Εντάξει. Εντάξει, αυτό που μου έρχεται στο μυαλό είναι να τσεκάρεις την καρτέλα Dig Deeper που έχουμε τώρα. Ξεκινήσαμε λοιπόν να προσθέτουμε το νέο χαρακτηριστικό Dig Deeper, όπου μπορείς, μόλις λύσεις μια άσκηση ή τουλάχιστον μόλις δουλέψεις πάνω της, να δεις προσεγγίσεις, που είναι οι διαφορετικοί τρόποι με τους οποίους μπορεί να λυθεί μια άσκηση. Και αυτός είναι βασικά ο τρόπος με τον οποίο μάθαιναν όλοι στο Exercism V1, μαζί με τα πρόσθετα σχόλια, κοιτάζοντας τον κώδικα άλλων ανθρώπων και βλέποντας πώς το έλυσαν. Έτσι έμαθα πολλή Haskell, εκτός από τα σχόλιά μου... Απλώς έβλεπα, ω, μπορείς να το κάνεις έτσι. Και μετά το δοκίμαζες ο ίδιος και έλεγες, ε, ω, αυτό είναι πραγματικά κομψό και μπορώ να κάνω περισσότερα πράγματα με αυτό, και μετά το εφάρμοζες σε άλλες ασκήσεις. Το να μπορείς λοιπόν να βρίσκεις αυτούς τους διαφορετικούς τρόπους να κάνεις πράγματα, αυτό παραπέμπει σχεδόν στην τέχνη του προγραμματισμού, στον τρόπο που μπορείς να λύσεις πράγματα με διαφορετικούς τρόπους. Υπάρχουν λοιπόν αυτές οι διαφορετικές προσεγγίσεις. Έχω γράψει άρθρα και προσεγγίσεις για την αντιστροφή μιας συμβολοσειράς. Αυτή είναι μία από τις βασικές ερωτήσεις συνέντευξης που σου κάνουν στις συνεντεύξεις πληροφορικής. Πώς αντιστρέφεις μια συμβολοσειρά; Στη C# υπάρχουν μερικοί διαφορετικοί ιδιωματικοί τρόποι, αλλά είναι διαφορετικοί και έχουν διαφορετικά χαρακτηριστικά απόδοσης, και ένας από αυτούς είναι πραγματικά προσανατολισμένος στην απόδοση, αλλά είναι λιγότερο ευανάγνωστος. Μου αρέσει λοιπόν που στον ιστότοπο, αφού το λύσεις με έναν συγκεκριμένο τρόπο, μπορείς να πεις, ε, υπάρχουν κι άλλοι τρόποι. Και αυτά είναι τα πλεονεκτήματα του να το κάνεις έτσι. Και αυτά είναι τα ανταλλάγματα. Και δεν είναι μόνο ότι μπορείς να δεις τη διαφορετική προσέγγιση, αλλά προσπαθούμε επίσης να γράψουμε ένα εισαγωγικό κείμενο όπου σε βοηθάμε να επιλέξεις ανάμεσά τους. Πάντα υπάρχουν ανταλλάγματα στην πληροφορική. Δεν υπάρχει ποτέ, σχεδόν ποτέ, μια λύση που είναι απλώς η καλύτερη. Οπότε μπορείς πάντα να γράψεις τα πράγματα με διαφορετικό τρόπο. Η πιο ευανάγνωστη λύση λοιπόν δεν είναι πάντα η πιο αποδοτική. Το να σε βοηθάμε να κάνεις τα ανταλλάγματα, να κατανοείς τα ανταλλάγματα και να επιλέγεις ανάμεσα σε διαφορετικές προσεγγίσεις, είναι επίσης κάτι που προσπαθούμε να κάνουμε με την καρτέλα Dig Deeper. Και τα γράφω στον ελεύθερό μου χρόνο τώρα. Διασκεδάζω τόσο πολύ γράφοντας αυτές τις πληροφορίες και μοιράζοντάς τες με άλλους. Θα ενθάρρυνα λοιπόν πραγματικά τους ανθρώπους να δοκιμάσουν είτε να τα γράφουν είτε απλώς να διαβάζουν προσεγγίσεις. Ξέρω ότι δεν έχουν όλες οι ασκήσεις, μόλις ξεκινήσαμε αυτό το χαρακτηριστικό πριν από μία εβδομάδα. Οπότε θα είναι αρκετά περιορισμένο σε μερικές ασκήσεις C#, αλλά θα το επεκτείνουμε πολύ. Και δεχόμαστε pull requests από την κοινότητα για τέτοια πράγματα. Και θα σε βοηθήσω ευχαρίστως να γράψεις... και να το περάσεις, και μπορείς να μοιραστείς τη γνώση σου για τη γλώσσα σου. Νομίζω λοιπόν ότι αυτό είναι ένα πράγμα που αρέσει πάντα στους ανθρώπους. Αν τους αρέσει μια γλώσσα, θα ήθελαν να αρέσει και σε άλλους. Οι προσεγγίσεις είναι λοιπόν ένας πολύ ωραίος τρόπος να δείξεις τι μπορεί να κάνει η γλώσσα σου. Πήγαινε να το δεις. Ναι.
Jonathan: Πήγαινε να το δεις. Έχεις άλλες για αυτή την εβδομάδα;
Erik: Εμ, λοιπόν, με τον κίνδυνο να ακουστώ σαν ένας πολύ Exercism-κεντρικός άνθρωπος, μου αρέσει πολύ το φόρουμ του Exercism. Ένα πράγμα λοιπόν που έχω ανακαλύψει στην καριέρα μου είναι ότι είναι πραγματικά δύσκολο να βρεις μια τεχνολογική κοινότητα ανθρώπων που να είναι σχεδόν ένας ασφαλής χώρος όπου μπορείς να συζητάς πράγματα χωρίς να προσπαθείς να κάνεις άλλους να νιώθουν είτε ηλίθιοι είτε να καταλήγεις σε καβγάδες ή να γίνεσαι επιθετικός. Μου αρέσει λοιπόν πολύ το πώς προσπαθούμε με το φόρουμ να το κάνουμε έναν πολύ ασφαλή και χαρούμενο χώρο για τους ανθρώπους, αλλά και έναν χώρο όπου μπορείς να συναντήσεις πολύ καλούς προγραμματιστές. Ανθρώπους που είναι πολύ ικανοί και έχουν εξαιρετικές γνώσεις για τις γλώσσες τους ή για τον χώρο του προγραμματισμού. Και πραγματικά απολαμβάνω να διαβάζω απλώς τι έχουν γράψει άλλοι. Υπάρχει ένα νήμα για τα αγαπημένα σου βιβλία προγραμματισμού. Και έχω ήδη βάλει μερικά βιβλία στη λίστα μου με τα βιβλία προς ανάγνωση, γιατί απλώς... Ναι, δεν συναντάς κάθε βιβλίο. Αλλά άλλοι τα έχουν διαβάσει. Μπορείς να χρησιμοποιήσεις τη σοφία του πλήθους, βασικά.
Jonathan: άλλων ανθρώπων... και μετά μπορούμε να χρησιμοποιήσουμε τη σοφία του πλήθους, βασικά, αυτό το νήμα, και είμαι σίγουρος ότι θα υπάρχει κάτι πραγματικά πολύτιμο που μπορούμε να εξαγάγουμε από εκεί. Αλλά θέλω να πω, ξέρεις, αυτό είναι πραγματικά ωραίο, Eric. Νομίζω ότι αν θέλεις να έχεις μια ακόμα σύσταση, είσαι ευπρόσδεκτος, αλλιώς θα αρχίσουμε να μαζεύουμε τα πράγματα λίγο. Αλλά οποιεσδήποτε περαιτέρω σκέψεις ή σχόλια; Ναι, ας συνεχίσουμε να μοιραζόμαστε.
Erik: Μμ, ναι, αυτό θα μπει στο βίντεο. Όχι, όχι πραγματικά. Προσπαθούσα να βρω ένα τρίτο.
Jonathan: Και εγώ πραγματικά, πάντα προσπαθώ να βρω ένα τρίτο. Σε αυτή την περίπτωση... πολύ. Αλλά Eric, ευχαριστώ πολύ για αυτόν τον χρόνο. Ήταν πραγματικά ωραίο να ακούσω την ιστορία σου, να ακούσω πώς πέρασε στον χώρο της τεχνολογίας. Ιδιαίτερα απόλαυσα να ακούω λίγα πράγματα για την ιστορία, και ίσως αυτό είναι κάτι που θα ήθελες να σκεφτείς και να μοιραστείς λίγο περισσότερο, για το πώς η ιστορία και ο προγραμματισμός και όλα αυτά επικαλύπτονται κάποια στιγμή. Αλλά ευχαριστώ πολύ. Είναι υπέροχο που σε έχουμε στην ομάδα και έχω σίγουρα μάθει και θα συνεχίσω να μαθαίνω τεράστιο ποσό από σένα. Μεγάλο respect για σένα, γιατί ξεπέρασες τους 100.000 πόντους φήμης στον ιστότοπο του Exercism. Ξέρω ότι θα πεις ότι ο λόγος που το έκανες είναι ότι «κλέβεις», αλλά και πάλι, θα το πάρουμε ως αξιόλογο επίτευγμα. Οπότε ευχαριστώ πολύ. Και ναι, αν ακούς αυτό και δεν έχεις συναντήσει το Exercism, πήγαινε να τσεκάρεις το Exercism και είμαι σίγουρος ότι θα βρεις τον Eric κάπου στην πορεία σε αυτόν τον χώρο. Αλλά Eric, ευχαριστώ. Το εκτιμώ πραγματικά. Και θα παγώσω αυτή την ηχογράφηση και μπορούμε να τα πούμε μετά από αυτό, αλλά ευχαριστώ για τον χρόνο σου. Και ελπίζω να το απόλαυσες όσο κι εγώ. Ήταν υπέροχο.
Erik: Δεν έχω αντίρρηση. Υπέροχα. Το απόλαυσα. Το απόλαυσα. Ευχαριστώ πολύ.
Άκουσε, μάθε και εμπνεύσου από τα μέλη της κοινότητάς μας.