U čemu greši Dejvid H. Hanson

5 min

Nedavno je Dejvid H. Hanson, ko-osnivač kompanije 37signal, odlučio da iz projekta uklone TypeScript u koristi JavaScripta.

Nije da me nešto posebno zanima čime se dotični bavi; tu i tamo pročitam njegovu objavu. Dejvid jasno i, kako se čini, transparentno deli razmišljanja, tehnološka rešenja koja su upotrebili i odluke koje su sproveli. Iskreno, bilo bi sjajno kada bi imali više sličnog sadržaja: uvide u skorašnje probleme sa kojima se timovi suočavaju i donešene odluke, pa makar još i ne bile potvrđene u produkciji. Lako je deliti kada sve jednom počne da radi kako treba :)

Igrom slučaja, do pomenute odluke o odbacivanju TypeScripta sam došao putem YouTube podkasta koji se bavi ovom temom. Pomislio sam da će to biti jedno kratko konzumiranje tokom vožnje liftom; međutim, sve šta je Dejvid govorio me je teralo da slušam dalje - i to ne iz dobrog razloga.

Dejvid je, naravno, slobodan da radi kako mu se prohte. Iz nekog razloga njihova odluka je izazvala veću reakciju nego što bi očekivali. Tu je loptica na našoj strani - programeri su zaljubljeni u alatke, i, kako ispada, spremni da troše vreme i energiju na agresivno ubeđivanje “svih ostalih” da je baš njihova, jedina, dragocena alatka najbolja. Najdalje koliko se time može dobaciti je da postaneš Golum; to je sve.

Da se vratimo na sadržaj podkasta. Dejvid:

Zvuči razumno?

Prvo, OpenSource

OpenSource nije samo otvoreni kod. Svakako nije nikakav poklon - takva naracija je pogrešna. Svako korišćenje je vezivanje. To je OK, ali hajde da batalimo nepotrebnu romantiku.

Dalje, nije dovoljno da OpenSource bude samo otvoreni kod. Treba nam još atributa. Da li je to interni projekat koji delimo: ti dobijaš rešenje, mi dobijamo tvoje vreme, korišćenje, testiranje; nemaš udela u odlučivanju kuda projekat ide? Ili zaista rešavamo nekakav biznis problem, na najbolji način zarad većine? Kako znamo da je bolje? Ili samo otvaramo kod radi transparentnosti? Koja su nam načela projekta?

Otvoreni kod nije besplatan. Neko uvek ulaže vreme u njega.

Ovde bih da stanem; tema je daleko složenija od onoga što Dejvid naivno (i pogrešno) saopštava.

Drugo, tipovi

Da bih podjednostavio pojmove, razmišljam na sledeći način:

Da li bi voleo da budeš siguran u ishod snežana.jede(jabuku)?

Da bude sasvim jasno: nema dvojbe šta je kvalitetnije. Statički jezici nude proveru ispravnosti koda prilikom kompajliranja. Bukvalno svaki put kada otkucaš bilo šta u svom IDE, tipovi bivaju provereni.

To je, već, poklon.

Korišćenje bilo čega drugog je samo prečica. One su takođe OK, dok god ih razumemo, svesni smo posledica i nije nam previše stalo da li će Snežana zagristi otrovnu jabuku.

Treće, uživanje

To šta voliš ne mora da je ispravno. To što voliš je prolazno. Ne možeš znati o stvarima koje ne znaš. Uživanje se uči, kao i sve drugo.

Nauka je precizna. Možeš da je voliš ili mrziš, ali 1 + 1 je 2, svetlost je talas/čestica, a Zemlja ravna.

Tehnologija nije tu da nekoga zabavi. Tehnologija je tu da bude primenjena nauka u službi čoveka, ma koliko teško to bilo za ostvariti. U Svemir letimo zato što je teško. Umetnost konzumiramo bez da žvaćemo slatkiše. Programiramo da bi bilo ispravno, a ne šareno.

Kada sam prvi put radio sa Skalom, bolelo je. Psovao sam, udario kuče koje nemam, razbio skupocenu vazu sa ostrva Murano koju nikada nisam kupio, dramio i kukao na sav glas. Međutim, to je deo puta na kome te čeka ishod: preciznost, ispravnost, jasnoća. Nisam vanredno pametan pa da ne budem ponizan pred ovakvim darovima.

Ili si deo problema, ili si deo rešenja

Nije ovo osuda odluke koju je dotični sproveo u delo. Razumljivo je da ima problema sa TypeScriptom; od BabeSkripta ne možeš napraviti devojku. Slobodan je da čini kako mu se prohte.

Ovo je osuda nedostatku tehnološke etike koja bi naša struka trebalo da ima: neznanje se ne može pravdati ličnim preferencama.

Drug Dejvid ne bi trebalo da se bavi javnim traženjem izgovora za svoje odluke. Dosta je bilo priznati: “mi ne znamo za bolje.” I to bi bilo sasvim dovoljno, taman za jednu vožnju liftom.

🧧
Nisam definisan svojim stavovima. Stavove usvajamo, menjamo, nadograđujemo, ali oni ne čine nas same. Manje je važno da li se slažemo, koliko da se razumemo.