Galerija

Volim kad rasplačem programera

Sećam se svojih praksi iz srednje škole. Zaista ne znam da li to i dalje postoji, ali kada sam ja išao u školu, oko nedelju dana u toku školske godine obavezno je bilo provesti radeći konkretan posao u nekoj firmi. Jednom mi je dopalo da radim u firmi koja je još tada imala računare. Mislim da je bio u pitanju neki veliki IBM mejnfrejm sa puno terminala. Programeri su pisali neke baze podataka u programskom jeziku Kobol. Meni, kao klincu, oči su ispadale u divljenju na svaki pogled na izrazito duboke katodne zelene ekrane monitora strogo u alfranumeričkom grafičkom prikazu. Za mene su programeri od tada pa sve do sada bili neki mali čarobnjaci. Pre nego što bih ušao u salu za programere, prolazio bih kroz beskrajne dugačke kancelarije otvorenog tipa prepune operatera koji su unosili podatke silnih birokratija preko tih istih monitora. Ali na kraju hodnika, nalazio bi se zid i u njemu vrata za ulazak u raj. U sobu gde bi sedeli ljudi koji bi svojim radom udahnuli život u sve te stotine terminala za operatore. Svako jutro dok bih prolazio hodnicima zamišljao sam sebe kako se uzdižem iznad zgrade i kako iz ptičje perspektive gledam s jedne strane zida obične službenike kako rade za njih sasvim običan i dosadan posao, dok bi s druge strane sedeli oni koji bi stvarali taj svet za smrtnike preko puta.

Programerska je tuga pregolema...

Programerska je tuga pregolema…

I dan danas, gledam na svoju struku na sličan način. I naročito volim da provodim vreme sa novim, mlađim kolegama. Svaka struka ima svoju mitologiju, a programerska se može porediti sa Homerovim pričama. Biti programer bilo kog nivoa je dosta težak posao. Ne zbog same teorije. Informatičke teorije su lepe, elegantne, lepo dokumentovane u velikom broju knjiga. Težina posla je u praktičnoj implementaciji. Svaki nivo informatike okružen je neispravnošću. Procesori imaju greške, matične ploče takođe, operativni sistemi, drajveri, baze podataka, razvojni sistemi, instrumenti za testiranje i dokumentaciju. A naročito ako radite u mobilnom sektoru. Ako razvijate softver za pametne telefone, štaviše ako razvijate sistemski softver za tu klasu proizvoda, pa to je prava tragedija. Na početku ništa živo ne funkcioniše. Programeri provode preko 50% svog vemena u rvanju sa greškama drugih ili sa nedovoljnom ili pogrešnom dokumentacijom. Kada stvari ne rade, moraju da se obrate dobavljačima svake komponente. Proizvođaču mikroprocesora, ili ploče, a najviše sistem integratorima i piscima drajvera za Windows CE, Embedded Linux, Android ili iOS sisteme. Moj vekovni san je da radim za Hjulit Pakard ili za Epl, gde mogu da okrenem direktan telefon glavnog programera za pisanje nekog drajvera i da mu lično saopštim gde je problem. Ali na žalost da biste bili zlatni partner, kao pomenute firme, morate prodavati desetine miliona uređaja koje stvarate. A kako sam ja obično radio na projektima koji su plasirali od par stotina do par desetina hiljada uređaja, uvek sam morao da putujem vozovima treće klase. Firme kao Texas Instruments, Intel ili Freescale, za obične smrtnike koji se usuđuju da prodaju tako malo uređaja sa njihovima komponentama, postavljaju visoke bedeme spoljne tehničke podrške koja je u 100% slučajeva igra gluvih telefona. Praktično programeri moraju bukvalno da mole za informacije, a podrška im povremeno udeli po koju mrvu. Zbog toga su programeri često isfrustrirani, pa i očajni zato što umesto da se koncentrišu na pisanje aplikacija, oni veliki deo vremena provode tražeći sami šta je uzrok nečije tuđe greške, pa čak i da nađu način kako da je poprave. E baš zbog toga, kod programera često rade emocije. Zato i postoje religiozni ratovi između Majkrosoftovca, Linuksovaca ili Androidianaca. Zavisi kako i koliko se ko opekao u svom prethodnom iskustvu. A mitologija radi non stop. Svako od njih uspeo bi da iščupa po neki deo informacije i niko nema baš celu sliku. Sve to izgleda kao ona stara dečja pesma gde su slepci pipali slona, i svaki je prepoznavao neku drugu životinju u zavisnosti od toga sa koje strane je stajao. Jednom kada bi podrška dala prave informacije, mit bi nestajao i odjednom bi postojala samo jedna verzija istine.

