Zapravo je počelo pre ‘95-e. Prva verzija je izašla 1995. godine, a ja sam počeo kasne ‘93-e, rane ‘94-e. Čak i tada, a pogotovo ranije 80-ih, internet je bio drugačije mesto. U 80-im sam koristio BBS-ove, čak sam u jednom trenutku napisao i sopstveni, tako da sam uvek bio zainteresovan za onlajn stvari i povezivanje sa drugim ljudima putem računara. Ali da, nismo imali ovakav internet.
Termin open-source softver nije postojao tada, niti gomila drugih stvari koje možeš da preuzmeš, tada si morao skoro sve da radiš sam. A što se tiče tadašnjih kompjutera...kupiš kompjuter 80-ih, uključiš i dobiješ trepćući kursor, i to je to, ništa drugo. Nije bilo softvera na računaru i sve što ste mogli da uradite jeste da programirate, to je bila njegova jedina funkcija. Malo ljudi danas kupuje računar da bi programiralo, kupujete računar kao alat da radite neke stvari, ali tada nije bilo ničega. Morali ste sve da uradite sami, pa je i internet bio otprilike takav, ako ste želeli nešto, morali ste to da napravite sami. Noć kada je izašao prvi grafički internet pretraživač, odjednom je bilo nečega. I onda je sve jednostavno eksplodiralo, jer tada su i veb serveri počeli da eksplodiraju.
Bilo je nekoliko njih, bio je jedan koji se zvao NCSA i koji je nastao na Univerzitetu tako što su podigli server i pružili ga kao besplatan softver, i onda si mogao da preuzmeš to i namestiš svoj sopstveni server, i tada sam ja otprilike počeo da hakujem PHP i pokušavao da napravim dinamičke stranice. U tim ranim danima interneta, sve je bilo statično, kao novine koje kupujete na trafici. Otvorite novine, vidite šta ima novo danas, zatim ih ponovo kupite sutra kako bi videli šta ima novo. Veb je tada bio takav otprilike, odete na stranicu i nema ničeg dinamičnog, vratite se sledećeg dana i možda bude nekakvog sadržaja.
I put od obične statične stranice do aktivne stvari, je otprilike ono što se dešavalo od 1993. do 1995. godine. Iz pokušaja da se internet učini dinamičnijim se izrodio i PHP: cilj je bilo kreirati back-end tehnologiju koja vam omogućava, pre svega, interakciju (npr. forme), uzimanje podataka od korisnika i povezivanje sa nekakvom bazom podataka, kako bi sve to izgledalo kao dinamične aplikacije.
Da, mislim, pisanje veb stranica u C-u nije bilo zabavno. Veoma je dosadno, jer u C-u morate da pazite kako raspoređujete memoriju, kada želite string, morate da rasporedite memoriju za taj string i budete sigurni da ne stavite previše karaktera kako ne biste preterali. Kada pišete tako nisko postoji mnogo low-level stvari o kojima morate da razmišljate. Nama je bilo potrebno nešto višeg nivoa tako da ne moramo da brinemo o ovim stvarima.
Perl je tada bio veliki skriptni jezik, ali problem sa Perlom je to što je bio glomazan i mogao je da radi mnoštvo stvari, ali to je značilo i da resursi koji su vam bili potrebni da bi radili sa njim nisu bili pogodni za veoma kratke zahteve. Bio je dobar za rad velikih programa, jer kada ga jednom uspostavite bio je moćan i brz, ali je zahtevao mnogo obrade kako bi započeli sa radom, što je bila užasna arhitektura za veb. I tada nije bilo nečega kao što je mod_perl, koji je došao tek 1999. godine, možda čak i kasnije. U svakom slučaju mnogo godina nakon što je neko već pokušao da reši ovaj problem.
Ja sam probao da rešim taj problem, ali nisam mogao da shvatim kako da ugradim Perl u veb server. Odlučio sam da napravim svoj jednostavan templating sistem koji će biti manji, lakši, pokretaće se brže i koji ću moći da ugradim na server i tada sam počeo da pišem nešto svoje. Tako je otprilike i nastao PHP. Trebalo mi je nešto što je ugrađeno u server, da ne moram za svaki zahtev da pokrećem novi proces.
I što se tiče onoga, kako se danas piše softver bez Stack Overflowa i mogućnosti da jednostavno nađete onlajn šta vam treba...u to vreme jednostavno nismo razmišljali tako, jer nikad ranije nismo imali tu mogućnost. To je kao da pitate osobu koja je rođena slepa kako se snalazi, odgovoriće vam jednostavno: snalazim se, oduvek se snalazim. Mi smo tada bili slepi, tj. nismo imali ono što deca imaju danas. Jednostavno sedneš, skapiraš kako se nešto radi, preuzmeš izvorni kod drugih ljudi i čitaš ga. Dakle, source kod je postojao na internetu tada, samo nije bilo diskusija i deljenja iskustava, to je došlo kasnije.
Desio se u pravo vreme. Bilo je tada dosta kompanija koje su pokušavale da uđu na veb. Nije bilo mnogo besplatnih rešenja, bar nijedno nije bilo dovoljno kompletno da ste jednostavno mogli njime da rešite svoj problem. Dosta ljudi je tada pokušavalo da uradi nešto slično, ali zašto PHP? Možda jer sam bio uporniji i tvrdoglaviji od drugih. Mislim, to je trebalo da bude neko ko je baš dobar programer, možda doktor računarskih nauka koji bi napisao neki neverovatan jezik za rešavanje tog problema. Mislim da je generalno problem sa takvim ljudima što previše teže ka perfekciji. Neće objaviti ništa dok to što rade ne bude savršeno.
Ono što je dovelo PHP do tačke korisnosti je kada su ljudi počeli da govore: hej, lakše nam je da iskoristimo njegovo rešenje nego da pišemo svoje. I jednom kada dobijete to inicijalno gurkanje, počinju i doprinosi ostalih ljudi. Zato što ako vi njima rešite 90% problema, a oni treba da dodaju samo 10%, to je odlično. Jednom kada svi dodaju svojih 10%, to jednostavno počinje da raste i raste. U nekom trenutku prosto nema nazad.
Bilo je dovoljno rano da je bilo moguće za jednu osobu da radi na tome i da dođe dotle. Mnogo toga je u tajmingu. Da sam uradio to godinu dana kasnije, ne bi bilo šanse. Da je to bilo godinu dana ranije, bilo bi prerano, jer 1992. niko nije znao šta je internet.
Dakle, bilo je pravo vreme, a druga ključna stvar je što je to bio pristup koji je radio za shared hosting. Postojala su druga rešenja, ali ona su zahtevala poseban server samo za to. Niste mogli da postavite rešenje na veb server i da onda imate virtuelne hostove, stotine njih, a ISP-ovi vole to jer za malo novca možete da namestite server i da ga onda delite na pet stotina klijenata. I oni svi mogu da imaju pristup PHP-u…na polubezbedan način, bezbedan dovoljno da mogu da rade. (smeh)
Mislim, mod_perl se nikad nije primio upravo zbog tog problema. On je bio super moćan, i kačio se za Apache, ali ste mogli da kontrolišete svaku fazu requesta i napravite URL parser, što je značilo da svaki korisnik koji je kupio Perl može da ugrabi request koji ide drugim korisnicima tog istog veb servera, jer u osnovi vi možete reprogramirati veb server sa mod_perlom. Dakle, napravili su stratešku grešku načinivši ga toliko moćnim, gde nije bilo šanse da neki ISP stavi mod_perl na server i dozvoli da više ljudi deli taj server. I mnoge druge tehnologije u to vreme su bile takve, gde vam je bio potreban poseban server i to je jednostavno bilo preskupo za ljude koji nisu ni znali šta da rade sa internetom u to vreme. To je bila nova stvar i niko nije želeo da troši previše novca na to ako su mogli da potroše svega 20 dolara mesečno. Okej, to nije previše, hajde da vidimo gde ovo ide vs. trošenje 500 dolara mesečno za sopstveni server centar.
Ukratko, pravo vreme i na sreću pravo rešenje za rane dane interneta.
Da, tu postoji nekoliko aspekata. Jedan od njih je da je PHP toliko dominantan i jednom kada nešto postane toliko popularno veoma je lako kritikovati ga, slična stvar se dešava i sa popularnom muzikom, zapravo sa bilo čime što je popularno. Mnogo je lakše biti negativan prema nečem takvom, jer niste posebni ako ste PHP developeri, svi su PHP developeri, to je lako raditi. Mnogo je jedinstveniji osećaj pokušati da ga srušite. Znate kao, ovo je potpuno sranje, ne budite PHP programer. Vi ste nekako posebni ako gledate na PHP programere sa visine.
Drugi aspekt toga je da, pošto je PHP svuda, možete čuti dosta o bezbednosnim problemima PHP-a. Na primer, postoji jezik koji se zove Kotlin, za koji ste možda čuli, a možda i ne. Ali definitivno niste čuli za bezbednosne probleme u Kotlinu, tako da je Kotlin sigurno super bezbedan, a PHP nije. (smeh)
Ali poenta je ta da postoje dve vrste jezika: jezici koje ljudi koriste i žale se oko njih i jezici koje ljudi ne koriste. Na primer, ako odete i pretražite “Ja mrzim C++”, dobićete tonu sajtova o tome kako je C++ grozan, zar ne? Svaki jezik ima to, PHP još više, jer sam se ja oduvek trudio da krivu učenja načinim što je više moguće plitkom. Hteo sam da svako bude u mogućnosti da postavi svoj sadžaj na veb. Ako imaju dobru ideju, nevažno je da li imaju diplomu računarskih nauka ili ne, dovoljno je da umeju bar malo logički da razmišljaju i trebalo bi da mogu da pokupe osnove PHP-a. Uzmete jednu statičnu HTML stranicu, dodate nekoliko tagova i puf, odjednom imate dinamičnu veb stranicu.
Obično prva stvar koju ljudi pokušaju da naprave u PHP-u radi i to je veoma osnažujuće. Vi nešto pokušate i…”hej, ovo radi! Šta još mogu da uradim sa ovim?”, dok vam mnogi drugi jezici pri prvom pokušaju daju ogromnu poruku sa greškom i praktično vam govore “Ti si idiot.” Teško je kad vam alat konstantno govori da ste idiot, teško je nastaviti dalje sa alatom koji ne radi. “Hej, uradilo je nešto, možda ne baš ono što sam hteo ali jeste nešto, kako sada da ga promenim da uradi još nešto?” To je PHP i to je nešto što gikovi ne vole. Ne vole da drugi ljudi tako lako rade te stvari, to ih čini manje jedinstvenim.
Ponekad me zapravo iznervira, ali samo zato što je to tako sitničavo, mnogo tih stvari zaista ne znače ništa. Mislim, dobijam neke zaista gnusne mejlove kad-kad i zašto bih se brinuo? PHP nije nešto što sam te naterao da platiš hiljade dolara, to je potpuno besplatan alat, ako ne želiš da ga koristiš, nemoj ga koristiti. Zašto uopšte trošiš toliko energije pokušavajući da srušiš tako nešto? Ali ja se uvek vratim na ono što su ljudi napravili. I to je jedino što je meni važno.
Jedan od mojih omiljenih projekata je projekat iz Šri Lanke. Bio sam na Šri Lanki pre nekoliko godina i pričao sam sa nekom decom odatle nakon nekakvog velikog cunamija i poplava koje su se desile tamo. Oni su hteli da naprave alat za organizaciju u slučajevima takvih prirodnih katastrofa, u suštini IT rešenje za pomoć u organizovanju inostrane pomoći, kao i za praćenje stvari koje se dešavaju unutar zemlje. Na primer, kada se desi katastrofa i države pošalju pomoć, dolete avioni puni ćebadi i pelena, obično se mnogo ovih stvari izgubi, jer su zemlje kao što su Šri Lanka ili Haiti vrlo neorganizovane. Dakle, taj projekat je samo gomila alata, npr. jedan od njih se koristi za menadžment inventara: avion dođe, tu je mala mobilna aplikacija koja kaže: “Okej, ćebad, skladište 17, to je tamo.” I onda kada su ljudima tokom katastrofe potrebna ćebad, oni provere svoje telefone i kažu “Okej, znamo gde se nalaze ćebad.” Ili kada nađete neku osobu, dovedete je u sklonište i kažete “Okej, kako se zoveš…” ukucate sve to, i onda postoji pretraživač ljudi, tako da porodica i prijatelji koji ih traže, samo ukucaju u onlajn pretraživač i kažu “Hej, moja baba je u skloništu tom i tom”. I postoji gomila takvih alata. Ovo rešenje se koristilo u preko 50 prirodnih katastrofa širom sveta i to bukvalno spašava ljudima živote.
I kada uporedite tako nešto sa sitničavim gikovima koji kukaju oko nečega, to je tako nevažno. Kada pomislim da je ova stvar na kojoj sam radio zapravo spasila život nečije bake, to je jedino što je bitno. Sve ostalo je samo šum, i zato se ne uzbuđujem. Zaista nije važno.
Oh, da, bilo je tu dosta faza. Bila je tu inicijalna faza kada je postao previše velik za mene, kada je bilo previše prijavljivanja bagova i previše doprinosa (contributions) koji su pristizali. Ja sam bio navikao da sve pišem iznova. Ljudi bi mi slali sugestije, nekad i patcheve i ja bih pogledao ideju i napisao bih je na način na koji bih ja to iskodirao. Ne bih jednostavno primenio patch. Prepisao bih ga na način na koji bih ja to uradio. I onda je sve previše poraslo da bih to nastavio da radim.
Tako da, 1997. godine ili tako nešto, ljudi koji su se najviše žalili, dobili su delove PHP-a da ih pogledaju i rade na njima. “Vidi, evo ti pristup za commit, žalio si se oko Oracle ekstenzije svaki dan u poslednjih 6 meseci, sada je ovo tvoja Oracle ekstenzija.” To je bio jedan dečko iz Norveške. I priznajem, Oracle ekstenzija koju sam napisao je bila grozna, jer ja zapravo nisam ni imao Oracle, imao sam samo header fajlove, nisam mogao da priuštim sebi Oracle. Tako da sam ekstenziju napisao samo na osnovu tih header fajlova i nadao se da će raditi. Nikad je nisam testirao. (smeh) I on je nastavio da se žali na sve što nije radilo, tako da sam to prepustio njemu, jer je on znao mnogo više o Oracle-u nego ja. I u celom PHP-u, postoje ljudi koji su znali više od mene o određenoj oblasti PHP-a.
Da biste pokrenuli ovako nešto, ne možete potrošiti mnogo vremena na pojedinačne delove, ili nikada nećete završiti. Nikada nećete doći do tačke kada je to ikome korisno. Zato vam je potrebno malo znanja iz više oblasti, i to je otprilike gde leži moja snaga, ja nisam dobar ni u čemu, ali sam okej u mnogim stvarima. Ali da biste zapravo napravili zaista dobar alat, morate imati nekoga ko je dobar u tim pojedinačnim aspektima. I to je otprilike ono što se desilo 1997/1998. godine, kada sam PHP zapravo načinio open-source projektom sa dosta contributora.
I onda smo prošli kroz više varijacija PHP-a. PHP 2 je bila poslednja verzija koju sam napisao sam. PHP 3 je bila prva verzija gde smo imali dosta doprinosa sa strane. Momci iz Izraela, Zeev i Andi iz Tel Aviva su bili oni kojima sam predao ceo parser. Oni su pogledali moj parser u vreme kada su pohađali kurs kompajlera na studijama računarskih nauka u Tel Avivu i rekli “E, mi smo upravo naučili ove stvari, a tvoj parser ne izgleda uopšte kao nešto što smo naučili na predavanjima. Možda bi mi trebalo da pokušamo da napišemo taj parser iz početka.” I ja sam rekao super, nema problema. Mislim, ja nemam CS diplomu, ja nikad nisam učio te stvari, samo sam hakovao sve na način na koji sam mislio da će raditi. Tako da, oni su dobili taj deo. Lik koji se zvao Šejn došao je i rekao “Bilo bi dobro da ovo radi i na Windowsu.” Okej Šejn, Windows je tvoj, i imali smo još takvih ljudi za PHP 3.
PHP 4 je bio rewrite parsera i gomile drugih delova, bolja Windows podrška, PHP 5 još jedan veliki rewrite, ali nije bilo nekih velikih promena tu. PHP 7 je bio velika promena, jer smo pre toga imali neuspešnu verziju PHP 6. Pokušali smo da idemo potpuno sa unicode-om i pokušali smo da uradimo toliko stvari da smo izgubili korisnike jer su oni razmišljali “Unicode bi bio kul, ali je PHP 6 koristio duplo više memorije i bio 40% sporiji od prethodne verzije.” Unicode nije bio toliko bitan da bi ljudi bili voljni da ostave sve ostalo, plus je jezgro postalo komplikovano da su contributori rekli “Ostaćemo na PHP 5, PHP 6 je previše kompleksan.” Tako da smo bili blizu slične podele u zajednici kao u Python 2 vs. Python 3 slučaju i ja zaista nisam želeo to da se desi. Tako da, tad sam rekao “Hajde da zaustavimo ovu PHP 6 stvar, imamo sav kod, vratićemo stvari nazad na PHP 5 i onda ćemo laganije da prebacujemo ljude na novo.”
Tako da smo imali još nekoliko PHP 5 izdanja, 5.5 i 5.6 i onda veliki skok na PHP 7, koji je delom podstaknut i od strane HHVM-a iz Facebooka gde su oni pokazali da koristeći git možete da imate ogromna poboljšanja u perfomansama. Mi smo to pokušali i nije nam uspelo, ali se ispostavilo da ako smanjimo našu memoriju možemo dobiti isti boljitak kao HHVM. Tako da je to bio sledeći veliki skok u PHP-u, jer smo se fokusirali na perfomanse, gde smo uzeli 20-godišnji projekat i načinili ga duplo bržim. To nije lako uraditi kada imate toliko legacy koda. Tu smo rekli “Nećemo značajno promeniti ničiji kod, ali ćemo načiniti sve duplo bržim.” To ne samo da nije lako, skoro da je magija. I ako pogledate broj mašinskih instrukcija, mi smo ih zapravo smanjili za dve trećine. Zamislite da neko uzme veliko i komplikovano parče koda i kaže “Izbriši dve trećine svog koda i nemoj da poremetiš ništa.” To je skoro magično. To je bio veliki korak za PHP i njegov kod.
Ako se vratim na kratko na sve one koji kritikuju PHP...dosta njih kritikuje PHP na osnovu PHP 4 ili ranog PHP 5, jer to je otprilike ono što su probali, videli su sve te probleme i ostavili su to tako sa idejom “Ovo je PHP i ne volim ga jer je pre 12 godina imao te i te bagove i onu užasnu implementaciju.” (smeh) Veoma malo ovih ljudi je probalo PHP 7, a da jesu verovatno ne bi imali iste reakcije, jer mnogo stvari koje su ranije bile problem sada to više nisu.
Ja ne vidim da će to tako biti. Ako se tu misli recimo na Node, to nije budućnost razvoja veb aplikacija. Mislim, sama činjenica da su oni zaustavljeni na jednom jezgru, to jednostavno nije skalabilno. Više vidim da se stvari kreću jezicima kao što je Go, kada je u pitanju budućnost veb developmenta. Mislim, slatko je razmišljati tako, da će sve biti JS, ali nema šanse da se to desi.
JavaScript je ružan isto koliko i PHP kada je u pitanju sama implementacija jezika. Vrlo brzo se može zakomplikovati u JavaScriptu, možete dosta jednostavnije pisati u PHP-u i sa brzinom PHP sedmice…možete argumentovati u prilog asinhronizacije u JavaScriptu, ali čak je i to na neki način veštački async, zapravo ne radi ono što mislite da radi. Mislim da su ljudi malo nasamareni Node-om, ali možda se u budućnosti pojavi neka druga server-side JS stvar koja će raditi dobar posao, nikad se ne zna.
Uh, to je kao da me pitate koja je budućnost interneta. Gde će veb biti za 10 godina? Ko zna? Ljudi me pitaju ovo pitanje skoro 20 godina, i svaki put se ispostavi da onaj pravac u kom krene veb, PHP ga prati u stopu, jer ljudi koji su pisali PHP su ljudi koji rešavaju probleme na vebu, i stvari koje nalaze u PHP-u su stvari koje su potrebne developerima u određenom vremenu da reše aktuelne probleme na vebu. Neko vreme, 2000ih godina, XML je počeo da postaje značajan, i okej, dodali smo dosta XML podrške. Zatim je došao JSON, okej, dakle treba nam JSON u jezgru PHP-a, treba nam JSON parser, nema problema, to je dodato. Sada beta podrška za mikroservise i slično. Tako da u bilo kom pravcu krene veb PHP će da ga prati, jer PHP i dalje ostaje najkraći put za rešavanje problema.
Ako vam je stalo do rešenja, pre nego do puta na koji dolazite do njega, PHP je i dalje najbolji način za to, i da, mnogo ljudi bi se raspravljalo sa mnom o tome, ali možemo jednostavno da pogledamo šta ljudi zapravo rade i koriste, ne šta pričaju, već šta je zapravo deployovano na vebu trenutno i šta ga pokreće, i to je PHP. Reda veličine više nego Ruby, Python i ostale stvari. JS je svuda, da, zbog browser strane, ali sa strane servera JS je takođe nigde, procentualno.
To su zapravo sestrinski jezici na način da apsolutno nema smisla prelaziti sa PHP-a na Python ili sa Pythona na PHP. Ako već znate Python, prelazak na PHP je suvišan. Imalo bi smisla sa PHP-a preći na Go, čini mi se. Dosta je komplikovanije, jer je niži nivo, ali dobijete napredak u performansama. Međutim, ne postoje razlozi da pređete sa PHP-a na Ruby. I jedan i drugi su skriptni jezici, a Ruby je čak dosta sporiji, tako da će i vaš vebsajt biti sporiji. Iako ćete se vi možda osetiti više kul, jer sada kucate Ruby umesto PHP-a, vaši korisnici neće biti srećni. “Hej, zašto je sajt sporiji?” Ne brinite ništa, sada je našim developerima lepše. Ne, to je totalno bezveze i fokus bi trebalo da bude na proizvodu koji se pravi, a ne na boji čekića. Ruby i Python su, po meni, samo čekići drugačijih boja.
Nemanja Ognjanović (PHP Srbija): Zaista je čast ugostiti vas ovde. Kako bih vam ilustrovao koliko nama ovo znači: sedeli smo davno u baru, pili pivo i pričali o tome kako bi bilo sjajno da napravimo konferenciju jednog dana i zamišljali kako bi možda jednom čak i Rasmus Lerdorf došao! Tako da je danas za nas veliki dan i ovo nam daje veliku dozu samopouzdanja za dalje aktivnosti.
Da, to je teško. Sada me pitate otprilike taj “10 godina” tip pitanja. To je kao gde će tehnologija biti za 10 godina.
Čitao sam o AlphaGo ove nedelje, Google-ovom projektu koji igra igru Go i bio sam vrlo zainteresovan za lika, zlatnog šampiona koji je izgubio od AlphaGo. Izgubio je i prošle godine, ali jedva, ali sada je njegov komentar bio: “Prošli put kada sam igrao sa AlphaGo bilo je vrlo ljudski, igrao je kao čovek, veoma dobar igrač, ali kao čovek.” Ovog puta, on kaže, igrao je kao bog. Sa poentom da ovog puta bilo bukvalno nemoguće pobediti AlphaGo, jer je sada ta stvar kao bog. Sada je naučila dovoljno. Ranije su je trenirali da igra sa ljudima i to ju je u početku istreniralo, ali sada se AI razvio do te tačke da je iznad ljudskih igrača. Analizirala je sve ljudske igrače i kao “okej, to je super, sada ću da iskoristim svoje AI kapacitete” i sada prelazi na sledeći nivo. I ako razmislite o tome na sekund, to se desilo u samo jednoj godini: gde je ta stvar došla od dobrog igrača čoveka do bogovskog načina igranja, a igra Go je veoma veoma komplikovana igra. Mislim da je to najkompleksnija igra koju imamo, ali to je i dalje igra i vrlo je ograničena, u smislu da možete da istrenirate AI da nauči da je igra. Ali mi je bilo jako interesantno da smo za godinu dana došli od čoveka do boga. Ako uzmete isti koncept, za 10 godina, VR, AI, za 10 godina, počećemo da vidimo neke zaista interesantne stvari možda i zastrašujuće, koje danas ne možemo da zamislimo. Setite se kako je bilo pre više od 20 godina, recimo 1995. nije bilo šanse da zamislimo gde ćemo biti danas. Mislim da ćemo početi da vidimo AI kako se pojavljuje na mnogim mestima, možda čak i programskim jezicima, možda će postojati nekakav Lib.ai ili nešto što će moći da nauči...
Uh, ne nužno to, jer ćete i dalje imati jednu stvar koja ostaje konstanta, a to je čovek i čovek ima određene kapacitete, možemo da vidimo, kucamo, govorimo, čujemo. Dakle, mora da postoji određeni način za interakciju napred-nazad. Dosta ovih stvari neće nigde otići - glasovi, lica… Amazon Alexa je sad velika stvar. Ali postoji toliko stvari koje ne želite da uradite glasom, jer, kao popunjavanje forme, uraditi to pomoću glasa je jednostavno naporno, mnogo je brže ako to ukucate. I druge stvari su lakše, tako da ćemo uvek imati neku vrstu vizuelnog interfejsa. To može biti VR u nekom trenutku, gde su kontrole dosta lakše, ali će uvek biti nečeg takvog. Tako će možda postojati nekakvo AI jezgro kao deo budućih programskih jezika. Ono može reći, u redu ovo je početni interfejs, a onda ćemo ga pomoću lib.ai podesiti tako da odgovara ljudskom ponašanju. Mislim, to nama može da zvuči čudno, ali pokušavamo da zamislimo stvari i ko zna gde ćemo završiti. Mogu da vidim tu neku vrstu samoispravljajućih programa, koji ispravljaju čak i sopstvene bagove.
Mnogo je monotonije u programiranju danas, mnogo stvari gde bismo mogli samo da kažemo šta želimo i da to bude shvaćeno i urađeno. Želim ovu informaciju od korisnika, kako tačno to da postavim na ekran? Pa, možda imamo neku veliku bazu znanja o korisničkom interfejsu, gde samo postoji: ovo je tip potrebnog korisničkog interfejsa, uradi to.
Čak, može biti personalizovano tako da interfejs izgleda drugačije različitim ljudima, i možda je to na neki način budućnost, koja ne mora nužno biti AI, da Amazon npr. izgleda drugačije svima na osnovu toga šta korisnici rade i da postoji nešto “ispod haube” što bi moglo to da shvati.
Imam sina koji ima 15 godina. I on je geek. Moja žena i ja smo se upoznali u inženjerskoj školi, tako da nije bilo šanse da ne bude (smeh). Interesantno je gledati njega i videti za šta je on zainteresovan. Kada sam bio u Bukureštu pitali su me šta on radi sa vebom? Ništa? On ne radi veb stvari, jer je veb za starije ljude, to je tehnologija koju tata koristi. Raditi iste stvari kao vaši roditelji? Ne, ne, to je za stare ljude. On ima 3D štampač i trenutno mu je omiljeno da modifikuje nerf blastere. On bi kupio blaster, rasturio ga na komade, stavio veće motore u njega i onda 3D odštampao nove delove kako bi mu promenio oblik i načinio ga mnogo jačim. Takođe i programira nerf blastere, jer stavlja neke Arduino delove u neke od njih.
On provodi sate u tom programu za 3D modelovanje koji se zove Fusion 360, dizajnira delove, stvari i onda ih štampa. Takođe, radi i dizajnira potpuno nove blastere, štampajući sve nove delove...i to je meni prilično interesantno, jer je toliko drugačije od onoga što sam ja radio. Za mene je hardver uvek bio težak, jer je bilo teško da samostalno napraviti hardver. Mogli ste da kupite čipove, ali ste uvek morali da čekate da stignu. Činjenica da on može samo da pritisne dugme i odštampa ove male objekte, da može da osmisli stvari i bum, odštampa ih, to je njemu tako prirodno.
Dakle, u osnovi mikroservisa je request, od kog dobijete nazad rezultat. Oni su još jednostavniji nego ranije, svaki poziv bi trebalo da radi veoma malo stvari. I pomenuo si async, pojedinačnom mikroservisu verovatno nije potrebno da radi asinhrono, a ako jeste onda bi možda to trebalo da bude poseban mikroservisni poziv. U tom slučaju čak je i savršeno za PHP, u smislu da je PHP veoma dobar da služi takve kratke zahteve.
Nisam motivisan tehnologijom kao takvom. Ne volim programiranje, mislim da je programiranje monotono, dosadno, teško, to testiranje, debagovanje je prilično iritantno. Ono što me pokreće je cilj. Na primer, ne volim da letim uopšte, i zapravo ne razumem ljude koji to vole, osim ako ste pilot pa je zapravo zabavno da letite, ali sedenje u avionu… Kako neko može da bude zaključan u ovoj cevi sa lošim vazduhom, ljudima neprijatnog mirisa i lošom hranom, gde je neudobno i ne možete da spavate dobro? Ali, ja ipak letim mnogo, tako da kada kažem ljudima da ne volim letenje oni mi mi kažu “Ali, ti stalno letiš”. Isto je i kada kažem da ne volim da programiram…”Ali, ti programiraš non-stop”. Da, ali zašto ja letim avionom? Letim da bih stigao do određenih mesta. Volim da ih posećujem, volim da putujem, ali je destinacija ona koja je zapravo interesantna. Doći u Beograd, otići u Južnu Afriku, Brazil, to je interesantno. Letenje je nešto što moram da izdržim, neizbežno je, to je jedini način da dođete iz Kalifornije u Tajvan. Šta ćete da radite, da plivate? To nije praktično. Tako je i sa programiranjem. Mesta na koja želim da idem, problemi koje želim da rešim, način za dolaženje do tamo je programiranje, ali to nije moja strast. Moja strast je u tim pravim stvarima.
To su deca u Šri Lanci koja su napravila onaj sistem, neke stvari na kojima radim u Etsy-u, gde pokušavamo da donesemo Etsy u ruralni Meksiko i omogućimo da ljudi koji prave umetnost i rukotvorine u tom delu Meksika mogu da prodaju te njihove stvari bogatim Nemcima za mnogo veću cenu nego što bi prodavali nekom mutnom preprodavcu koji dođe i kupi od njih za dolar, a posle prodaje to na aerodromu za 400 dolara. Ako ja mogu da povežem bogate kupce iz Nemačke sa ovim umetnicima iz Meksika i nemački kupac plati 390 dolara, to je onda skok sa 1 na 390 dolara i njegov život je promenjen zauvek, cela ekonomija tih malih zajednica može da se promeni. I kako mi to radimo? Pa, programiramo malo, teško je, dosadno i monotono, ali možemo time da promenimo svet. I to je odgovor na pitanje odakle i dalje strast prema onome što radimo. To nisu svakodnevne operativne aktivnosti, jer ako vam je to fokus i ako je to sve što vidite, kad-tad ćete pregoreti. Nema šanse da 25 godina možete da sedite i radite te frustrirajuće sitnice.
Vidim dosta programera, pogotovo mlađih programera koji pregore nakon nekoliko godina. Toliko se fokusiraju na religiju programiranja i na to kako bi programiranje trebalo da se radi, i da sve mora da bude savršeno. Potpuno izgube iz vida zašto rade ovo. To je samo alat. Ovo nije umetnost. Nekad me iznervira kad ljudi kažu “umetnost programiranja”. Da, postoje neki artistički elementi tu, svakako, ali programiranje uglavnom nije umetnost na taj način, postoje izuzeci gde vam je potrebna nekakva umetnost, ali je programiranje uglavnom kao letenje. Postoje neki neverovatni ljudi koji lete, ali je letenje prilično umarajuće, većini pilota. Sedite u svojoj kabini, letite od Njujorka do San Franciska svaki dan tamo i natrag. Verovatno nije toliko uzbudljivo.
Ali, moja poenta je: ako se fokusirate na rešenje i značaj i uticaj koji ima ono što radimo, mislim da nikad ne možete da pregorite.
Ovom prilikom se zahvaljujemo Startit ekipi na sjajnoj transkripciji celog intervjua.