Antara Wayar: Temu ramah dengan pembangun sumber terbuka Sindre Sorhus

Inilah wawancara saya Sindre Sorhus, pembangun sumber terbuka yang produktif yang tinggal di Thailand.

Ceritakan sedikit tentang masa kecil anda dan di mana anda membesar.

Saya dibesarkan di kawasan pinggir bandar di luar Oslo, Norway. Semasa kecil, saya sangat berminat dengan Legos. Setiap tahun saya akan mendapat Legos untuk ulang tahun dan Krismas. Legos benar-benar mencetuskan minat saya untuk membina sesuatu sejak awal. Pada satu ketika, saya mempunyai bandar Lego yang besar yang dibina di dalam bilik saya dan hampir memenuhi seluruh bilik.

Bagaimana anda memasuki pengaturcaraan?

Ketika saya berumur tujuh tahun, keluarga saya mendapat komputer Windows 95 pertama kami. Saya biasa bermain permainan bernama Map Blaster di mana watak itu melompat-lompat untuk menyelesaikan masalah matematik. Beberapa tahun kemudian kami akhirnya mendapat akses internet dan ini mengubah segalanya bagi saya. Saya menghabiskan banyak masa untuk menulis buku tamu di laman web orang lain dan mengumpulkan gif. Suatu hari, saya ingin tahu bagaimana laman web berfungsi dan menemui butang "sumber pandangan" di penyemak imbas.

Itu adalah penemuan minda yang hebat bagi saya. Saya hanya boleh klik kanan, melihat sumbernya dan kemudian saya dapat melihat bagaimana semuanya dibuat. Pada awalnya saya tidak banyak memahami, tetapi ketika saya melihat perkara yang sama berulang kali saya mula memahami bagaimana ia berfungsi. Inilah cara saya memulakan perjalanan pengaturcaraan saya.

Saya membuat laman web pertama ketika berusia sepuluh tahun. Itu setelah melihat sumbernya selama beberapa tahun. Ia mempunyai semua jenis warna, latar belakang bercorak bintang, animasi dengan muzik latar media - itu adalah salah satu sentuhan yang ada pada semua laman web mereka ketika itu. Saya menggunakan Microsoft FrontPage.

Suatu ketika, saya bosan jadi saya membuat ribuan direktori bersarang di komputer ayah saya dan akhirnya komputer itu dihancurkan. Ayah saya harus memformat semula komputer; dia kagum dan kesal pada masa yang sama. Begitulah juga bagaimana saya kehilangan laman web pertama saya.

Kemudian semasa tahun persekolahan saya, saya masuk ke permainan Flash dan kami akan menonton banyak filem Flash semasa cuti sekolah. Saya ingin tahu bagaimana ia dibuat tetapi tidak pernah ada butang sumber. Oleh itu, saya menyusun semula fail swiff, itu mudah kerana tidak disamarkan. Itu sekali lagi memberi saya peluang untuk belajar dari pekerjaan orang lain. Saya mula mengubah suai permainan orang lain dan membuat semula semua watak, membuat musuh baru, menambah markah tinggi. Ia adalah saat yang membanggakan apabila saya menyedari orang lain benar-benar dapat bermain permainan yang telah saya gabungkan bersama.

Anda menghabiskan lima tahun dalam tentera sebagai pemaju dan jurugambar front-end. Seperti apa perkembangan web pada masa itu?

Selepas menamatkan sekolah menengah, saya menjadi pegawai tentera di Norway. Saya masuk ke unit media di mana saya menghabiskan sebahagian besar masa saya di pejabat bekerja di intranet. Tidak banyak yang dapat dilakukan pada waktu malam kerana kami tinggal di barak jadi saya memutuskan untuk membina barang. Tetapi sebahagian besar pengalaman saya menyalin dan menampal PHP dan JavaScript orang lain dan saya tidak begitu faham bagaimana mereka bekerja. Suatu hari, saya menemui Python dan Django, ia mempunyai dokumentasi dan tutorial hebat yang tidak pernah dimiliki PHP. Saya akan membaca tutorial setiap hari dan mula membina sesuatu di tempat kerja.