A programeri, često kao prebijeni psi, toliko su izmučeni maltretiranjima tehničke podrške velikih firmi, da bi lako ulazili u pakt i sa đavolom samo da reše svoj problem što lakške i brže. Sećam se primera kada je jedan softver radio od 2 do 6 puta brže na Linuksu nego na Windows CEu i naravno tu su krenule osvetničke klanovske bitke Linuksovaca prema Majkrosoftovcima. Podrugljivo i nadmoćno bi se ismejavali monopolističkoj velesili. I naravno, na tri četvrtine projekta krenuli bi u pravu malu revoluciju tražeći od šefova se promeni operativni sistem  i da je uzaludno da oni troše svoje vreme na optimizaciji koda kada nije njihova krivica. Kad progamer nađe način da svali krivicu na nekog drugog to je gore nego gljivična kožna infekcija. U takvim situacijama, mi arhitekte obično upadamo kao specijalna policija za smirivanje razgoropađenih tabora. U 99% slučajeva ne postoji razlika između operativnih sistema, već u sistemskim adaptacijama. Operativni sistem i njegove performanse, u najvećoj meri zavisi od kvaliteta drajvera koji se nalazi između njega i hardvera. Kako drajver može da unazadi neku platformu, to niko ne može. Onda mi arhitekte trpamo svoje leptopove u rance zajedno sa par čistih košulja i sedamo u avione. Leti se na sve strane sveta u zavisnoti od toga gde je problem. Proganjamo, čak pratimo programere drajvera u gradovima gde žive, nebilismo ih prinudili da nam reše problem. Ponekad se moramo baviti i ucenama. Svakako, nakon obavljene misije, vraćamo se pobedonosno među naše ljute programere, sa plenom na stolu. Ubacujemo novi drajver u sistem, i od jednom je brzina softvera na 2 operativna sistema skoro ista. Gle čuda.

Postoje i slučajevi kada programeri, u svojoj muci u nadi da će problem rešiti brže, posegnu  za zastrašujućim i naravno užasno pogrešnim prečicama i stranputicama. I kada bih to saznao, morao bih da zovem programere na razgovore koji se u žargonu zovu „povratak u realnost“, gde bih im objašnjavao satima da njihovo rešenje nije dobro. Oni bi relativno brzo shvatali da sam ja u pravu, ali da bi ih „slomio“ potrebni bi mi bili sati ubeđivanja, jer znaju oni dobro da kad jednom pristanu, da se vraćaju na početak i ne znaju kako da reše problem.  U par navrata mi se desilo da se programeri rasplaču, bukvalno, ali šta ja tu mogu. Ja se moram držati one izreke Dositeja Obradovića „Ništa mi nije ljubeznije i milije od moga roda, ali koliko ga više ljubim, to sam mu više dužan pravdu i istinu predstavljati i govoriti“. A moj rod su programeri i ja im moram pomoći, čak i surovim istinama.

Ako želite da odslušate, prilog počinje na 25 min 50 sek

Ja pišem vama, a vi meni recite šta mislite. Voleo bih da saznam o…

Advertisements

One comment on “Volim kad rasplačem programera

  1. Povratni ping: Koje vrste programerskih kategorija postoje? | Markus Maki

Zatvoreno za komentare.