
Evo mog intervjua Sindre Sorhus, plodne programerice otvorenog koda koja živi na Tajlandu.
Recite nam nešto o svom djetinjstvu i gdje ste odrasli.
Odrastao sam u predgrađu izvan Osla u Norveškoj. Kad sam bila mala, stvarno me zanimao Legos. Svake godine bih dobivao Legose za rođendan i Božić. Legos je uistinu potaknuo moje zanimanje za ranu izgradnju stvari. U jednom sam trenutku dao u svoju sobu ugraditi ogroman Lego grad koji je gotovo zauzeo cijelu sobu.

Kako ste se upustili u programiranje?
Kad sam imao sedam godina, moja je obitelj dobila prvo računalo sa sustavom Windows 95. Igrao sam igru pod nazivom Map Blaster gdje je lik skakao okolo da bi riješio matematičke zadatke. Nekoliko godina kasnije napokon smo dobili pristup internetu i to mi je sve promijenilo. Proveo sam puno vremena pišući u knjigama gostiju na tuđim web stranicama i skupljajući gifove. Jednog dana, zanimalo me kako funkcionira web stranica i otkrio sam gumb "pogledaj izvor" u pregledniku.

To je za mene bilo nevjerojatno otkriće. Mogao sam samo kliknuti desnom tipkom miša, pogledati izvor i tada sam mogao vidjeti kako je sve napravljeno. U početku nisam puno razumio, ali dok sam iznova i iznova gledao isto, počeo sam shvaćati kako to djeluje. Tako sam započeo svoje programsko putovanje.
Svoju prvu web stranicu napravio sam s deset godina. Bilo je to nakon što sam nekoliko godina pogledao izvor. Imao je sve vrste boja, pozadinu sa zvjezdanim uzorkom, animiranu pozadinskom glazbom za medije - bio je to jedan od onih dodira koji su svi tada imali na svojim web stranicama. Koristio sam Microsoft FrontPage.
Jednom mi je bilo dosadno pa sam stvorio tisuće ugniježđenih direktorija na očevom računalu i na kraju je srušilo računalo. Moj je otac morao formatirati računalo; bio je impresioniran i iznerviran istovremeno. Tako sam izgubio i svoju prvu web stranicu.
Kasnije tijekom školske godine bavio sam se Flash igrama i tijekom školskih odmora gledali bismo puno Flash filmova. Zanimalo me kako su nastali, ali nikad nije bilo gumba za izvor. Tako sam dekompilirao swiff datoteke, to je bilo lako jer nisu bile zamućene. To mi je, opet, dalo priliku učiti iz tuđeg rada. Počeo sam modificirati tuđe igre i prepravljati sve likove, stvoriti nove neprijatelje, dodati visoke ocjene. Bio je to ponosan trenutak kad sam shvatio da bi drugi zapravo mogli igrati igru koju sam zalijepio.
Proveli ste pet godina u vojsci kao programer i fotograf. Kakav je bio web razvoj u to vrijeme?

Nakon završene srednje škole, bio sam regrutiran izravno u vojsku u Norveškoj. Ušao sam u medijsku jedinicu u kojoj sam proveo većinu vremena u uredu radeći na intranetu. Navečer se nije moglo puno raditi jer smo živjeli u vojarni pa sam odlučio graditi stvari. Ali većina mog iskustva kopirala je i lijepila tuđe PHP i JavaScript i nisam baš razumjela kako oni rade. Jednog dana nabasao sam na Python i Django, imali su sjajnu dokumentaciju i tutorijale kakve PHP nikada nije imao. Čitao bih tutorijale svaki dan i počeo graditi stvari na poslu.
Tako je započelo moje stvarno kodiranje. Nakon regruta, planirao sam putovati prije fakulteta. Ali dobio sam ponudu za posao iz jedinice u vojsci koja se zvala Cyber Defense Unit. Bilo je intrigantno pa sam prihvatio ponudu i na kraju tamo proveo 5 godina.