Itulah bagaimana pengekodan sebenar saya bermula. Selepas bertugas, saya merancang untuk pergi melancong sebelum kuliah. Tetapi saya mendapat tawaran pekerjaan dari unit tentera bernama Cyber ​​Defense Unit. Itu menarik sehingga saya menerima tawaran itu, dan akhirnya saya menghabiskan 5 tahun di sana.

Bagaimana anda terlibat dengan TodoMVC dan Yeoman?

Saya mula menggunakan GitHub sekitar tahun 2011 tetapi kebanyakannya sebagai pengguna. Saya akan berkeliling, melihat repos yang berbeza dan membintangi mereka kerana kelihatan seronok. Saya membetulkan beberapa kesalahan ketik dalam fail README.md tetapi itu sahaja.

Suatu hari saya menemui TodoMVC yang membantu anda memilih kerangka JavaScript. Ini adalah idea yang sangat mengagumkan, walaupun di belakang kami memerlukan aplikasi yang lebih maju untuk benar-benar menyelesaikan masalah pengujian prestasi dan kemampuan kerangka. Perkara pertama yang saya ingat mengenai TodoMVC ialah logo itu bagus. Nampaknya sangat dangkal, tapi itulah yang membuat saya bermula.

Saya sangat menyukai logo sehingga saya memutuskan untuk melihat lebih jauh. Saya perhatikan mereka tidak mempunyai aplikasi jQuery jadi saya memutuskan untuk membuatnya. Saya mengemukakan permintaan penarikan pada hujung minggu dan mendapat maklum balas daripada Addy Osmani yang merupakan penyelenggara projek ini. Dia menggabungkan PR saya dengan cepat yang merupakan pengalaman yang sangat bagus untuk pemula seperti saya. Saya berasa gembira kerana aplikasi saya kini dimasukkan dalam projek yang sangat popular ini. Saya melakukan ini selama beberapa minggu, dan Addy menambahkan saya ke projek yang sangat hebat.

Ini benar-benar membuat saya berminat dengan sumber terbuka. Sebelum ini, saya hanya pengguna pasif, tetapi dengan TodoMVC saya dapat mengekalkan projek besar yang banyak kerja. Tetapi saya banyak belajar dari pengalaman itu.

Beberapa bulan kemudian, Addy pergi bekerja untuk Google. Projek pertamanya di Google adalah Yeoman, alat perancah untuk aplikasi web moden. Kerana kami bekerja sama dengan baik di TodoMVC, jadi dia memutuskan untuk menjemput saya sebagai penyumbang luaran.

Matlamat awal kami dengan Yeoman adalah untuk membuat sekumpulan alat yang dapat digunakan oleh semua orang untuk membuat aplikasi web yang hebat. Yang tidak kita sedari ketika itu adalah mustahil untuk menyelesaikan masalah semua orang dalam satu alat kerana di web terdapat terlalu banyak kes penggunaan. Yeoman menjadi konfigurasi yang popular bahawa banyak pembangun membuat generator untuk memperluas Yeoman yang sesuai dengan kes penggunaan mereka sendiri.

Sejarah berulang juga jika anda melihat Buat Aplikasi atau Webpack Buat React. Seseorang mula membuat produk ini yang seharusnya dapat menyelesaikan satu masalah, tetapi kerana setiap orang mempunyai keperluan yang berbeza, masalah timbul. Apabila anda menyedari alat ini tidak dapat merangkumi segalanya, anda menambahkan konfigurasi. Kuncinya adalah mempunyai pendekatan yang seimbang. Anda harus mengatakan "Tidak" dan anda perlu tahu kapan harus mengatakan "tidak". Anda mungkin mengecewakan beberapa pengguna kerana mereka mempunyai kes penggunaan yang tidak jelas. Itu adalah bahagian yang sukar untuk membuat alat, dan lebih sukar lagi dalam projek sumber terbuka kerana terdapat banyak maklum balas.

Mengapa anda meminati sumber terbuka?

