Svaki moj prijatelj koji radi fizički posao koji podrazumeva podizanje nečega težeg od laptopa dvaput nedeljno, na kraju pronađe način da u razgovoru provuče nešto nalik na: „Brate, tvoj posao nije težak. Upravo sam završio 4700-časovnu radnu nedelju kopajući šrafcigerom tunel ispod Mordora“.
I imaju pravo. Mordor je zeznut, i svakako je fizički teže kopati tunel nego kuckati po tastaturi (osim ako ste mrav). Međutim, možemo li se složiti da su stres i ludilo loše stvari? Sjajno. Dobrodošli u svet programiranja.
Svi programerski timovi se sastoje od ludaka, i ludaci ih i formiraju.
Zamislite da ste se pridružili inženjerskom timu (mislimo na „prave inženjere“, sa tradicionalnih tehničkih fakulteta). Uzbuđeni ste i puni ideja - verovatno sveže diplomirali i iz sveta čistih, divnih dizajna, estetičkog savršenstva, jedinstva svrhe, ekonimičnosti i snage. Srećete Meri - vođu projekta mosta u velikom gradu. Meri vas upoznaje sa Fredom, ali tek nakon što prođete kroz 15 različitih sigurnostnih provera koje je uspostavio Dejv, jer je neko jednom Dejvu ukrao džemper sa stola. Jednom i Nikad Više. Fred, inače, jedino radi sa drvetom. Vi onda, logično, zapitate Meri, zašto je Fred uključen kad je most predviđen za veliku koncentraciju saobraćajnih vozila u kojima se voze smrtni ljudi, 60 metara iznad brzaka reke. „Ne brini“, reče Meri. „Fred će da se pozabavi pešačkim stazama“. Kakvim sad pešačkim stazama? Meri će vam objasniti, da je Fred dao razuman predlog za pešačke staze, koje će se namontirati na most. Naravno, biće napravljene bez zaštitne ograde, jer je Fil postavio striktno „bez ograda“ pravilo. Fil inače nije inženjer. Zapravo, niko nije siguran šta Fil uopšte radi. Najverovatnije je to stvar sinergije i ima veze sa višim menadžmentom sa kojim nijedan inženjer ne želi da se kači - zato neka Fila, nek radi šta hoće.
U međuvremenu, Sara je pronašla nekoliko zanimljivih tehnika za popločavanje i unela ih u dizajn mosta, tako da ćete morati da se baviti svakom posebno kako most bude napredovao - zato što svaka zahteva posebnu pripremu podloge i tehnike zaštite. Tom i Hari rade već godinama, ali i dalje im je aktivna rasprava oko korišćenja metričkih ili imperijalnih jedinica mere. I rad im se svodi na princip „ko prvi počne sa radom“. Što zadaje glavobolju ostatku tima. Takođe, napomenimo da je most zamišljen kao viseći most, tako da je takav projekat već u toku, mada niko zapravo ne zna kako da napravi viseći most. Zato su dodali par dodatnih stubova da drže prokletinju. Pri tom su kablovi zadržani jer još uvek drže delove mosta, pa je uklanjanje rizično - ko zna šta će se desiti.
Tako, upoznati ste sa ekipom, i pozvani ste da date poneku ideju. Ali vi nemate ideja jer ste vi inženjer za hidroturbine i nemate pojma ništa o mostovima.
Da li biste se vozili preko takvog mosta? Ne. I ako bi se nekakvom magijom i realizovao takav projekat, svi umešani bi bili likvidirani. S druge strane, svaki program koji ste ikada koristili, sav bankarski softver, websajt, pa i programi namenjeni zaštiti podataka (a to ne rade) su nastali kao plod rada ovakvog kolektiva.
Sav programski kod je loš
Svaki programer, s vremena na vreme, kada nema nikog kod kuće, ugasi svetla, naspe sebi čašu omiljenog pića, pusti laganu nemačku elektro muziku, i otvori fajl na svom računaru. To je drugačiji fajl od programera do programera. Ponekad, oni sami su ga napisali - a ponekad su naleteli na njega i sačuvali ga. Naš programer čita linije koda, i roni suze pred lepotom. Onda suze postaju gorke kada se sete ostalih fajlova i neumitne propasti svega onoga što je lepo i tačno na svetu.
Ovaj fajl je Božji Kod. On ima tačne i dosledne nazive za funckije i varijable. On je sažet. Ne radi ništa glupo i nepotrebno. Nikada ne mora da živi u divljini ili da odgovara prodajnim timovima. On izvršava tačno jednu, preciznu, specifičnu stvar i izvršava je dobro. Napisala ga je jedna osoba i niko drugi ga nije dotakao. Čita se kao poezija.
Svaki programer počinje stvarajući ovakvu, svoju, savršenu malu pahuljicu. Onda im neko kaže u petak da moraju do četvrtka da napišu 600 pahuljica, tako da oni počinju da varaju pomalo - možda da kopiramo nekoliko pahuljica ovde i ovde, i da pokušamo da ih slepimo. Ili pitamo kolegu da popravi onu jednu koja topi ostale. I onda sve pahuljice se sklapaju u celinu, neobičnog i neuhvatljivog oblika. I onda neko sve to spoji u pikasovsku celinu jer niko ne želi da vidi kako se sve pahuljice tope jer je neko urinirao po njima. Sledeće nedelje, svi lopatama nabacuju sneg kako Pikaso ne bi pukao.
Postoji teorija koja kaže da se sve ovo može izlečiti poštovanjem standarda. Osim toga, što postoji više „standarda“ nego stvari koje računari mogu da urade, i svi ovi standardi su izvedeni iz ličnih naklonosti autora ka ovom ili onom formatiranju ili stilu. U svakom slučaju, prvih par nedelja bilo kog posla je čisto „provaljivanje“ kako program radi, čak i ako ste upoznati sa svakim jezikom, frejmvorkom i standardom koji se koristi, zato što su standardi jednorozi.
Uvek će biti tama.
Recimo da ste prosečan web programer. Upoznati ste sa desetinama programskih jezika, tonama korisnih biblioteka, standarda, protokola i čega sve ne. I dalje morate da naučite više u toku jedne nedelje i da zapamtite da proverite stotine stvari koje znate - da bi ste videli da li su izmenjene, poboljšane ili propale. I da proverite da niko nije zakrpio rupu koju ste koristili da biste uradili nešto što ste smatrali da bi bilo pametno uraditi onog jednog vikenda kad ste bili pijani.
I tako, sve je ažurirano, podešeno, a zatim se sve razbije u komade.
„Šta koji ...“ reći ćete i početi da jurite problem. Otkrićete da jednog dana, neki idiot je svojevremeno odlučio da u nekom jeziku, 1/0 bude isto što i beskonačnost. Onda je drugi idiot odlučio da se to ubaci kao skraćenica za beskonačnost, kada je pojednostavljivao svoj kod. Onda je konačno, neki tip koji nije idiot video da je sve ovo idiotski, što je trebalo da uvidi onaj prvi idiot - a nije. Tako, ovaj pametniji tip, odluči da bude kreten, pa u novi kompajler ubaci da je ovakav izraz zapravo greška. Zato što je kreten, i hoće da urinira po vašim pahuljicama.
Vi ste ekspert u ovim tehnologijama, i to je dobra stvar, jer će vam to znanje omogućiti da potrošite samo 6 sati života pokušavajući da provali šta je pošlo po zlu, suočeni sa pretnjom otkazom. Kada provalite grešku - čestitamo! Dobili ste još jednu malu činjenicu da dodate gomili činjenica koje treba da zapamtite, jer toliko programa, jezika, kompajlera i alata prave i održavaju kreteni i idioti.
A ovo je samo u vašem ekspertskom polju, koje je malecni deo ukupne gungule svih stvari koje postoje u kompjuterskoj nauci, a kojih je toliko, da kad pomislite koliko malo znate, poželite da nikada niste ništa naučili. Nijedna osoba na svetu ne zna sve šta se dešava u vašem računaru. Zato vam i u slučaju problema kažemo da ih isključite i ponovo uključite u nadi da će ugrađeni mehanizmi oporavka rešiti problem koji imate. I jedini razlog zbog kog računari programera bolje rade od ostalih je taj što ljudi koji kodiraju znaju da su računari šizofrenična mala deca sa auto-imunim bolestima tako da ih ne bijemo kad su loši.
Dosta posla se radi na internetu, i internet je poseban krug pakla.
Sećate se priče o lošim ljudima i lošem kodu? Internet je upravo takav, samo što je bukvalno milion puta gori. Websajtovi koji su proslavljeni portali za kupovinu, sa svega nekoliko dinamičkih stranica, održavaju timovi ljudi, jer istina je da sve puca stalno, svuda i svakome. Upravo sada, neko ko radi u Facebooku dobija desetine hiljada poruka o grešci i franatično radi na tome da pronađe problem pre nego što cela šarada padne. Neki tim u Googleu već treći dan ne spava. Negde je programer baze podataka, koji je okružen praznim pivskim flašama, i za koga supružnik nije siguran da li je živ. I ako ovi ljudi stanu, svet će goreti. Mnogi ljudi ne znaju šta rade sistem administratori, ali verujte, ako bi svi oni napravili pauzu u istom trenutku, ne bi stigli do prodavnice pre nego što ispraznite šaržer braneći svoje namirnice od tumarajuće horde mutanata.
Ne možete restartovati internet.
Na žalost ne možete. Stotine milijardi dolara zavise na klimavoj mreži nezvaničnih dogovora i „dobro je zasad“ koda sa komentarima poput „URADITI: ZAKRPI OVO JAKO JE OPASNA RUPA, ALI NIJE MI JASNO ŠTA NIJE U REDU.“ koji su napisani pre desetak godina. A nisam još pomenuo legije tipova koji napadaju različite delove intereneta zbog špijunaže, profita ili dosade. Čuli za 4chan? On vam može uništiti život i posao samo zato što su odlučili da im se ovog popodneva ne sviđate. A i što da brinemo zbog 4chan-a kad još jedna nuklearka ne pravi bitnu razliku u nuklearnoj zimi.
Na internetu, u redu je reći „Znaš, ovo funkcioniše neko vreme ako upotrebiš pravu tehnologiju“ i BAM!, sada je deo interneta. Svako sa par stotina dolara i računarom može sebi da obezbedi deo interneta i na njega postavi svakakav kod. Čak i dobri programeri se ne zamaraju učenjem misterioznih specifikacija koje izmišljaju organizacije koje treba da implementiraju neke jednoroge - tako da je svako svestan da ništa ne odgovara ničemu i da može da se sruši svakog trenutka. Onda ćemo samo pokušati da ga sakrijemo i nadamo se da niko neće primetiti.
Evo jednog tajnog pravila interneta - 5 minuta nakon što otvorite web brauzer, klinac u Rusiji ima vaše lične podatke. Da li ste potpisali nešto? Računar u NSA automatski prati vašu lokaciju do kraja života. Poslali ste imejl? Vaša imejl adresa je na bilbordu u Nigeriji.
Ove stvari nisu tačne zbog toga što ne marimo za njih ili što ne pokušavamo da ih zaustavimo. Tačne su zato što je sve klimavo jer nema dovoljno dobrog koda. I svi pokušavaju samo da omoguće da stvari funkcionišu. To je vaš posao kao programera - nadate se da je poslednja stvar koju ste napisali dovoljno dobra da preživi par sati kako biste mogli da večerate i odmorite malo.
Još niste dovoljno programirali da biste zaista progovorili na programskom jeziku. Ljudski mozak jednostavno nije dovoljno dobar u jednostavnoj logici - a čitava karijera vam se svodi na rad u zaista kompleksnim logičkim problemima.
Veliki lanci apstraktnih uslova i zahteva treba da prođete da biste otrkili banalnu grešku poput nedostajućeg zareza. Kada ovo radite čitavog dana, dospete u stanje afazije dok gledate u ljude koji vam govore i ne znate da li su završili jer nigde nema tačka-zareza. Na kraju ćete pronaći sebe udavljenog u potpunom besmislu.
Efekat uništavanja mozga je očigledan kada vidimo programske jezike koje su ljudi osmislili. Ovo su primeri programa u programskim jezicima koji zaista postoje.
Evo na primer:
`r```````````.H.e.l.l.o. .w.o.r.l.di
Isti efekat kao i prethodni, ima i ovaj kod:
#include
int main( int argc, char** argv ) {
std::cout return 0;
}
Da ne bude dosadno, ovo je potpuno validan kod:
>+++++++++[<++++++++>-]+++++++[<++++>-]<+.+++++++..+++.[-] >++++++++[<++++>-] +++++++++++[<++++++++>-]<-.————.+++ .———.————.[-]>++++++++[<++++>- ]<+.[-]++++++++++.
kao i ovo:
#:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :||
open(Q,$0);while("){if(/^#(.*)$/){for(split('-',$1)){$q=0;for(split){s/|
/:.:/xg;s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q*20;}print chr($q);}}}print"n";
#.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:|
"
Prema autoru, ovaj poslednji program je „dve linije koda koje parsiraju dve linije ugrađenih komentara u kodu, kako bi čitali Majanske brojeve koji predstavljaju pojedinačni ASCII karakteri koji čine naslov magazina, renderovan u ASCII slici rotiranoj za 90 stepeni“.
Ovaj program je pobedio sve ostale. Da li želite da živite u ovakvom svetu? Ne. Ovo je svet gde možete popušiti paklu cigareta dnevno i da neko to ne primeti. „naravno da puši paklu dnevno, ko ne bi?“. Na kraju, svaki programer se budi i pre nego što je sasvim svestan, vidi čitav svoj svet i svaku vezu u njemu kao parčiće koda i pričaju priče o tome kao da su tripovi koje izaziva pospanost normalna stvar koja se dešava ljudima. Ovo je svet u kom se ljudi odriču seksa da bi napisali programski jezik za orangutane. Svi programeri teraju svoje mozgove da rade stvari za koje mozgovi nisu predviđeni. I to često deset do petnaest sati dnevno, sedam dana nedeljno. I svaki lagano postaje lud.
Tako da: ne, ne nosim okolo teške stvari na poslu. Menjao sam to za priliku da brijem Satani pubične dlake dok on večera u mojoj otvorenoj lobanji, kako bi deo intrenta nastavio da funkcioniše još neki dan.
Autorski tekst Pitera Velča možete naći na mashable.com

Postavi komentar