Kako ste se uključili u TodoMVC i Yeoman?
GitHub sam počeo koristiti oko 2011. godine, ali uglavnom kao potrošač. Obilazio bih, gledajući različite repoe i glumeći ih jer su izgledali zabavno. Ispravio sam neke greške u kucanju u datotekama README.md, ali to je bilo otprilike to.
Jednog dana nabasao sam na TodoMVC koji vam pomaže odabrati JavaScript okvir. Bila je to zaista sjajna ideja, iako nam je unatrag potrebno puno naprednijih aplikacija da bismo zapravo riješili probleme testiranja performansi i mogućnosti okvira. Prvo čega sam se sjetio kod TodoMVC-a bilo je to što je imao lijep logotip. Djeluje vrlo površno, ali to me pokrenulo.

Logo mi se toliko svidio da sam se odlučio još malo razgledati. Primijetio sam da zapravo nemaju jQuery aplikaciju pa sam je odlučio stvoriti. Podnio sam zahtjev za povlačenje tijekom vikenda i dobio sam odgovor od Addy Osmani koja je održavateljica projekta. Brzo je spojio moj PR što je bilo super lijepo iskustvo za početnika poput mene. Osjećao sam se dobro što je moja aplikacija sada uključena u ovaj stvarno popularan projekt. Radio sam to nekoliko tjedana, a Addy me dodao u projekt koji je bio stvarno cool.
Ovo me stvarno zainteresiralo za otvoreni izvor. Prije ovoga bio sam pasivni potrošač, ali s TodoMVC sam dobio okus održavanja velikog projekta što je bilo puno posla. Ali iz tog sam iskustva naučio puno.
Nekoliko mjeseci kasnije, Addy je otišla raditi za Google. Njegov prvi projekt u Googleu bio je Yeoman, alat za skele za moderne web aplikacije. Budući da smo tako dobro surađivali na TodoMVC-u, pa me odlučio pozvati kao vanjskog suradnika.