Saya suka sumber terbuka dan saya fikir ia kembali ke butang "Lihat Sumber" di penyemak imbas. Pada pendapat saya, sumber terbuka adalah kaedah paling berkesan untuk membina perisian kerana ia membolehkan kita membina antara satu sama lain. Semua orang mendapat manfaat sekiranya ada satu orang menyelesaikan masalah yang sukar. Sumber terbuka membolehkan saya bekerja dengan orang luar biasa dari seluruh dunia yang tidak mungkin dapat saya bekerjasama dengan sebaliknya. Kita harus berusaha untuk perkara yang penting bagi kita dan menumpukan perhatian kepada apa yang diperlukan oleh masyarakat dan bukannya memberi tumpuan untuk menjana pendapatan.

Paul Irish mempunyai video hebat di YouTube bertajuk "Sepuluh Perkara yang saya pelajari dari Sumber jQuery." Itulah yang membuat saya tertarik untuk membaca kod sumber jQuery. Paul Irish betul, anda banyak belajar dengan melakukan apa sahaja yang anda mahu belajar bagaimana melakukannya.

Bagaimana dengan kesinambungan sumber terbuka?

Sudah semestinya titik konflik yang sering saya fikirkan baru-baru ini. Saya telah melakukan open source sepenuh masa selama lebih kurang tiga tahun sekarang. Saya tidak mendapat wang tetapi bagus untuk melakukan ini sepenuh masa sebagai pekerjaan bergaji. Vue.js oleh Evan You adalah contoh hebat bagaimana kelestarian sumber terbuka dapat berfungsi. Dia membuat kerangka kerja yang diinginkan semua orang dan telah digunakan oleh beberapa syarikat. Syarikat dan individu lain mempunyai insentif untuk melabur dalam projeknya kerana ia berguna dalam pengeluaran. Kuncinya adalah menjadikan projek anda boleh dipercayai. Saya secara peribadi tidak menganggap sumbangan daripada individu cukup untuk menyokong sesuatu projek.

Saya telah memikirkan untuk menggunakan Open Collective supaya kami dapat mengumpulkan wang untuk memberi penghargaan kepada penyumbang dan promosi acara. Webpack telah melakukan pekerjaan yang hebat di sana. Saya sebenarnya menentang ini sejak lama, kerana saya bimbang akan ada harapan untuk kita membuat perubahan yang tidak diingini setiap kali seseorang memasukkan wang ke arah projek tersebut. Biasanya, jika syarikat melabur dalam projek, mereka mahu pekerjaan diutamakan dan masalahnya dapat diselesaikan dengan cepat.

Saya kini tinggal di Thailand dan saya fikir saya akan baik-baik saja dengan kurang dari 1500 dolar.

Anda mempunyai lebih dari 1000 pakej npm. Bagaimana anda kekal produktif?

Itu salah tanggapan. Orang melihat pakej nombor 1000 dan mereka fikir saya sangat produktif, tetapi apa yang mereka tidak sedar ialah kebanyakan pakej itu kecil dan modular. Mereka hampir selesai semasa diterbitkan. Saya suka membandingkan pengaturcaraan dengan pembinaan dengan Lego: Saya membuat banyak bata Lego yang dapat dipasang untuk membina binaan yang lebih besar. Saya menggunakannya dengan pakej lain sebelum menerbitkan untuk memastikan mereka menyelesaikan masalah saya. Itulah sebabnya mengapa pengguna tidak akan mengirimkan banyak permintaan fitur kerana sangat kecil. Sekiranya mereka memerlukan sesuatu yang lebih, mereka hanya boleh membina modul lain. 90% masa saya dihabiskan untuk 10 projek terbesar saya.

Apakah satu nasihat yang dapat anda berikan kepada penyumbang OSS baru ketika berurusan dengan orang yang menuntut dan beracun?

Saya telah melakukan open source selama enam tahun sekarang jadi saya mengembangkan kulit yang tebal. Saya tidak fikir apa-apa mengganggu saya lagi kerana saya suka berfikir bahawa saya telah mengalami semuanya. Saya bercakap dengan banyak pemula yang mengalami ketoksikan dan kemudian berhenti. Sumber terbuka sepatutnya menjadi perkara yang menyeronokkan yang anda lakukan, bukan penyebab tekanan dalam hidup anda.

