Μια συνέντευξη με τον Ryan Potts στην οποία συζητά με τον Jeremy Walker για τη Delphi, όσα έμαθε ως συνεισφέρων στο Exercism και τις εμπειρίες του από τον προγραμματισμό σε κλάδους που είναι ακόμη "εκτός σύνδεσης".
Γεια σου Ryan. Ευχαριστώ που πήρες τον χρόνο να μιλήσεις μαζί μου. Είσαι ο συντηρητής της διαδρομής Delphi στο Exercism. Πώς ασχολήθηκες με τη Delphi;
Δουλεύω σε μια εταιρεία που ίδρυσε ο πατέρας μου, η οποία αναπτύσσει λογισμικό από τη δεκαετία του '80, ξεκινώντας με τη Microsoft Pascal και αργότερα χρησιμοποιώντας τη Turbo Pascal της Borland. Ήρθα να δουλέψω στην εταιρεία το '96, περίπου την εποχή που άρχισε να δέχεται αιτήματα για λογισμικό που θα έτρεχε σε Windows αντί για DOS. Βολικά, η Borland είχε μόλις κυκλοφορήσει τη Delphi 1. Αυτό μας ταίριαζε απόλυτα, καθώς οι περισσότερες από τις μονάδες που είχαν αναπτυχθεί με τα χρόνια μπορούσαν ακόμη να χρησιμοποιηθούν. Δε βρισκόμασταν πια αντιμέτωποι με την ανάγκη να ξεκινήσουμε από την αρχή σε VB ή VC για να υποστηρίξουμε τα Windows.
Και χρησιμοποιείς ακόμη τη Delphi στην καθημερινή σου δουλειά;
Ναι, εκεί που δουλεύω κατασκευάζουμε μηχανήματα για δοκιμές Έρευνας και Ανάπτυξης (R&D) και δοκιμές μικρών παρτίδων στην αυτοκινητοβιομηχανία: δοκιμές ελαστικών, καθισμάτων αυτοκινήτων, μηχανισμών φουσκώματος αερόσακων, καθώς και δοκιμές πρόσκρουσης. Όλα τα συστήματα που παράγονται χρησιμοποιούνται από αρκετούς κατασκευαστές αυτοκινήτων σε όλο τον κόσμο, καθώς και από τους προμηθευτές τους.
Το λογισμικό με το οποίο ασχολούμαι χρησιμοποιείται για τον έλεγχο αυτών των διαφόρων τύπων μηχανημάτων. Αναπτύσσω το UI, καθορίζω τις ακολουθίες δοκιμών για τα αυτοματοποιημένα τμήματα των δοκιμών και ενσωματώνω τα διάφορα σημεία εισόδου και εξόδου, αναλογικά και ψηφιακά. Πρέπει να είναι όσο το δυνατόν πιο φιλικό προς τον χρήστη, ώστε ένας άνθρωπος με ελάχιστη εκπαίδευση να νιώθει αρκετά άνετα χρησιμοποιώντας το.
Η δουλειά που κάνω δεν απαιτεί καθόλου προγραμματισμό για το web. Τα πάντα γίνονται σε Delphi, σε Windows. Περιστασιακά πρέπει να φτιάξω στα γρήγορα μια μικρή "προσαρμοσμένη εντολή" σε C++, την οποία μετά ανεβάζω στην κάρτα επεξεργαστή συλλογής δεδομένων, που είναι ένας παράλληλος υπολογιστής και βρίσκεται σε μια υποδοχή PCI του υπολογιστή. Έχει τη δική του CPU, μνήμη και λειτουργικό σύστημα.
Είναι συναρπαστικό να μιλάς με κάποιον που δεν κάνει καθόλου προγραμματισμό για το web. Αυτό μοιάζει αρκετά ασυνήθιστο σήμερα, αλλά αναρωτιέμαι μήπως είναι απλώς ο λόγος σήματος/θορύβου που ακούω καθημερινά και όχι αντανάκλαση της ίδιας της βιομηχανίας.
Ναι, η ενασχόλησή μου με το Exercism μου επέτρεψε να δω λίγο πώς ζει το "άλλο μισό" στη βιομηχανία των υπολογιστών. Έμαθα πολλά για την Ανάπτυξη Καθοδηγούμενη από Τεστ (TDD), για το πώς να κινούμαι στο GitHub και για τη δουλειά σε ένα έργο ανοιχτού κώδικα. Πολλά από όσα έμαθα έχουν βελτιώσει την ποιότητα της εργασίας μου.
Χαίρομαι πολύ που το ακούω. Ένα από τα πράγματα που μου αρέσουν περισσότερο στο Exercism είναι αυτή η αίσθηση του "πώς ζει το άλλο μισό": το να συνειδητοποιείς όλα σου τα τυφλά σημεία και να μαθαίνεις για πράγματα που δεν είχες ιδέα ότι υπάρχουν. Φαντάζομαι ότι το να είσαι συντηρητής διαδρομής έχει ενισχύσει ακόμη περισσότερο αυτή τη μάθηση;
Έτσι είναι. Γράφω περισσότερα τεστ από ό,τι συνήθιζα. Δεν είναι πάντα TDD αυτό καθαυτό· μερικές φορές τα τεστ έρχονται δεύτερα αντί για πρώτα. Ωστόσο, έχει επηρεάσει τον τρόπο που δομώ τον κώδικα, αφαιρώντας περιττές εξαρτήσεις για να κάνω τα τεστ ευκολότερα.
Περνώ πολύ χρόνο εξετάζοντας issues και PRs στο αποθετήριο problem-specifications, όπου ορίζουμε τις ασκήσεις του Exercism με τρόπο ανεξάρτητο από τη γλώσσα. Έχω μάθει πολλά από τις συζητήσεις. Μερικές φορές μια προτεινόμενη αλλαγή φαίνεται απλή εκ πρώτης όψεως, αλλά η συζήτηση που ακολουθεί αποκαλύπτει προβλήματα. Έχω αποκτήσει περισσότερη υπομονή. Με έμαθε να αναζητώ άλλες πιθανές οπτικές σε τεχνικά προβλήματα στη δουλειά.
Έχω μάθει επίσης περισσότερα για την καθοδήγηση, και ειδικότερα τη σημασία του να γνωρίζεις το βαθύτερο "γιατί" και όχι μόνο το "πώς". Δουλεύω με μια χούφτα άλλους προγραμματιστές. Αν και είμαι νεότερος από τους περισσότερους, βρίσκομαι στην εταιρεία περισσότερο καιρό από εκείνους, και συχνά μπορώ να υποδείξω έναν πιο αποδοτικό τρόπο για να σειριοποιήσω τη λειτουργία ενός μηχανήματος ή να εξηγήσω γιατί κάτι πρέπει να γίνει με συγκεκριμένο τρόπο.
Πέρα από το Exercism, είσαι και Delphi MVP, που είναι καταπληκτικό! Πώς προέκυψε αυτό; Υπάρχει μια ισχυρή κοινότητα της Delphi στην οποία συμμετέχεις;
Στα αρχικά στάδια της δημιουργίας της διαδρομής Delphi, επικοινώνησα με τον κύριο Jim McKeeth στην Embarcadero για να δω αν μπορούσαμε να πάρουμε άδεια ανοιχτού κώδικα για τη Delphi. Αυτό θα μας επέτρεπε να χρησιμοποιούμε τη Delphi για να αναπτύσσουμε νέες ασκήσεις και θα επέτρεπε σε άλλους να συνεισφέρουν μέσω pull requests. Ο Jim με κάλεσε να συμμετάσχω στο Πρόγραμμα MVP της Embarcadero κατά τη διάρκεια της αλληλογραφίας μας.
Το Delphi Praxis είναι μια διαδικτυακή κοινότητα που γνωρίζω. Υπάρχει πολλή κίνηση στο Google+, αλλά δύει, οπότε πρέπει να πάμε αλλού.
Έχεις φτιάξει κάποιες εφαρμογές ανοιχτού κώδικα σε Delphi που θα μπορούσαν να δουν και άλλοι;
Ναι! Ο εγκαταστάτης Windows CLI του Exercism είναι ανοιχτού κώδικα και γραμμένος εξ ολοκλήρου σε Delphi. Καθορίζει αυτόματα τη σωστή έκδοση (32/64 bit) του Exercism CLI που χρειάζεται ο μαθητής, έπειτα κατεβάζει το CLI, το εξάγει και το τοποθετεί στο σωστό σημείο. Ο εγκαταστάτης έχει κατέβει 15.000 φορές, κάτι για το οποίο είμαι αρκετά περήφανος!
Αυτό είναι ένα φανταστικό επίτευγμα! Ως κάποιος που δεν κάνει πολύ (αν κάνει καθόλου) προγραμματισμό για το internet, ποιες προκλήσεις αντιμετώπισες όταν έφτιαχνες τον εγκαταστάτη σε Delphi;
Ο εγκαταστάτης ήταν αρχικά γραμμένος σε C#. Ήταν ξεπερασμένος, και αποφάσισα να δω αν μπορούσα να τον βελτιώσω. Δεν είχα επιχειρήσει ποτέ κάτι τέτοιο, αλλά ήξερα ότι η Delphi είχε τα εργαλεία για να γίνει η δουλειά. Ξεκίνησα μελετώντας τον αρχικό κώδικα σε C# για να καταλάβω ποια σειρά γεγονότων συνέβαινε στο παρασκήνιο και μετά να προσπαθήσω να πετύχω τα ίδια πράγματα σε Delphi. Βρήκα δείγματα κώδικα στον ιστότοπο τεκμηρίωσης της Embarcadero που βοήθησαν να εξηγηθεί πώς να συνδέσω σωστά τα διαθέσιμα components για τη δημιουργία ενός REST client. Ανακάλυψα επίσης ένα βολικό εργαλείο που παρέχεται μαζί με τη Delphi, το REST Debugger. Μου επέτρεπε να εισάγω και έτσι να δοκιμάζω τις διάφορες κλήσεις HTTP που χρειάζονται για να πετύχει ο εγκαταστάτης. Μόλις λειτουργήσουν, ο debugger δημιουργεί αντίγραφα των απαιτούμενων components, ώστε να μπορώ να τα επικολλήσω στον κώδικα.
Για κάποιον που θέλει να εμβαθύνει στο Exercism, ίσως κάποιον που ελπίζει να γίνει συντηρητής, μπορείς να μας πεις ποια ήταν η πορεία σου;
Είμαι μέλος μιας τοπικής ομάδας MeetUp που λέγεται Akron Code Club. Περίπου μία φορά τον μήνα συναντιόμαστε και συνήθως σχηματίζουμε ζευγάρια και δουλεύουμε ένα code kata που έχει προταθεί στην ομάδα. Στη συνάντηση του Αυγούστου 2016, αρχίσαμε να δουλεύουμε ασκήσεις που παρέχει το Exercism. Καθώς χρησιμοποιούσα το Exercism και μερικούς από τους άλλους ιστότοπους εκμάθησης, σκέφτηκα ότι θα ήταν ωραίο αν περισσότεροι από αυτούς τους διαδικτυακούς ιστότοπους προγραμματισμού προσέφεραν τη Delphi ή τη Pascal ως επιλογή. Αφού έψαξα λίγο στον ιστότοπο του Exercism και στα αποθετήρια GitHub του Exercism, ανακάλυψα ότι το Exercism ενδιαφέρεται πάντα να προσθέτει νέες διαδρομές γλωσσών. Δεν ήμουν απόλυτα σίγουρος ποιος ήταν ο καλύτερος τρόπος να επικοινωνήσω με την Katrina. Νομίζω ότι χρησιμοποίησα το Gitter για να επικοινωνήσω μαζί της τον Αύγουστο του '16) προτείνοντας την προσθήκη της Delphi. Έλαβα μια απολογητική απάντηση περίπου δύο μήνες αργότερα, και τότε συνειδητοποίησα ότι εκείνη δε χρησιμοποιεί το Gitter. Τέλος πάντων, αναρωτιόταν αν ενδιαφερόμουν ακόμη να δουλέψω για να προστεθεί μια διαδρομή Delphi Pascal και, αν ναι, θα ξεκινούσε τη διαδικασία.
Τώρα υπάρχει ένα αποθετήριο που μπορείς να χρησιμοποιήσεις για να ζητήσεις μια νέα διαδρομή γλώσσας, και μπορείς πάντα να ανοίξεις issues στο αποθετήριο exercism/exercism για να έρθεις σε επαφή με τους συντηρητές του έργου.
Τέλεια. Ευχαριστώ που μίλησες μαζί μου και για όλη τη δουλειά σου στο Exercism!
Με μεγάλη μου χαρά! Ήταν διασκεδαστικό. Απολαμβάνω να συμμετέχω και να κάνω ό,τι μπορώ για το Exercism. Μαθαίνω κάνοντας!