Sve su firme šampionske, razlika je samo u kompenzaciji.
 

  Site o šampionizmu i šampionskim firmama na hrvatskoj informatičkoj sceni.            ->Engleski site
  O šampionima i šampionizmu | Novosti i obavijesti | Šampionski manifest | Legenda o šampionima | Vaše priče | Pošaljite svoju priču | Ogledi o šampionizmu | Forum (engl.) | Ankete | Pitanje tjedna | Šampionski biseri
  Legenda o šampionima
  Prije (Previous) Nastavak (Next)
  Krunoslav Bazdić Stinky
 
  Uloga: Head developer

Stinky je bio 22-godišnji mladac koji je mislio da je vrhunski programer, zapravo Visual Basic programersko božanstvo i da samo iz sažaljenja i dobrote komunicira s ostalim smrtnicima s kojima je prisiljen raditi. Često je ponosno isticao da otkad zna za sebe programira i da se iskušao u nebrojenim tehnologijama, od C-a, Unix-a, HTML-a preko VB-a i dalje. Kad mu je Bojan u jednom razgovoru sramežljivo izjavio da web poznaje već dosta dugo tj. od 1994 kada je nabavio prvi modem i Mosaic browser, Stinky se samo nadmoćno nasmijao i rekao: "Tako kasno si počeo?"

Faks? Certifikat? Ma neeee, Brainbench!

Stinky je završio geodetsku školu i nije nikad studirao, pogotovo ne FER ili neki sličan faks. On bi to objasnio time da je on očito prepametan za faks i da tamo ne bi mogao pokazati sav svoj raskošni talent. Također nije nikad položio niti jedan stručni certifikat kao npr. MCSD ali je zato ponosno isticao da je jedan od najboljih Visual Basic programera po Brainbenchu.

Zgoda koja najbolje oslikava koliko je ustvari Stinky malo znao o programiranju i da ustvari nikad nije stekao bazična znanja niti pročitao ijednu knjigu iz tog područja je ona u kojoj je u jednom trenutku pitao Bojana da mu pomogne riješiti sljedeći problem:

  "Imam funkciju koja mi vraća boolean vrijednost. E sad, ja bih htio da neka varijabla poprimi obrnutu vrijednost od onog što vrati funkcija. Ja bih to kodirao tako da napišem
 If Funkcija()=true Then varijabla = false Else varijable = true.
 Ali imam feeling da se to može i jednostavnije napisati. Možeš li mi reći kako?"

Kad je Bojan zabezeknuto odgovorio da je dovoljno napisati varijabla = Not Funkcija() Stinky je marljivo krenuo provjeriti i onda je nakon par minuta veselo uskliknuo: "Pa to radi!". Bartol je sve to gledao sa strane i samo dobacio Bojanu – "Vidiš kolega, jebeš svu edukaciju, godine programiranja, pročitane knjige i teoriju Booleove algebre. To ti uopće ne treba da budeš programer šampion. Dovoljno je da znaš propertie Janus grid i ActiveBar kontrole i programirati copy-paste metodom i sva ti se vrata otvaraju."

Higijena se ne polaže na Brainbenchu

Inače, svoj nezavidan nadimak Stinky je zaradio kada je Bojanu postalo jasno da ne zaudara samo spaghetti kod kojeg je Stinky svakodnevno stvarao već i njegov autor, i to gadno. Očito Stinky nije prao niti sebe niti odjeću koju je nosio na sebi, osim možda kad bi se počela lijepiti na njemu. To je bilo tim čudnije jer je Stinky živio s curom i to dosta dugo.

Legendarna je zgoda kada je Stinky prišao Bojanu i počeo mu nešto objašnjavati a pritom je stao ispred ventilatora koji je radio jer je bilo ljeto a firma nije imala klimu. Dok je Stinky veselo gestikulirao i pričao o nekom svom rješenju, Bojan je samo kolutao očima i zadržavao dah da ne osjeti grozni smrad koji je pomoću ventilatora tukao od Stinkya ravno prema njemu. Druga anegdota koja isto dovoljno govori o Stinkyevim higijenskim navikama je ona u kojoj je Bartol jednog jutra veselo krenuo na WC da se istovari i kad se sagnuo nad školjku imao je što vidjeti – veliki smeđi zavijutak i par papira kako ponosno strše iz otvora. Genijalac Stinky je zaboravio pustiti vodu!

Stinky code convention ili "Da kokoš pretrči preko tastature nastao bi ljepši kod"

Ipak, da se ne bismo zadržali samo na Stinkyevoj higijeni i bahatosti, koju riječ treba reći i o njegovom kodu i načinu rada. U par riječi to bi bilo – vulgarno, herojsko Visual Basic programiranje bez ikakvih standarda ili lijepih običaja koji bi nekom drugom olakšali čitanje takvog koda i održavanje. Obožavao je Stinky globalne varijable, varijable kratkih i kriptičnih imena (npr. umjesto rstCustomers ili rstProjects svaki recordset je jednostavno nazivao trs), hardkodirane numeričke i string konstante, ogromne strukture, SQL querye upisane direktno u kod od kojih su se neki protezali na desetke linija, indent je postavljao na dva znaka umjesto na standardna četiri i da dalje ne nabrajamo sve te užase.