Nasihat saya kepada pembangun baru adalah bahawa anda tidak boleh membiarkan orang asing di internet memberi kesan negatif terhadap mood atau pemanduan anda. Ia tidak berbaloi. Sekiranya anda mempunyai pilihan untuk pergi, bawa - gunakan butang berhenti berlangganan. Penyelenggara sumber terbuka perlu ingat bahawa pengguna tidak membayar pelanggan. Kami memberikan sesuatu kepada mereka secara percuma, pada masa lapang kami sendiri.

Dengan orang beracun, anda harus selalu menjadi orang yang lebih besar. Kedengarannya salah, tetapi apa yang saya cuba lakukan adalah membunuh mereka dengan kebaikan. Entah bagaimana ia berjaya selama bertahun-tahun. Sebagai contoh, jika seseorang mengganggu, saya akan berusaha bersikap terbuka dan ramah terhadap keadaan. Saya memastikan tidak akan menjadi sarkastik atau bercakap dengan mereka. Troll memakan kegusaran dan wacana anda, jadi apabila tidak ada, mereka akan meninggalkan anda sendirian.

Saya menggunakan pilihan senyap di mana sahaja ia disediakan, terutama di Twitter. Adalah baik untuk menyedari ketika seseorang bersentuhan dengan toksik, dan lebih baik hanya menutup suara dan memasukkannya daripada menimbulkan konflik yang tidak perlu.

Anda merancang beberapa logo untuk modul anda sendiri, mereka sangat hebat. Bagaimana anda belajar reka bentuk?

Saya mulakan dengan mengikuti tutorial dalam talian untuk membuat kesan hebat. Saya pernah menggunakan Adobe Illustrator, tetapi sekarang saya menggunakan Sketch.

Sangat menyeronokkan untuk saya merancang, dan saya rasa lebih banyak pengaturcara harus mencubanya. Setelah memprogram selama berjam-jam, senang berehat sebentar untuk melakukan beberapa karya kreatif dengan cara yang berbeza.

Ia juga memberi manfaat kepada projek saya dengan membuat logo, kerana projek ini lebih memberi keperibadian. Biasanya, apabila anda memasukkan repo di GitHub, anda mendapat perkara berdasarkan teks yang sama: tajuk, beberapa pengenalan dan README.md. Senang rasanya dengan beberapa grafik. Ternyata orang lebih cenderung menggunakan projek tersebut sekiranya ada logo. Sebagai contoh, Vadim Demedes, pemaju dari Ukraine, mengemukakan permintaan penarikan ini tepat setelah pembebasan AVA. Vadim kemudian menjadi ahli pasukan AVA. Dia memberitahu saya bahawa dia berminat dengan AVA kerana logo yang bagus.

Apa yang mendorong anda untuk pindah ke Thailand? Beritahu kami bagaimana hari biasa bagi anda.

Saya sama sekali tidak tahu banyak mengenai Thailand. Semasa saya bekerja dalam perkhidmatan wajib tentera, saya merancang untuk melakukan perjalanan. Saya mendapat tawaran dan akhirnya tinggal selama empat tahun lagi. Saya hanya mengikuti arus, kerana kehidupan berlaku.

Suatu hari, ketika saya sedang menyiapkan wawancara telefon dengan Google, saya memutuskan bahawa jika saya akan melakukan perjalanan, sekarang juga, jika tidak, itu tidak akan pernah berlaku. Oleh itu, saya membatalkan temuduga dan mengemukakan peletakan jawatan saya di tempat kerja pada hari berikutnya. Saya membeli tiket sehala ke Thailand dan itu sahaja.

Saya melakukan ransel selama setengah tahun di Asia Tenggara, dan di situlah saya bertemu dengan teman wanita saya. Saya akhirnya menetap di Thailand kerana ia adalah kegemaran saya. Saya suka budaya yang kaya, penduduk tempatan yang ramah dan makanan. Saya telah tinggal di Thailand selama dua tahun sekarang.

