Between the Wires: Μια συνέντευξη με τον προγραμματιστή ανοιχτού κώδικα Sindre Sorhus

Εδώ είναι η συνέντευξή μου Sindre Sorhus, ένας παραγωγικός προγραμματιστής ανοιχτού κώδικα που ζει στην Ταϊλάνδη.

Πείτε μας λίγα λόγια για την παιδική σας ηλικία και πού μεγαλώσατε.

Μεγάλωσα σε μια προαστιακή περιοχή έξω από το Όσλο της Νορβηγίας. Όταν ήμουν μικρός, με ενδιέφερε πραγματικά ο Legos. Κάθε χρόνο θα έπαιρνα Legos για γενέθλια και Χριστούγεννα. Ο Legos προκάλεσε πραγματικά τα ενδιαφέροντά μου για την κατασκευή πραγμάτων από νωρίς. Σε ένα σημείο, είχα μια τεράστια πόλη Lego χτισμένη στο δωμάτιό μου και σχεδόν καταλάμβανε ολόκληρο το δωμάτιο.

Πώς μπήκατε στον προγραμματισμό;

Όταν ήμουν επτά, η οικογένειά μου πήρε τον πρώτο μας υπολογιστή Windows 95. Συνήθιζα να παίζω ένα παιχνίδι που ονομάζεται Map Blaster όπου ο χαρακτήρας πήδηξε για να λύσει μαθηματικά προβλήματα. Λίγα χρόνια αργότερα αποκτήσαμε πρόσβαση στο Διαδίκτυο και άλλαξε τα πάντα για μένα. Πέρασα πολύ χρόνο γράφοντας σε βιβλία επισκεπτών σε ιστοσελίδες άλλων ανθρώπων και συγκεντρώνοντας gif. Μια μέρα, αναρωτήθηκα για το πώς λειτούργησε ο ιστότοπος και ανακάλυψα το κουμπί «πηγή προβολής» στο πρόγραμμα περιήγησης.

Αυτή ήταν μια ανακάλυψη που έπληξε το μυαλό μου. Θα μπορούσα απλώς να κάνω δεξί κλικ, να δω την πηγή και μετά να μπορούσα να δω πώς όλα έγιναν. Δεν κατάλαβα πολλά στην αρχή, αλλά καθώς κοίταξα το ίδιο πράγμα ξανά και ξανά άρχισα να καταλαβαίνω πώς λειτούργησε. Έτσι ξεκίνησα το ταξίδι προγραμματισμού μου.

Έφτιαξα τον πρώτο μου ιστότοπο όταν ήμουν δέκα ετών. Αφού κοίταξε την πηγή για μερικά χρόνια. Είχε όλα τα είδη χρωμάτων, ένα φόντο με αστέρι, κινούμενο με μουσική υπόκρουση πολυμέσων - ήταν μια από αυτές τις πινελιές που όλοι είχαν στους ιστότοπούς τους τότε Χρησιμοποίησα το Microsoft FrontPage.

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

Αργότερα κατά τη διάρκεια της σχολικής μου χρονιάς, μπήκα σε παιχνίδια Flash και θα παρακολουθούσαμε πολλές ταινίες Flash κατά τη διάρκεια των σχολικών διακοπών. Ήμουν περίεργος πώς φτιάχτηκαν, αλλά δεν υπήρξε ποτέ κανένα κουμπί προέλευσης. Αποκάλυψα λοιπόν τα αρχεία swiff, αυτό ήταν εύκολο γιατί δεν ήταν ασαφή. Αυτό, πάλι, μου έδωσε την ευκαιρία να μάθω από τη δουλειά άλλων ανθρώπων. Άρχισα να τροποποιώ τα παιχνίδια άλλων ανθρώπων και να επαναδιατυπώσω όλους τους χαρακτήρες, έκανα νέους εχθρούς, πρόσθεσα υψηλές βαθμολογίες. Ήταν μια περήφανη στιγμή που συνειδητοποίησα ότι άλλοι μπορούσαν να παίξουν ένα παιχνίδι που είχα κολλήσει μαζί.

