Tihomil je s
izuzetkom Žakra bio najdulje u firmi i često je običavao pričati o
prvim danima firme i o ljudima koji su otišli. Njegove priče su
potvrđivale tezu da je u Dodoniju fluktuacija kadrova bila
nevjerojatno velika. Nekontrolirani napadi
bjesnila
Tihomil je bio već dobrano zašao u tridesete, izgubio praktički svu
kosu pa je one reliquie reliquiarum redovito brijao. To mu je davalo
pomalo zastrašujući izgled pa se Bojan i danas sjeća njihovog prvog
susreta kada je Tihomil banuo u firmu nakon godišnjeg odmora i počeo
pričati dogodovštine s mora. Onako ćelav, duboka glasa i bahatog
nastupa izazvao je u Bojana pomisao: "Bože, kako li će biti raditi s
ovim bikom. Ako mu nešto krivo kažem, istući će me bez da razmisli."
I zaista, Tihomil je imao čudnu narav. Znao bi iz čista mira
eksplodirati i izderavati se na kolege a nedugo nakon toga smiriti se
i biti prijazan i smješkati se. Npr. ako bi mu zasmetao propuh umjesto
da kaže: "dečki ja bih zatvorio vrata sobe jer mi puše. Je li to u
redu?" Tihomil bi najednom počeo bjesniti i vikati: "Pa ja ću jednog
dana nekog razbiti ako vidim da ostavlja vrata otvorena. Meni smeta
propuh, je li to vama ulazi u glavu?"
Druga neugodna osobina mu je bila da je volio glasno komentirati
ama baš sve, od sadržaja neke zabavne web stranice koju je upravo
gledao do problema koje ima u kodu. Ako bi to nekom zasmetalo i lijepo
bi ga upozorio da drugi rade i da im treba tišina, Tihomil bi
pobjesnio i uzvratio: "A kad vi međusobno pričate to meni isto smeta
ali baš vas briga. E pa neću šutjeti!" Zbog takvih nekontroliranih
napada bjesnila Bojan je Tihomilu nadjenuo nadimak Maddog, inspiriran
nazivom računalne igrice Maddog McCree. Nadimak je osim Bojanu bio
poznat samo Bartolu koji je često bio žrtva Maddogovih izljeva
bjesnila. Odlučili su da zbog duševnog mira ne upoznaju Tihomila s
njegovim novim nadimkom jer se to njemu vjerojatno ne bi svidjelo.
Bilo je zanimljivo da su te neugodne osobine smetale jedino
Bartolu, Bojanu i Senki. Kad je Bartol jednom pitao Žakra zašto kao
šef ne ukaže Tihomilu da zašuti i ne smeta kolege dok rade, ovaj ga je
čudno pogledao i pitao: "A Tihomil puno priča? Nisam primijetio."
Očito se pravio Englez, možda zato što je sjedio u susjednoj sobi pa
nije morao direktno trpiti Maddogove komentare ili zato što mu se nije
dalo bosti s divljim bikom za dobrobit svojih ljudi i njihove
produktivnosti. Žakru nikad ljudi nisu bili važni, uvijek je prvo
gledao sebe i svoju komociju. to se tiče Stinkya, on isto nije
pokazao da mu smetaju Maddogovi neprestani komentari što je možda
objašnjivo time da su oni bili dobri pajdaši i često su išli zajedno
pušiti u sobicu za pušenje. Kasnije su Bartol, Bojan i Senkin
nasljednik Rudi problem riješili nabavkom slušalica i puštanjem
muzike, a Maddog je i dalje pričao i pričao, ali u prazno.
Veliki stručnjak i još veći jebač
Nakon što ga je malo bolje upoznao, Bojan je shvatio da je
Tihomilov nastup ustvari dobra fasada koja prikriva njegovu unutarnju
nesigurnost, kako privatnu tako i stručnu. Naime, iako je Tihomil
volio pričati kako je na moru karao strankinje koje su samo čekale da
uskoče u njegov rabljeni Daewoo, objektivnom promatraču je iz više
razloga bilo očito
da su to samo lovačke priče.
to se tiče stručne nesigurnosti, prvu najavu je Bojan imao od
Bartola, dok još nije ni upoznao Tihomila. Bartol je jednostavno
rekao: "čuj, što se tiče Tihomila, on ti jednostavno nije stručnjak."
I zaista, iako u početku nisu radili na istom projektu, Bojan je brzo
shvatio kolike su Tihomilove stručne kvalitete. Kod koji je radio bio
je u najboljoj maniri Stinkyeve škole programiranja ružan, na brzinu
sklepan Visual Basic kod sa hardkodiranim konstantama i SQL upitima,
copy-paste metoda za stvaranje novih funkcija i formi, konvencija
nazivanja varijabli "što kraće i nerazumljivije ime to bolje" pa je
tako njegov kod bio pun samorazumljivih imena kao x, xx, xxx ili x1,
x2. Kada bi ga čovjek upitao, riskirajući napad bjesnila, zašto je
tako kodirao, Maddog bi prostodušno odgovorio: "tako je brže". Mnogo
vremena kasnije Bojan je ponovno čuo tu frazu u kontekstu sljedeće
anegdote.
"Tako je brže"
U jednom programerskom društvu začeo se razgovor o najgorim
programskim rješenjima za koje je netko čuo. I tako je jedan od
prisutnih započeo: "U prošloj firmi za koju sam radio imali smo tipa koji je jednom
cijeli program u C-u isprogramirao unutar funkcije Main. Kada je kolega slučajno otvorio taj source, u čudu se pitao gdje su
moduli i funkcije i na svoj užas shvatio da je sve u Mainu. Daljnjom
analizom je unutar maina našao hrpu ponavljajućeg koda koji je autor
tamo nakotio copy-paste metodom.
Ubrzo se to pročulo pa su doveli autora tog horrora i pitali ga
zašto je tako isprogramirao. Ovaj je ne shvaćajući pitanje lakonski
odgovorio "pa tako je brže!" Netko je iz društva pitao kako se zove
taj genijalac da ga se predloži za neku programersku nagradu. "Tihomil
Nikotinović" odgovorio je upitani. Bojan se
tada umiješao: "Da, Maddog, znam, radio sam s tim majstorom". Opisana
anegdota se naveliko prepričava u programerskim krugovima i Maddog je
još za života ušao u legendu.
Majstor za "Copy-paste" metodu
Da je Maddogu također brže iskopirati hrpu koda i ne razmišljati
uopće o posljedicama, Bojan je shvatio kada je jednom naišao na
neobičan slučaj u kodu glavne DAMP aplikacije. Naime, u aplikaciji su
postojale dvije forme za unos podataka koje su nevjerojatno sličile
jedna na drugu samo su se drugačije zvale. Bojanov zadatak je bio da
proširi malo funkcionalnost tih formi. Pomnijim proučavanjem shvatio
je na svoj užas da su dvije forme funkcionalno potpuno iste, jedina
razlika je što se pozivaju s dva različita mjesta, s dvije različite
parent forme na koje se referenciraju u kodu na par mjesta zbog
refresha. Problem se mogao riješiti na dva načina:
- Parent na koji se forma referencira se mogao poopćiti tj.
umjesto da se referencira na konkretnog parenta tj. varijablu tipa
neke od formi u projektu, trebalo je uvesti generic parenta koji je
tipa Object. Na tom generic parentu se onda pozivaju strogo
definirane metode koji parent mora podržavati. To je ustvari
pozivanje objekta nepoznatog tipa koji podržava poznati interface,
situacija toliko česta u objektno orijentiranim aplikacijama. Tako
je to riješio Bojan i dobio jednu formu za dva različita parenta. I
da se eventualno pojavilo još n mogućih parenta, dizajn bi i dalje
funkcionirao.
- Na prvu formu koja se referencira na prvog parenta primijeni se
šampionska copy-paste metoda tj. forma se jednostavno iskopira,
zajedno sa kontrolama i svim kodom. U kodu iskopirane forme
referenca na prvog parenta zamijeni se referencom na drugog parenta.
Ako bi se pojavio treći parent, opet bi trebalo iskopirati formu
itd.itd.
I programeru početniku koji imalo razmišlja u duhu lijepog dizajna
i optimalnog koda jasno je da je prva varijanta bolja. Ali majstor koji
je radio te forme se odlučio za ovu drugu varijantu. Zašto? "Jer je
tako brže." Naravno, Bojanu nije trebalo dugo da detektira tko je
Speedy Gonzales. Ne budi lijen, otišao je u history verzija formi na
Source safeu i našao prvu, inicijalnu verziju druge forme koja je
nastala kopiranjem prve. Autor verzije taraaaam, Maddog!
Stručnjak kakvog bi poželjela svaka firma
Maddog je općenito imao nevjerojatno slabo i površno znanje u
gotovo svim tehnologijama. Bojan za cijelo vrijeme rada u firmi nije
primijetio niti jedno područje u kojem je Maddog bio dobar. Čega god
bi se prihvatio, uspio bi zasrati ili ne dovesti do kraja pa je to
morao završiti netko drugi. Sam je priznao da se do 1995 nikad nije
bavio programiranjem, ali nikad nije pokazao niti najmanju namjeru da
nauči malo bolje taj posao, da se školuje ili da pročita neku knjigu.
Kada je Bojan jednom donio u firmu vlastiti primjerak knjige "Code complete" i objasnio Maddogu
da je to programerska biblija, ovaj je
samo prezrivo odmahnuo: "Pa ja znam sigurno deset puta više nego što
piše u toj knjizi!"
Ipak, koliko god pričao, ipak je bio svjestan svojih nedostataka pa
je bježao od timskih projekata u kojima sudjeluje više ljudi jer je
znao da bi tamo sigurno ispao najslabija karika i da bi njegovo
neznanje došlo na vidjelo. Najviše je volio solo projekte u kojima je
mogao krasti bogu dane i gazdi Erichu sate a da ga nitko nije pozivao
na odgovornost. Tek ponekad bi ga Žakro pitao u kojoj je fazi na što
bi ovaj rekao: "Još samo malo ali skoro sam gotov. Nema problema" I
nastavio surfati ili skidati mp3-e. Većina takvih projekata su bili
katastrofa i samo su brukali gazdu Dodonija. Kad bi ga Erich pitao
zašto program ne radi kod klijenta, Maddog bi rekao da kod njega radi
i sasuo drvlje i kamenje na glupe klijentove administratore i na
njihovu opremu pa Erichu ne bi preostalo ništa drugo nego da mu plati
kartu da on sam dođe instalirati program kod klijenta. Maddog se ne bi
bunio jer je volio odlaziti u Dembeliju i poslije ljudima u firmi koje
to uopće nije zanimalo glasno pričati svoje dogodovštine.
Najčešće anegdote su bile vezane uz prijelazak granice jer je imao
dojam da ga carinici više pregledavaju od ostalih putnika i da ga
nepotrebno šikaniraju. To što je bio obrijane glave, mrkog izgleda i
nosio je crnu kožnu jaknu, crne hlače i čizme vjerojatno nije bio
razlog, prije će biti da su podsvjesno znali kakva veličina sjedi pred
njima i da su npr. iz čiste ljubomore tražili da pokaže koliko novca
nosi sa sobom.
Sistemaš poslije kojeg pomaže jedino
reinstalacija
Maddog je također volio sitne sistemaške i administratorske zadatke
kojih u svakoj razvojnoj firmi uvijek ima. Instalirati novi server,
instalirati novi service pack, instalirati neki novi softver,
napraviti setup aplikacije - nikom drugom se to nije dalo osim njemu.
Obožavao je iz čista mira preinstalirati neki važan server ili nešto
podešavati na svoju ruku bez da ikog išta pita, i u većini slučajeva
bi rezultat bio da nešto nakon njegove intervencije više ne bi radilo.
Jednom je tako prčkao po glavnom serveru na kojem je bila razvojna
baza i nakon toga je SQL server debugger blago i nečujno preminuo.
Bartol je bio ljut i pitao je tko je drkao po serveru na što bi Maddog
s aureolom iznad glave uzvratio: "Nemam pojma. Zašto mene pitaš? Zašto
svi misle da sam ja kriv ako nešto ne valja na serveru?"
Jednom drugom prilikom je dobio zadatak da napravi minimalni setup
koji bi na web serveru instalirao potrebne komponente Crystal reportsa
jer je web aplikacija generirala neke reporte pomoću tog popularnog
enginea. Nakon nekoliko dana prčkanja i popratnog vikanja i
izderavanja na glupi server, glupi crystal reports i sve drugo glupo
(osim njega, naravno) uspio je napraviti setup koji je za divno čudo
radio ali samo na NT4 serveru. Kada bi se isti setup pokrenuo na
Windows 2000 serveru, zaklao bi operativni sustav "k'o zeca". Tj.
sustav bi nekako radio ali čudno,i rušio bi se ako se npr. otvori
control panel.
Poslije je Bojan našao uzrok problema: setup je bio napravljen tako
da bezuvjetno instalira određenu verziju MFC dll-a u system
direktorij, bez obzira da li na sustavu postoji novija verzija. To je
funkcioniralo na NT4 jer je tamo verzija koju instalira setup bila
novija od sistemske. Međutim, isti setup bi na W2000 forsirano
instalirao stariju verziju tj. pregazio noviji MFC dll i na taj način
"ubio" sve funkcionalnosti u Windowsima koji ovise o toj novoj
verziji, a takvih je bilo dosta. Bojan nije nikad saznao zašto je
setup morao bezuvjetno instalirati određenu verziju dll-a ili ako je
već morao, zašto je nije instalirao u neki custom direktorij Da mu je
bilo stalo i da je upitao autora, odgovor bi vjerojatno bio negdje
između "tako je brže" i "jebi ga, više mi se nije dalo zezati s tim pa
sam napravio samo da radi".
Pranje je gubitak vremena.
I za kraj priče o ovoj programerskoj veličini, bilo bi nepošteno ne
spomenuti još jednu tajnu vezu koja je povezivala Maddoga i Stinkya,
osim pisanja užasnog koda i sklonosti cigaretama. Bile su to
higijenske navike. Isto kao i Stinky, i Maddog bi s vremena na
vrijeme, vjerojatno smišljajući nove algoritme i u kreativnom žaru,
jednostavno zaboravio oprati ili sebe ili svoju odjeću, a često i
oboje. Kod njega se to nije osjetilo kao kod Stinkya ali Bojan je imao
sreću da je sjedio na takvoj poziciji da struja zraka nije nosila ta
isparavanja prema njemu. Rudi, Senkin nasljednik, nije bio te sreće i
često bi kolutao očima kad bi osjetio neugodni vonj koji je dolazio s
kolege. Jednog dana
je čak došao s vonjem koji je Bartol opisao kao "miris zapišanog
klošara koji uđe u tramvaj". Jednom drugom prilikom se vjerojatno
najeo luka pa je ispustio tako otrovni oblak plina koji se širio brže
od vanilije i od kojeg su se skoro svi u sobi pogušili. Kad je vidio
poglede pune mržnje uperene prema njemu i začepljene noseve, Maddog je
samo procijedio: "Pardon!"
Ni Shakespeare se tog ne bi sjetio
Za razliku od higijenskih navika, stvar koja je povezivala Žakra i
Maddoga je bila kvaliteta govornog i pisanog engleskog, koji su
obojica bila prisiljena upotrebljavati. Kako zaboraviti tako
inovativne zahvate u izgovor poznatih termina kao što su npr.
"AdvEnced server" ili "akrobat rAJder". Maddogove mailove i dokumente
je zbog mentalnog zdravlja bolje ne spominjati.
|