Saya bekerja di kedai kopi tempatan tiga hari seminggu kerana saya lebih produktif apabila mempunyai orang di sekeliling saya. Jika tidak, dari sembilan hingga enam, saya melakukan banyak pengekodan dan penyelenggaraan sumber terbuka, kadang-kadang projek sampingan saya. Pada kebanyakan hari, saya mendapat lebih daripada 20 permintaan tarikan dan banyak masalah untuk diselesaikan. Pada waktu petang, saya menghabiskan masa dengan kekasih saya Im; kami berdua menggemari makanan jalanan yang pedas di pasar malam. Kadang-kadang tugas bertugas dan saya mendapati diri saya berada di hadapan komputer pada lewat malam.

Saya tidak belajar bahasa Thai kerana semasa saya mahir dalam bahasa pengaturcaraan, bahasa lisan jauh lebih sukar daripada bahasa pengaturcaraan apa pun, dan bahasa Thai sangat sukar. Teman wanita saya, sebaliknya, fasih berbahasa Thai, Rusia, Inggeris dan pandai berbahasa Sweden. Pada satu ketika, saya ingin belajar bahasa Thai dan bahasa lain, tetapi saya tidak tertekan untuk masa.

Apa yang mendorong anda untuk memulakan projek AVA?

Saya menggunakan Mocha banyak kerana saya membuat banyak modul yang mesti diuji. Saya tidak begitu gembira dengan cara kerjanya. Mocha menyuntik beberapa objek global tetapi ia tidak ditentukan di mana sahaja. Kerana saya melakukannya di Node.js, saya mempunyai banyak API async dan tidak mudah dilakukan dengan Mocha.

Saya mahukan sesuatu yang lebih mudah dan dioptimumkan untuk kes penggunaan saya. Oleh itu, pada suatu hujung minggu, saya memutuskan untuk mengusahakannya, dan pada petang Ahad saya menerbitkan versi 0.0.1 untuk AVA pada npm. Walaupun JavaScript adalah utas tunggal, IO di Node.js boleh berlaku selari kerana sifatnya yang tidak segerak. AVA memanfaatkan ini dan menjalankan ujian anda secara serentak, yang sangat bermanfaat untuk ujian berat IO. Sebagai tambahan, fail ujian dijalankan secara selari sebagai proses yang berasingan, yang memungkinkan untuk prestasi yang lebih baik dan persekitaran yang terpencil untuk setiap fail ujian.

Oleh kerana saya tidak mempunyai masa untuk memperbaiki pepijat dan saya hanya mahu menggunakannya pada projek saya sendiri, ia adalah peribadi. Setelah satu setengah tahun, saya akhirnya membuat logo untuk AVA, membersihkan repo, menulis banyak dokumentasi. Kemudian, saya menerbitkan projek tersebut.

Sebilangan besar pengguna kelihatan sangat gembira dengan AVA kerana kami mendapat tweet positif mengenai projek ini sepanjang masa. Mereka sangat menyukai betapa sederhana sintaksnya dan betapa mudahnya memulakannya. Saya baru sahaja membuatnya untuk menggaru gatal saya sendiri, tetapi ternyata orang lain mempunyai masalah yang sama dan menyukai penyelesaian saya.

Pada masa ini, saya menghabiskan lebih banyak masa untuk menguruskan projek kerana terdapat begitu banyak masalah baru dan permintaan menarik setiap minggu, yang menyebabkan saya tidak mempunyai banyak masa untuk membuat kod.

Mengapa anda membuat keputusan untuk memasuki pembangunan macOS?

Saya melakukan sedikit pengaturcaraan Objective-C tetapi saya tidak mempunyai pengalaman hebat. Januari ini, saya mendapat idea untuk aplikasi Mac, dan saya mempunyai masa lapang jadi saya melompat ke Swift. Begitulah biasanya saya belajar perkara baru. Ia sangat spontan. Saya bermula dengan keinginan untuk membuat produk, kemudian saya mengetahui kemahiran apa yang saya perlukan untuk membuat produk itu kemudian saya mempelajarinya. Idea itu muncul sebelum perancangan.