U razgovorima uz kavu bi Stinky znao reći da "ne voli klase jer su nekako preglomazne, već da više preferira strukture." Također nije imao dobro mišljenje o COM komponentama. "Ma da, mi smo na početku nešto probali s COM komponentama, Patrik je tu nešto forsirao, ali stalno je bilo problema s ovim ili onim compatibilityem, nova verzija aplikacije se rušila sa starim komponentama ili obrnuto, pa sam ja odlučio olakšati stvar i sad nema komponenti, sve je unutar jednog exe-a". Da ubogi Visual Basic Brainbench šampion nije uopće shvatio COM komponente i što je binary compatibility, a o IDL-u i GUID-ima da ne pričamo, to se nije smjelo ni pomisliti. Stinky i slični njemu su izmislili novu verziju gordijskog čvora – umjesto da si daš malo truda i pokušaš shvatiti ili naučiti ono što ne znaš, presiječeš stvar i napraviš ono što znaš, makar je to lošije rješenje i zaudara do neba. Pokazati da ne znaš je znak slabosti!

Code reuse je Stinky shvatio kao primjenu copy-paste metode, što je vrlo lucidno primijetila Senka kojoj je to strašno išlo na živce jer je vrlo često morala debuggirati Stinkyevo smeće nastalo opisanom metodom. Ako je trebalo napraviti novu formu u aplikaciji, Stinky je jednostavno iskopirao staru i promijenio malo funkcionalnost. Na taj način je source kod aplikacije imao gomile ponavljajućih fragmenata i funkcija što je kasnije održavanje činilo pravom noćnom morom. Ali Stinky nije mislio na ljude koji će nakon njega morati ispravljati njegov kod – to su obični looseri koji se nisu plasirali na vrh Brainbench liste i kojima mora biti čast debuggirati remek-djelo njegovog veličanstva. Njegova bahatost bila je obrnuto proporcionalna njegovom znanju.

Brzina je šampionska vrlina

Jedini kriterij koji je Stinky priznavao kod programera je brzina. Što brže naštancaš kod, to si veća faca. Nije bitno kako je on napravljen i koje je kvalitete, bitno je samo da što prije bude gotov kako bi aplikacija bila napravljena u roku i kako bi Žakro a posredno i Erich bili sretni. Nije čudno da je zbog takvog pristupa Stinky postao de facto head developer u Dodoniju, makar ga nitko službeno nije time proglasio. Ali iz odnosa njega i Žakra vidjelo se da je to tako. Druga je priča što se i uz takav pristup rokovi nisu stizali i što su klijenti bili nezadovoljni zbog buggovitih aplikacija pa su se neki accounti samo tiho ugasili. Ali, dok god je gazda Dodoni uz pomoć svojih poznanstava nalazio nove poslove, stvar je funkcionirala. Bilo je još dosta prilika za novo brukanje.

O Stinkyevom poslovnom moralu i etici Bojanu je jednom posvjedočio Bartol: "Jednom sam bio nasamo sa Stinkyem i valjda je mislio da mi čini milost pa mi je pričao svoju životnu filozofiju. Ukratko, rekao je da je njegov motto – radim koliko mi plate. Ako daju više, on će se više potruditi, a ako ne, onda će on raditi nabrzaka i bez grižnje savjesti stvarati smeće". Na stranu što je Stinky za svoje znanje imao sasvim solidnu plaću, on je bahat kakav već jest smatrao da je tih legalnih 1700 DEM ništa prema njegovom talentu za kojeg bi se otimale druge firme. Navodno je čak pred kraj svog boravka u Dodoniju tražio plaću od 3000 DEM ali čak ni Žakro i Erich nisu bili toliko ludi da mu to daju.

Primjeri koda za "coding horror" kolekciju

Kasnije je Bojan shvatio da je Stinky preuzeo način programiranja od Patrika i da je, ograničen kakav je već bio, mislio da je to jedini način kako treba programirati. Patrik je očito mogao i bolje ali mu se očito nije dalo, ali za ubogog Stinkya je to bio sav svijet. Uzalud je Bojan pokušavao uvesti neke drugačije standarde kao npr. Engine-Class-Collection arhitekturu ili ljepše i preglednije pisanje koda, Stinky bi uvijek radio po svom. Još i sad Bojana prolaze srsi kad se sjeti kako je Stinky napisao jedan modul u Bojanovom ASP projektu. Taj kod je toliko odudarao od ostatka aplikacije da Bojan jednostavno nije imao želuca da ga ostavi već ga je obrisao i napisao otpočetka. Taj "coding horror" kako bi rekao Steve McConnell u svom klasiku Code complete, imao je i ovakvih konstrukcija:
 
  for x = -1 to c
  if trs.EOF = true or x > 100 then
    exit for
  end if
c = c + 1
(neka business akcija)
next

Dugo je Bojan mozgao što je pisac htio reći s takvom nelogičnom konstrukcijom da bi na kraju shvatio da je Stinky prolazio kroz recordset od prvog do zadnjeg recorda i sa svakim radio istu business akciju. Kad ga je pitao zašto je umjesto jednostavne i svima razumljive Do until petlje za prolaz kroz recordset koristio ovu totalno čudnu i nelogičnu petlju u kojoj se brojač for petlje povećava unutar nje, Stinky je samo lakonski odgovorio, svojim pičkastim, iritirajućim sopranom: "Pa for petljica mi se u tom trenutku učinila zgodnijom". Da, i Bojanu se brisanje tog užasa i pisanje ispočetka isto činilo zgodnijim za mentalno zdravlje i za kvalitetu koda.

Nažalost, ne bi imalo koristi niti smisla da je to tražio od Stinkya. Stinky je mislio da je potpuno legitimno napisati nerazumljiv i teško čitljiv kod iz najmanje dva razloga:

  • Postaješ važan i nezamjenljiv jer nitko drugi ne shvaća što kod radi
  • Što kompliciraniji kod pišeš to si bolji programer. Onaj tko ga ne može shvatiti je looser.
U ovakvom shvaćanju posla i programiranja Stinky nije bio usamljen. Osim svog duhovnog oca Žakra, imao je još jednog vjernog sljedbenika u liku Tihomila Nikotinovića zvanog Maddog.
 
  Prije (Previous) Nastavak (Next)