Πέρασα πέντε χρόνια στο στρατό ως προγραμματιστής και φωτογράφος. Πώς ήταν η ανάπτυξη του διαδικτύου εκείνη την εποχή;

Μετά την αποφοίτησή μου από το γυμνάσιο, στρατολογήθηκα απευθείας στο στρατό της Νορβηγίας. Μπήκα στη μονάδα μέσων όπου περνούσα τον περισσότερο χρόνο μου στο γραφείο δουλεύοντας στο intranet. Δεν υπήρχαν πολλά να κάνουμε τα βράδια γιατί ζούσαμε στους στρατώνες, γι 'αυτό αποφάσισα να φτιάξω πράγματα. Αλλά το μεγαλύτερο μέρος της εμπειρίας μου ήταν η αντιγραφή και επικόλληση PHP και JavaScript άλλων ανθρώπων και δεν κατάλαβα πώς λειτουργούσαν. Μια μέρα, σκόνταψα τον Python και τον Django, είχε υπέροχη τεκμηρίωση και σεμινάρια που δεν είχε ποτέ η PHP. Διάβασα μαθήματα κάθε μέρα και άρχισα να δημιουργώ πράγματα στη δουλειά.

Έτσι ξεκίνησε η πραγματική μου κωδικοποίηση. Μετά τη συνδρομή, σχεδίασα να πάω ταξίδια πριν από το κολέγιο. Αλλά πήρα μια προσφορά εργασίας από μια μονάδα στο στρατό που ονομάζεται Cyber ​​Defense Unit. Ήταν ενδιαφέρουσα, οπότε πήρα την προσφορά και κατέληξα να περάσω 5 χρόνια εκεί.

Πώς συμμετείχατε με τους TodoMVC και Yeoman;

Άρχισα να χρησιμοποιώ το GitHub γύρω στο 2011 αλλά κυρίως ως καταναλωτής. Θα γύριζα, κοιτάζω διαφορετικά repos και θα τα πρωταγωνίστηκα γιατί φαινόταν διασκεδαστικό. Διορθώθηκα κάποια τυπογραφικά λάθη σε αρχεία README.md, αλλά αυτό ήταν.

Μια μέρα βρήκα το TodoMVC που σας βοηθά να επιλέξετε ένα πλαίσιο JavaScript. Ήταν μια πραγματικά φοβερή ιδέα, αν και στο παρελθόν χρειαζόμαστε πολύ πιο προηγμένες εφαρμογές για να λύσουμε πραγματικά τα προβλήματα των δοκιμών απόδοσης και των δυνατοτήτων του πλαισίου. Το πρώτο πράγμα που θυμήθηκα για το TodoMVC ήταν ότι είχε ένα ωραίο λογότυπο. Φαίνεται πολύ επιφανειακό, αλλά αυτό με έκανε να ξεκινήσω.

Μου άρεσε πολύ το λογότυπο που αποφάσισα να κοιτάξω λίγο περισσότερο. Παρατήρησα ότι δεν είχαν πραγματικά μια εφαρμογή jQuery, γι 'αυτό αποφάσισα να δημιουργήσω μία. Υπέβαλα ένα αίτημα έλξης το σαββατοκύριακο και έλαβα μια απάντηση από τον Addy Osmani, ο οποίος είναι ο συντηρητής του έργου. Συγχώνευσε το PR μου γρήγορα, που ήταν μια πολύ ωραία εμπειρία για έναν αρχάριο σαν κι εμένα. Ένιωσα καλά που η εφαρμογή μου συμπεριλήφθηκε πλέον σε αυτό το πραγματικά δημοφιλές έργο. Το έκανα για μερικές εβδομάδες, και ο Addy με πρόσθεσε στο έργο που ήταν πολύ ωραίο.