Naš početni cilj s Yeomanom bio je stvoriti skup alata koje svi mogu koristiti za stvaranje izvrsnih web aplikacija. Ono što tada nismo shvatili je da je nemoguće riješiti svačiji problem jednim alatom, jer na webu postoji previše slučajeva korištenja. Yeoman je postao popularna konfiguracija koju su mnogi programeri stvorili generatori za proširenje Yeomana koji odgovaraju njihovim vlastitim slučajevima.
Povijest se ponavlja i ako pogledate Create React App ili Webpack. Netko počne izrađivati ovaj proizvod koji bi trebao riješiti jedan problem, ali budući da svi imaju različite potrebe, pojavljuju se problemi. Kad shvatite da ovaj alat ne može sve pokriti, dodajte konfiguraciju. Ključno je imati uravnotežen pristup. Morate reći "Ne" i morate znati kada ćete reći "ne". Neke ćete korisnike možda razočarati jer imaju nejasne slučajeve korištenja. To je teži dio izrade alata, a još je teže u projektima otvorenog koda jer ima toliko povratnih informacija.
Zašto ste strastveni prema otvorenom kodu?
Volim open source i mislim da se vraća na gumb "View Source" u pregledniku. Po mom mišljenju, open source je najučinkovitiji način za izradu softvera jer nam omogućuje da nadgradimo međusobno djelo. Svatko ima koristi ako bilo koja osoba riješi težak problem. Open source mi omogućuje rad s nevjerojatnim ljudima iz cijelog svijeta s kojima inače nikad ne bih mogao raditi. Moramo raditi na onome što nam je važno i usredotočiti se na ono što je zajednici potrebno, umjesto da se usredotočimo na stvaranje prihoda.
Paul Irish ima sjajan video na YouTubeu pod naslovom "Deset stvari koje sam naučio iz izvora jQuery." To me je zainteresiralo za čitanje izvornog koda jQuery. Paul Irish bio je u pravu, puno toga naučiš zapravo radeći sve što želiš naučiti kako se radi.
Što kažete na održivost otvorenog koda?
To je definitivno točka sukoba o kojoj sam u posljednje vrijeme puno razmišljao. Puno radno vrijeme radim s otvorenim kodom već otprilike tri godine. Ne zarađujem novac, ali bilo bi lijepo raditi ovo puno radno vrijeme kao plaćeni posao. Vue.js, autor Evan You, sjajan je primjer kako održivost otvorenog koda može funkcionirati. Stvorio je okvir koji su svi željeli i koristi ga dosta tvrtki. Druge tvrtke i pojedinci imaju poticaje za ulaganje u njegov projekt jer je koristan u proizvodnji. Ključno je učiniti vaš projekt pouzdanim. Osobno mislim da doprinosi pojedinaca nisu dovoljni za održavanje projekta.
Razmišljao sam o korištenju Open Collectivea kako bismo mogli prikupiti novac za nagrađivanje suradnika i promocije događaja. Webpack je tamo napravio sjajan posao. Zapravo sam bio dugo vremena protiv toga, jer sam se brinuo da će postojati očekivanja da napravimo neželjene promjene kad god netko stavi novac na projekt. Obično, ako tvrtka investira u projekt, žele da im se prioritet postavi i brzo riješe problemi.
Trenutno živim na Tajlandu i mislim da bih se snašao s manje od 1500 dolara.
Imate preko 1000 npm paketa. Kako ostajete tako produktivni?
To je zabluda. Ljudi vide paket s brojem 1000 i misle da sam ludo produktivan, ali ono što ne shvaćaju jest da je većina tih paketa malih i modularnih. Prilično su gotovi kad su objavljeni. Volim uspoređivati programiranje s gradnjom s Legoom: stvaram puno Lego kockica koje se mogu sastaviti za izgradnju većih konstrukcija. Koristim ih s drugim paketima prije objavljivanja kako bih osigurao da riješe moje probleme. To je također razlog zašto korisnici ne bi podnijeli puno zahtjeva za značajkama jer su tako mali. Ako im treba nešto više, mogu samo izgraditi drugi modul. 90% vremena trošim na svojih 10 najvećih projekata.
Koji jedan savjet možete dati novim suradnicima OSS-a kada imate posla sa zahtjevnim i otrovnim ljudima?
Već šest godina radim otvoreni izvorni kod pa sam razvio debelu kožu. Mislim da me više ništa ne muči jer volim misliti da sam sve to doživjela. Razgovaram s puno početnika koji imaju određenu toksičnost, a zatim prestanu. Otvoreni izvor trebao bi biti zabavna stvar, a ne uzrok stresa u vašem životu.
Moj savjet novim programerima je da ne dopustite da stranci na internetu negativno utječu na vaše raspoloženje ili nagon. Ne vrijedi. Ako imate mogućnost odlaska, uzmite ga - upotrijebite gumb za odjavu pretplate. Održavatelji otvorenog koda moraju imati na umu da korisnici ne plaćaju kupce. Pružamo im nešto besplatno, u slobodno vrijeme.
S otrovnim ljudima uvijek morate biti veća osoba. Zvuči pogrešno, ali ono što pokušavam učiniti jest ubiti ih dobrotom. Nekako mi je to uspjelo dugi niz godina. Na primjer, ako je netko dosadan, pokušat ću biti što otvoreniji i ljubazniji prema situaciji. Pazim da nikad ne budem sarkastičan ili razgovaram s njima. Trolovi se hrane vašom gnjavažom i diskursom, pa kad ga nema, ostavit će vas na miru.
Koristim mogućnost prigušivanja zvuka gdje god je dostupna, posebno na Twitteru. Dobro je shvatiti kada netko graniči s otrovnim sredstvima, i puno je bolje jednostavno isključiti taj glas i unijeti podatke umjesto da uzrokujete nepotrebne sukobe.
Dizajnirali ste neke logotipe za vlastite module, oni su sjajni. Kako ste naučili dizajn?

Započeo sam prateći mrežne vodiče kako bih napravio kul efekte. Prije sam koristio Adobe Illustrator, ali sada koristim Sketch.
Stvarno mi je zabavno dizajnirati i mislim da bi ga trebalo probati više programera. Nakon satnog programiranja, lijepo je predahnuti i napraviti neki kreativan posao na drugačiji način.
Također koristi mojim projektima stvaranjem logotipa, jer projektu daje veću osobnost. Kad unesete repo na GitHub, obično dobijete iste stvari temeljene na tekstu: zaglavlje, uvod i README.md. Lijepo je to začiniti nekom grafikom. Ispada da će ljudi vjerojatnije koristiti projekt ako postoji logotip. Na primjer, Vadim Demedes, programer iz Ukrajine, podnio je ovaj zahtjev za povlačenjem odmah nakon puštanja AVA-e. Vadim je kasnije postao član AVA tima. Rekao mi je da se za AVA zainteresirao zbog lijepog logotipa.