Swift jauh lebih sukar untuk dipelajari pada awalnya daripada JavaScript, tetapi Swift bersinar kerana sangat ditaip. Semasa anda menyusun, lebih mungkin tidak berlaku jika anda menggunakan pilihan dengan betul. Satu-satunya perkara yang saya tidak gemari mengenai Swift ialah anda kadang kala harus berinteraksi dengan API lama di C.

Saya menulis beberapa aplikasi produktiviti dan utiliti. Lungo adalah aplikasi bar menu yang saya tulis, dan anda dapati di App Store. Yang lain yang saya tulis ialah Penunjuk Bateri.

Apa rancangan anda untuk tahun depan? Adakah anda merancang untuk pergi sepenuh masa atau mempertimbangkan kaedah lain untuk menjadi kewangan berterusan

Saya telah menjana simpanan sejak tiga tahun kebelakangan ini dan menggunakan perisian sumber terbuka. Itu jauh lebih mudah di Asia tetapi tidak kekal selama-lamanya. Sebaik-baiknya, saya ingin melakukan sumber terbuka dengan cara yang mampan dari segi kewangan tetapi sukar, jadi saya mungkin akan membuat kontrak pada tahun depan.

Saya telah mencuba beberapa perkara yang berbeza. Satu perkara yang saya buat ialah meminta sokongan dalam fail GitHub README.md. Saya tidak akan menyebutnya iklan tetapi lebih dari sepanduk kecil. Saya menjana sedikit wang tetapi jauh dari dapat mengekalkan saya.

Saya mungkin mencuba Patreon.

Apakah beberapa perkara yang ingin anda perbaiki dalam ekosistem JavaScript?

Pada pendapat saya, ekosistem JavaScript sudah hebat tetapi kami masih mempunyai banyak kebiasaan untuk dikendalikan dari aspek penyemak imbas. Terdapat begitu banyak projek dengan skrip binaan raksasa ini untuk mendapatkan aplikasi mudah di luar sana, sebab itulah saya suka Node.js.

Masalah dengan penyemak imbas adalah bahawa mereka sangat rumit. Anda mempunyai rangkaian untuk dipikirkan, anda perlu mengoptimumkan untuk ukuran dan prestasi, anda mempunyai banyak kes penggunaan, kerangka kerja untuk dipilih. Semua orang berusaha untuk mempermudahnya, tetapi kemudian anda akhirnya terlalu banyak pendapat, kemudian anda menambahkan konfigurasi tetapi terdapat terlalu banyak papan pemanas Saya tidak melihat jalan yang mudah ke hadapan melainkan anda membetulkan platform yang sebenarnya dan bukannya membuat banyak penyelesaian di atasnya. Satu perkara yang saya fikir akan memperbaiki keadaan adalah apabila kita akhirnya mendapat modul dalam penyemak imbas. Anda mungkin tidak memerlukan langkah membina untuk semua itu.

Mengapa pembangun JavaScript terobsesi dengan unicorn?

Keseluruhan pergerakan kuda bermula dengan komuniti Django sebenarnya. Apabila anda mula menanyakan ciri yang anda mahukan, pembangun akan mengatakan "Saya mahukan penghurai HTTP yang lebih cepat" atau "Saya mahu ORM yang berfungsi." Suatu hari, salah satu inti utama dalam senarai mel Django menjawab salah satu permintaan ciri dengan "tidak, anda tidak boleh memiliki kuda poni!" Keseluruhan pergerakan unicorn dimulakan dengan penolakan permintaan ciri tersebut.

Malah ada laman web yang dikhaskan untuk kuda yang disukai.

Saya tidak ingat dengan tepat bagaimana ia menyebar ke komuniti JavaScript. Itu adalah salah satu perkara yang berlaku sendiri. Mempunyai sesuatu yang menyeronokkan dan bodoh seperti unicorn membantu saya bekerja melalui pengaturcaraan dan OSS dan menaikkan semangat saya. Perkara yang sama berlaku untuk gif bodoh.

Saya pada mulanya menyiarkan wawancara ini di Antara Wayar, sebuah siri temu bual yang memaparkan mereka yang sedang membina produk pembangun dan pereka.

Projek ini dimungkinkan dengan penajaan dari frontendmasters.com, egghead.io, Microsoft Edge dan Google Developers.