Αυτό με έκανε πραγματικά να ενδιαφέρομαι για τον ανοιχτό κώδικα. Πριν από αυτό, ήμουν απλώς ένας παθητικός καταναλωτής, αλλά με το TodoMVC έχω μια γεύση να διατηρώ ένα μεγάλο έργο που ήταν πολύ δουλειά. Αλλά έμαθα πολλά από αυτήν την εμπειρία.

Λίγους μήνες αργότερα, η Addy πήγε στη Google. Το πρώτο του έργο στο Google ήταν ο Yeoman, ένα εργαλείο σκαλωσιάς για σύγχρονες εφαρμογές ιστού. Επειδή συνεργαστήκαμε τόσο καλά στο TodoMVC, οπότε αποφάσισε να με προσκαλέσει ως εξωτερικό συνεργάτη.

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

Το ιστορικό επαναλαμβάνεται επίσης εάν κοιτάξετε στο Δημιουργία εφαρμογής ή στο Webpack. Κάποιος αρχίζει να κατασκευάζει αυτό το προϊόν που υποτίθεται ότι θα λύσει ένα πρόβλημα, αλλά επειδή ο καθένας έχει διαφορετικές ανάγκες, προκύπτουν προβλήματα. Όταν συνειδητοποιήσετε ότι αυτό το εργαλείο δεν μπορεί να καλύψει τα πάντα, προσθέτετε τη διαμόρφωση. Το κλειδί είναι να έχουμε μια ισορροπημένη προσέγγιση. Πρέπει να πεις «Όχι» και πρέπει να ξέρεις πότε να πεις «όχι». Μπορεί να απογοητεύσετε ορισμένους χρήστες επειδή έχουν ασαφείς περιπτώσεις χρήσης. Αυτό είναι το δύσκολο κομμάτι της δημιουργίας εργαλείων και είναι ακόμη πιο δύσκολο σε έργα ανοιχτού κώδικα, επειδή υπάρχει τόσο μεγάλη ανατροφοδότηση.

Γιατί είστε παθιασμένοι με το ανοιχτό λογισμικό;

Λατρεύω τον ανοιχτό κώδικα και νομίζω ότι επιστρέφει στο κουμπί "Προβολή πηγής" στο πρόγραμμα περιήγησης. Κατά τη γνώμη μου, ο ανοιχτός κώδικας είναι ο πιο αποτελεσματικός τρόπος δημιουργίας λογισμικού, διότι μας δίνει τη δυνατότητα να χτίζουμε το ένα πάνω στο άλλο. Όλοι επωφελούνται εάν κάποιο άτομο λύσει ένα δύσκολο πρόβλημα. Ο ανοιχτός κώδικας με επιτρέπει να συνεργάζομαι με απίστευτα άτομα από όλο τον κόσμο που δεν θα μπορούσα ποτέ να συνεργαστώ διαφορετικά. Αρχίζουμε να δουλεύουμε σε ό, τι μας ενδιαφέρει και να επικεντρωνόμαστε σε αυτό που χρειάζεται η κοινότητα αντί να επικεντρώνουμε στη δημιουργία εσόδων.

Ο Paul Irish έχει ένα υπέροχο βίντεο στο YouTube με τίτλο "Δέκα πράγματα που έμαθα από το jQuery Source." Αυτό με έκανε να ενδιαφέρομαι να διαβάσω τον πηγαίο κώδικα jQuery. Ο Paul Irish είχε δίκιο, μαθαίνετε πολλά κάνοντας ό, τι θέλετε για να μάθετε πώς να το κάνετε.

Τι γίνεται με την αειφορία ανοιχτού κώδικα;