Što vas je potaklo da se preselite na Tajland? Recite nam kako izgleda tipičan dan za vas.
Zapravo uopće nisam puno znao o Tajlandu. Kad sam radio u vojnoj obveznoj službi, planirao sam putovati. Dobio sam ponudu i na kraju ostao još četiri godine. Jednostavno sam krenuo tokom, jer se život događa.
Jednog dana, kad sam pripremao telefonski intervju s Googleom, jednostavno sam odlučio da, ako ikad putujem, to će biti sada, inače se to nikada neće dogoditi. Stoga sam otkazao intervju i dan nakon toga predao ostavku na poslu. Kupio sam kartu u jednom smjeru za Tajland i to je bilo to.
Ruksao sam pola godine u jugoistočnoj Aziji i tu sam upoznao svoju djevojku. Na kraju sam se nastanio na Tajlandu jer mi je bio najdraži. Volim njegovu bogatu kulturu, ljubazne domaće stanovnike i hranu. Već dvije godine živim na Tajlandu.
Tri dana u tjednu radim u lokalnim kafićima, jer sam produktivniji kad imam ljude oko sebe. Inače, od devet do šest radim puno kodiranja i održavanja otvorenog koda, ponekad i svoje sporedne projekte. Većinu dana primim više od 20 zahtjeva za povlačenjem i mnoštvo problema koje moram riješiti. Navečer provodim vrijeme sa svojom djevojkom Im; oboje volimo začinjenu uličnu hranu na noćnim tržnicama. Ponekad nazove dežurni i nađem se kasno navečer ispred računala.

Tajlandski jezik nisam naučio jer, iako se dobro razumijem u programske jezike, govorni jezik je puno teži od bilo kojeg programskog jezika, a tajlandski je posebno težak. S druge strane, moja djevojka tečno govori tajlandski, ruski, engleski i prilično dobro govori švedski. U jednom trenutku želim naučiti tajlandski i druge jezike, ali vrijeme me ne pritiska.
Što vas je motiviralo da pokrenete AVA projekt?
Puno sam koristio Mochu jer sam napravio puno modula koji su morali biti testirani. Nisam bio baš zadovoljan kako je to funkcioniralo. Mocha ubrizgava neke globalne objekte, ali oni nisu nigdje definirani. Budući da sam to radio u Node.js-u, imao sam puno async API-ja i nije bilo baš prikladno raditi s Mochom.
Želio sam nešto jednostavnije i optimiziranije za moj slučaj korištenja. Tako sam jednog vikenda odlučio raditi na tome i do nedjelje navečer objavio 0.0.1 verziju za AVA na npm. Iako je JavaScript jednonitni, IO u Node.js može se dogoditi paralelno zbog svoje asinkrene prirode. AVA to koristi i istodobno izvodi vaše testove, što je posebno korisno za IO teške testove. Uz to, testne datoteke rade se paralelno kao zasebni procesi, što omogućava potencijalno još bolje performanse i izolirano okruženje za svaku testnu datoteku.

Budući da nisam imao vremena za ispravljanje programskih pogrešaka i htio sam ga koristiti samo na vlastitim projektima, to je bilo privatno. Nakon godinu i pol, napokon sam izradio logotip za AVA, očistio repo, napisao puno dokumentacije. Tada sam objavio projekt.
Čini se da su mnogi korisnici vrlo sretni zbog AVA-e jer cijelo vrijeme dobivamo pozitivne tweetove o projektu. Zaista im se sviđa kako je sintaksa jednostavna i kako je lako započeti. Upravo sam se izgrebao po vlastitom svrbežu, ali ispostavilo se da su i drugi ljudi imali isti problem i svidjelo mi se moje rješenje.
U današnje vrijeme trošim više vremena na upravljanje projektom jer ima toliko novih izdanja i zahtjeva za povlačenjem svaki tjedan, što mi ostavlja vrlo malo vremena za kodiranje.
Zašto ste se odlučili za razvoj macOS-a?
Malo sam radio Objective-C programiranje, ali nisam imao sjajnog iskustva. Ovog siječnja dobio sam ideju za Mac aplikaciju i imao sam malo slobodnog vremena pa sam skočio ravno u Swift. Tako obično učim nove stvari. To je vrlo spontano. Počinjem sa željom da napravim proizvod, zatim shvatim koje vještine trebam za izradu tog proizvoda, a zatim ih naučim. Ideja dolazi prije planiranja.
Swift je puno teže naučiti u početku od JavaScript-a, ali Swift sja jer je jako otkucan. Kada kompajlirate, mnogo je manja vjerojatnost da će se srušiti ako pravilno upotrebljavate opcionalne uređaje. Jedino što mi se kod Swifta nije svidjelo je to što još uvijek ponekad morate komunicirati sa starim API-ima u C.

Napisao sam nekoliko aplikacija za produktivnost i uslužne programe. Lungo je aplikacija na traci izbornika koju sam napisao, a naći ćete je u App Storeu. Drugi koji sam napisao je Indikator baterije.
Koji je vaš plan za sljedeću godinu? Planirate li ići na puno radno vrijeme ili razmotriti druge načine kako postati financijski održivi?
Posljednje tri godine živim od ušteđevine i bavim se softverom otvorenog koda. U Aziji je to puno lakše, ali ne traje vječno. U idealnom bih slučaju volio raditi otvorene kodove na financijski održiv način, ali to je teško, pa ću vjerojatno ugovoriti sljedeće godine.
Isprobao sam nekoliko različitih stvari. Jedna stvar koju sam učinio je da zatražim podršku u datoteci GitHub README.md. Ne bih to nazvao oglasom, već više malim natpisom. Zaradio sam malo novca, ali to je daleko od toga da me može održati.
Možda bih pokušao Patreonu.
Koje su stvari koje želite poboljšati u ekosustavu JavaScript?
Po mom mišljenju, JavaScript ekosustav je već sjajan, ali još uvijek imamo puno hirova za zaobići stvari na strani preglednika. Toliko je projekata s ovom divovskom skriptom gradnje samo da biste dobili jednostavnu aplikaciju, zato volim Node.js.
Problem s preglednicima je taj što su vrlo složeni. Imate mrežu o kojoj trebate razmišljati, trebate optimizirati i za veličinu i za izvedbu, imate mnogo različitih slučajeva korištenja, okvire za odabir. Svi to pokušavaju pojednostaviti, ali onda na kraju postanete previše samopouzdani, zatim dodate konfiguraciju, ali previše je uzorka. Ne vidim lak put prema naprijed ako ne popravite stvarnu platformu umjesto da na njoj stvorite mnoštvo rješenja. Mislim da će jedna stvar poboljšati situaciju kada napokon dobijemo module u pregledniku. Tada vam možda neće trebati korak gradnje za sve.
Zašto su programeri JavaScript-a opsjednuti jednorozima?
Čitav pokret ponija zapravo je započeo zajednicom Django. Kad biste počeli pitati značajke koje želite, programeri bi rekli "Želim brži HTTP parser" ili "Želim ORM koji jednostavno funkcionira." Jednog dana, jedan od glavnih razvojnih programera na Django mailing listi odgovorio je na jedan od zahtjeva za značajkom "ne, ne možeš imati ponija!" Cijeli pokret jednoroga započeo je s tim odbijanjem zahtjeva za značajkom.
Postoji čak i web stranica posvećena simpatičnom poniju.

Ne sjećam se točno kako se proširio na JavaScript zajednicu. Bila je to jedna od stvari koja se upravo dogodila sama od sebe. Imati nešto tako zabavno i glupo poput jednoroga pomaže mi u radu s programiranjem i OSS-om i podiže moj moral. Isto vrijedi i za glupe gifove.



Izvorno sam ovaj intervju objavio na Intervjuu, seriji intervjua s onima koji grade proizvode za programere i dizajnere.
Ovaj projekt omogućen je sponzorstvima frontendmasters.com, egghead.io, Microsoft Edge i Google Developers.