Αυτό είναι σίγουρα ένα σημείο σύγκρουσης που σκεφτόμουν πολύ πρόσφατα. Έχω κάνει ανοιχτό κώδικα πλήρους απασχόλησης για περίπου τρία χρόνια τώρα. Δεν κερδίζω χρήματα, αλλά θα ήταν ωραίο να το κάνω αυτό ως πλήρης απασχόληση. Το Vue.js από τον Evan You είναι ένα εξαιρετικό παράδειγμα για το πώς μπορεί να λειτουργήσει η αειφορία ανοιχτού κώδικα. Δημιούργησε ένα πλαίσιο που όλοι ήθελαν και έχει χρησιμοποιηθεί από αρκετές εταιρείες. Άλλες εταιρείες και ιδιώτες έχουν κίνητρα να επενδύσουν στο έργο του επειδή είναι χρήσιμο στην παραγωγή. Το κλειδί είναι να κάνετε το έργο σας αξιόπιστο. Προσωπικά δεν πιστεύω ότι οι συνεισφορές από άτομα είναι αρκετές για να υποστηρίξουν ένα έργο.

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

Αυτή τη στιγμή μένω στην Ταϊλάνδη και νομίζω ότι θα ήμουν εντάξει με λιγότερα από 1500 δολάρια.

Έχετε περισσότερα από 1000 πακέτα npm. Πώς μένετε τόσο παραγωγικοί;

Αυτή είναι μια λανθασμένη αντίληψη. Οι άνθρωποι βλέπουν τα πακέτα των 1000 και νομίζουν ότι είμαι εξαιρετικά παραγωγικός, αλλά αυτό που δεν συνειδητοποιούν είναι ότι τα περισσότερα από αυτά τα πακέτα είναι μικρά και αρθρωτά. Έχουν γίνει αρκετά όταν δημοσιεύονται. Μου αρέσει να συγκρίνω τον προγραμματισμό με το κτίριο με το Lego: Δημιουργώ πολλά τούβλα Lego τα οποία μπορούν να συναρμολογηθούν για την κατασκευή μεγαλύτερων κατασκευών. Τα χρησιμοποιώ με άλλα πακέτα πριν από τη δημοσίευση για να διασφαλίσω ότι θα λύσουν τα προβλήματά μου. Αυτός είναι και ο λόγος για τον οποίο οι χρήστες δεν θα υπέβαλαν πολλά αιτήματα λειτουργιών επειδή είναι τόσο μικρά. Εάν χρειάζονται κάτι περισσότερο, μπορούν απλά να δημιουργήσουν μια άλλη ενότητα. Το 90% του χρόνου μου ξοδεύεται στα 10 μεγαλύτερα έργα μου.

Ποια είναι μια συμβουλή που μπορείτε να δώσετε σε νέους συντελεστές OSS όταν αντιμετωπίζετε απαιτητικούς και τοξικούς ανθρώπους;

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

Η συμβουλή μου στους νέους προγραμματιστές είναι ότι δεν πρέπει να αφήσετε τους ξένους στο Διαδίκτυο να επηρεάσουν αρνητικά τη διάθεσή σας ή τη δική σας κίνηση. Δεν αξίζει τον κόπο. Εάν έχετε την επιλογή να απομακρυνθείτε, πάρτε το - χρησιμοποιήστε το κουμπί κατάργησης εγγραφής. Οι συντηρητές ανοιχτού κώδικα πρέπει να θυμούνται ότι οι χρήστες δεν πληρώνουν πελάτες. Τους παρέχουμε κάτι δωρεάν, στον ελεύθερο χρόνο μας.

Με τοξικά άτομα, πρέπει να είστε πάντα το μεγαλύτερο άτομο. Ακούγεται λάθος, αλλά αυτό που προσπαθώ να κάνω είναι να τους σκοτώσω με καλοσύνη. Κατά κάποιο τρόπο έχει λειτουργήσει για μένα για πολλά χρόνια. Για παράδειγμα, εάν κάποιος είναι ενοχλητικός, θα προσπαθήσω να είμαι τόσο ανοιχτός και ευγενικός για την κατάσταση. Φροντίζω να μην είμαι ποτέ σαρκαστικός ή να τους μιλάω. Τα troll τρέφονται με την ενόχληση και το λόγο σας, οπότε όταν δεν είναι εκεί, θα σας αφήσουν μόνοι.

Χρησιμοποιώ την επιλογή σίγασης οπουδήποτε παρέχεται, ειδικά στο Twitter. Είναι καλό να συνειδητοποιούμε ακριβώς όταν κάποιος συνορεύει με τοξικά, και είναι πολύ καλύτερο να κλείνεις απλώς αυτή τη φωνή και να εισάγεις αντί να προκαλείς περιττές συγκρούσεις.

Σχεδιάσατε μερικά λογότυπα για τις δικές σας ενότητες, είναι υπέροχα. Πώς μάθατε το σχεδιασμό;

Ξεκίνησα ακολουθώντας διαδικτυακά μαθήματα για να κάνω ωραία εφέ. Συνήθιζα να χρησιμοποιώ το Adobe Illustrator, αλλά τώρα χρησιμοποιώ το Sketch.

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

Επίσης ωφελεί τα έργα μου δημιουργώντας λογότυπα, γιατί δίνει στο έργο περισσότερο προσωπικότητα. Συνήθως, όταν εισάγετε ένα repo στο GitHub, λαμβάνετε τα ίδια πράγματα που βασίζονται σε κείμενο: μια κεφαλίδα, κάποια εισαγωγή και README.md. Είναι ωραίο να το καρυκεύσετε με μερικά γραφικά. Αποδεικνύεται ότι οι άνθρωποι είναι πιο πιθανό να χρησιμοποιήσουν το έργο εάν υπάρχει λογότυπο. Για παράδειγμα, ο Vadim Demedes, προγραμματιστής από την Ουκρανία, υπέβαλε αυτό το αίτημα έλξης αμέσως μετά την κυκλοφορία του AVA. Ο Vadim έγινε αργότερα μέλος της ομάδας AVA. Μου είπε ότι ενδιαφερόταν για το AVA λόγω του ωραίου λογότυπου.

Τι σας ώθησε να μετακομίσετε στην Ταϊλάνδη; Πείτε μας πώς μοιάζει μια τυπική μέρα για εσάς.

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

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

Έκανα σακίδιο πλάτης για μισό χρόνο στη Νοτιοανατολική Ασία και εκεί συνάντησα τη φίλη μου. Τελικά εγκαταστάθηκα στην Ταϊλάνδη επειδή ήταν το αγαπημένο μου. Λατρεύω τον πλούσιο πολιτισμό του, τους φιλικούς ντόπιους και το φαγητό. Ζω στην Ταϊλάνδη εδώ και δύο χρόνια.

Δουλεύω από τοπικά καφενεία τρεις μέρες την εβδομάδα γιατί είμαι πιο παραγωγικός όταν έχω ανθρώπους γύρω μου. Διαφορετικά, από εννέα έως έξι κάνω πολλή κωδικοποίηση και συντήρηση ανοιχτού κώδικα, μερικές φορές τα πλευρικά μου έργα. Τις περισσότερες ημέρες, λαμβάνω περισσότερα από 20 αιτήματα τραβήγματος και τόνους ζητημάτων για επίλυση. Το βράδυ, περνάω χρόνο με τη φίλη μου Im. και οι δύο λατρεύουμε το πικάντικο φαγητό του δρόμου στις νυχτερινές αγορές. Μερικές φορές καλεί κανείς και βρίσκομαι πίσω στον υπολογιστή αργά το βράδυ.

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

Τι σας παρακίνησε να ξεκινήσετε το έργο AVA;

Χρησιμοποιώ πολύ το Mocha επειδή έκανα πολλές ενότητες που έπρεπε να δοκιμαστούν. Δεν ήμουν πραγματικά ικανοποιημένος με το πώς λειτούργησε. Το Mocha εγχέει ορισμένα παγκόσμια αντικείμενα, αλλά δεν ορίζονται πουθενά. Επειδή το έκανα στο Node.js, είχα πολλά async APIs και δεν ήταν πολύ βολικό να κάνω με το Mocha.

Ήθελα κάτι απλούστερο και βελτιστοποιημένο για τη θήκη χρήσης μου. Έτσι, ένα σαββατοκύριακο, αποφάσισα να το δουλέψω και μέχρι το απόγευμα της Κυριακής δημοσίευσα 0,0,1 έκδοση για το AVA στις npm. Ακόμα κι αν το JavaScript είναι μονόστροφο, το IO στο Node.js μπορεί να συμβεί παράλληλα λόγω της ασύγχρονης φύσης του. Το AVA το εκμεταλλεύεται και εκτελεί τις δοκιμές σας ταυτόχρονα, κάτι που είναι ιδιαίτερα ευεργετικό για βαριές δοκιμές IO. Επιπλέον, τα δοκιμαστικά αρχεία εκτελούνται παράλληλα ως ξεχωριστές διαδικασίες, κάτι που επιτρέπει δυνητικά ακόμη καλύτερη απόδοση και ένα απομονωμένο περιβάλλον για κάθε δοκιμαστικό αρχείο.

Επειδή δεν είχα χρόνο να διορθώσω σφάλματα και ήθελα να το χρησιμοποιήσω μόνο στα δικά μου έργα, ήταν ιδιωτικό. Μετά από ενάμισι χρόνο, τελικά έφτιαξα ένα λογότυπο για το AVA, καθαρίζω το ρεπό, έγραψα πολλά έγγραφα. Στη συνέχεια, δημοσίευσα το έργο.

Οι περισσότεροι από τους χρήστες φαίνονται πολύ ευχαριστημένοι με το AVA, επειδή λαμβάνουμε θετικά tweets στο έργο όλη την ώρα. Τους αρέσει πολύ πόσο απλή είναι η σύνταξη και πόσο εύκολο είναι να ξεκινήσετε. Μόλις το έκανα για να ξύσω τη δική μου φαγούρα, αλλά αποδείχθηκε ότι άλλοι άνθρωποι είχαν το ίδιο πρόβλημα και άρεσαν τη λύση μου.

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

Γιατί αποφασίσατε να μπείτε στην ανάπτυξη του macOS;

Έκανα λίγο προγραμματισμό Objective-C αλλά δεν είχα μεγάλη εμπειρία. Τον Ιανουάριο, πήρα μια ιδέα για μια εφαρμογή Mac, και είχα λίγο ελεύθερο χρόνο, οπότε πήδηξα αμέσως στο Swift. Έτσι μαθαίνω συνήθως νέα πράγματα. Είναι πολύ αυθόρμητο. Ξεκινώ με την επιθυμία να φτιάξω ένα προϊόν και μετά καταλαβαίνω ποιες δεξιότητες χρειάζομαι για να φτιάξω αυτό το προϊόν και μετά τα μαθαίνω. Η ιδέα έρχεται πριν από τον προγραμματισμό.

Το Swift είναι πολύ πιο δύσκολο να μάθει αρχικά από το JavaScript, αλλά το Swift λάμπει επειδή είναι έντονα δακτυλογραφημένο. Όταν κάνετε μεταγλώττιση, είναι πολύ πιο απίθανο να διακόψετε εάν χρησιμοποιείτε σωστά τα προαιρετικά. Το μόνο πράγμα που δεν μου άρεσε για το Swift είναι ότι μερικές φορές πρέπει να αλληλεπιδράτε με τα παλιά API στο C.

Έγραψα μερικές εφαρμογές παραγωγικότητας και χρησιμότητας. Το Lungo είναι μια εφαρμογή γραμμής μενού που έγραψα και το βρίσκετε στο App Store. Το άλλο που έγραψα είναι η ένδειξη μπαταρίας.

Ποιο είναι το σχέδιό σας για το επόμενο έτος; Σκοπεύετε να πάτε με πλήρη απασχόληση ή να εξετάσετε άλλους τρόπους για να γίνετε οικονομικά βιώσιμοι;

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

Έχω δοκιμάσει μερικά διαφορετικά πράγματα. Ένα πράγμα που έκανα είναι να ζητήσω υποστήριξη στο αρχείο GitHub README.md. Δεν θα το αποκαλούσα διαφήμιση αλλά περισσότερο από ένα μικρό banner. Έκανα λίγα χρήματα, αλλά απέχει πολύ από το να μπορώ να με συντηρήσω.

Θα μπορούσα να δοκιμάσω τον Patreon.

Ποια είναι τα πράγματα που θέλετε να βελτιώσετε στο οικοσύστημα JavaScript;

Κατά την άποψή μου, το οικοσύστημα JavaScript είναι ήδη υπέροχο, αλλά έχουμε ακόμα πολλές ιδιορρυθμίες για να εργαστούμε από την πλευρά του προγράμματος περιήγησης. Υπάρχουν τόσα πολλά έργα με αυτό το γιγαντιαίο σενάριο build μόνο για να πάρετε μια απλή εφαρμογή εκεί έξω, γι 'αυτό μου αρέσει το Node.js.

Το πρόβλημα με τα προγράμματα περιήγησης είναι ότι είναι πολύ περίπλοκα. Πρέπει να σκεφτείτε το δίκτυο, πρέπει να βελτιστοποιήσετε τόσο για το μέγεθος όσο και για την απόδοση, έχετε πολλές διαφορετικές περιπτώσεις χρήσης, πλαίσια για να διαλέξετε. Ο καθένας προσπαθεί να το απλοποιήσει, αλλά στη συνέχεια καταλήγεις να είσαι πολύ διακριτικός, μετά προσθέτεις διαμόρφωση, αλλά υπάρχει πάρα πολύ boilerplate. Δεν βλέπω έναν εύκολο δρόμο προς τα εμπρός, εκτός αν διορθώσετε την πραγματική πλατφόρμα αντί να δημιουργήσετε πολλές λύσεις. Ένα πράγμα που πιστεύω ότι θα βελτιώσει την κατάσταση είναι όταν παίρνουμε επιτέλους λειτουργικές μονάδες στο πρόγραμμα περιήγησης. Ίσως να μην χρειαστείτε ένα βήμα κατασκευής για όλα αυτά τότε.

Γιατί οι προγραμματιστές JavaScript έχουν εμμονή με μονόκερους;

Όλη η κίνηση του πόνυ ξεκίνησε με την κοινότητα του Django. Όταν αρχίσατε να ρωτάτε τις λειτουργίες που θέλετε, οι προγραμματιστές θα έλεγαν "Θέλω έναν ταχύτερο αναλυτή HTTP" ή "Θέλω το ORM που λειτουργεί ακριβώς" Μια μέρα, ένας από τους βασικούς προγραμματιστές στη λίστα αλληλογραφίας του Django απάντησε σε ένα από τα αιτήματα χαρακτηριστικών με το "όχι, δεν μπορείτε να έχετε πόνυ!" Ολόκληρη η κίνηση του μονόκερου ξεκίνησε με αυτήν την άρνηση αιτήματος χαρακτηριστικών.

Υπάρχει ακόμη και ένας ιστότοπος αφιερωμένος στο αξιαγάπητο πόνι.

Δεν θυμάμαι ακριβώς πώς εξαπλώθηκε στην κοινότητα JavaScript. Ήταν ένα από αυτά τα πράγματα που συνέβησαν από μόνα τους. Έχω κάτι τόσο διασκεδαστικό και ανόητο όσο οι μονόκεροι με βοηθά να δουλεύω μέσω προγραμματισμού και OSS και αυξάνει το ηθικό μου. Το ίδιο ισχύει και για ανόητα gif.

Αρχικά δημοσίευσα αυτήν τη συνέντευξη στο Between the Wires, μια σειρά συνεντεύξεων με εκείνους που κατασκευάζουν προϊόντα προγραμματιστών και σχεδιαστών.

Αυτό το έργο έγινε εφικτό με χορηγίες από το frontendmasters.com, egghead.io, Microsoft Edge και Google Developers.