DAMP na webu
 

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)
  DAMP na webu
 
  Dva mjeseca nakon što je Bojan došao u Dodoni, počelo se govoriti o drugoj verziji DAMP-a koja bi se radila za novog klijenta, poznatu Dembelijsku softversku firmu. O prvom klijentu i njegovom zadovoljstvu prvom verzijom nije se puno pričalo, valjda se podrazumijevalo da ljudi tamo vrište od užitka kad god koriste tu aplikaciju i ne misle da im treba išta bolje. Tek ponekad je stigla neka bug lista i to je bilo to. Neki skeptik bi iz tog zaključio da je projekt blago preminuo i da klijent ne želi više imati posla s Dodonijem, što se kasnije i pokazalo točnim, ali u to vrijeme se takva pitanja nisu postavljala. A i svi su bili puni optimizma, došao je novi projekt i tko bi se još zamarao repovima prošlosti ili ne daj bože učio iz nje.

Optimistični početak

Da je stvar s novom verzijom postala ozbiljna vidjelo se kada je Žakro pozvao sve prisutne na ručak o trošku firme zato što je novi klijent potpisao ugovor i dao zeleno svjetlo za početak projekta.

Novi DAMP se trebao raditi na dva kolosijeka – postojeća desktop aplikacija se trebala prilagoditi specifičnim zahtjevima novog klijenta i trebalo je izraditi web aplikaciju za unos obavljenog posla (timesheet). U duhu workshopa po kojem svaki developer može biti project manager, ta čast je iskazana Stinkyu. On je ujedno bio i glavni developer desktop aplikacije. Ostali involvirani u projekt su bili Bartol kao database developer, Rudi kao report designer, Dražen kao VB developer i Bojan kao web developer. Maddog je kao i uvijek izmakao timskom radu jer je dobio jedan infrastrukturni projekt kojeg je sam radio i na kojem ga nitko osim Ericha nije provjeravao.

Jedina nepoznanica je bio Žakro – koja je sad njegova uloga ako je Stinky project manager?. Što će on raditi na ovako važnom projektu? Kontrolirati kvalitetu? Na sreću, Bojan će ubrzo pronaći odgovor na to pitanje, iako će ga to stajati dosta živaca.

Inače, Žakro i Stinky su na jednom od svojih privatnih sastanaka procijenili da će desktop aplikacija biti gotova za mjesec dana, a Bojanu, kojemu su u potpunosti namijenili izradu web aplikacije, velikodušno su dali još 15 dana, jer nisu znali koliko je dobar u tom području.

Prvi problem – a što ustvari treba napraviti?

Zadatak koji je dobio Bojan bio je definiran otprilike ovako, a prenio mu ga je Žakro: "Čuj, treba napraviti timesheet na webu. To će biti tvoj dio. Treba raditi isto kao timesheet u desktop aplikaciji." I to je bilo otprilike sve što je dotični imao reći na tu temu. Bojan bi svakako bio šokiran da je Žakro bio project manager jer bi očekivao bar neki plan, neke smjernice a možda u napadu optimizma i funkcionalnu specifikaciju. "No dobro", mislio je, "sada projekt vodi Stinky pa ću njega pitati. Žakro je vjerojatno sve prepustio njemu."

Kada je pitao Stinkya da li postoji nekakva specifikacija kako treba napraviti web timesheet, koje trebaju biti funkcionalnosti, koji workflow te da li postoji neki prototip ili dokumentacija, ovaj ga je u čudu pogledao i rekao: "Pa ne znam što ti nije jasno. To treba na webu raditi isto kao u DAMP aplikaciji. Pogledaj si prototip". Tada je Bojan prvi puta skužio da postoji nekakav prototip. Postojala je čak i nekakva minimalna dokumentacija, prvenstveno klijentov zahtjev, ali od nje nije bilo puno koristi.

Prototip pod motom "Zar postoje još neki browseri osim zadnje verzije Internet Explorera?"

Prototip kojeg je nekoliko dana drljao Stinky u Frontpageu izgledao je sasvim simpatično, možda i zbog toga što je stylesheet bio doslovno ukraden od MS Project Centrala i MSDN-a. Imao je stranice organizirane u tabove tj. bila je to DHTML imitacija Tabbed dialog kontrole, čestog UI rješenja u desktop aplikacijama a kojeg je koristio i MSDN u to vrijeme. Jedini problem je bio što je dotično rješenje radilo isključivo u Internet Exploreru jer su se tabovi renderirali skrivanjem i otkrivanjem DIV blokova što bi se u Netscapeu doslovno razletjelo po ekranu.

Drugi problem s tabovima je bio taj što ako u svakom tabu imaš tablicu sa nekakvim zapisima (projekti, taskovi, knjiženja), onda svi ti podaci moraju biti učitani na početku a ne on demand. Nakon što bi svi podaci bili učitani, onda bi se DIV-ovi s neaktivnim tabovima jednostavno sakrili u browseru, ali to ne bi umanjilo činjenicu da bi preko žice trebalo stići puno kilobajta HTML-a.

Tabovi nisu bili jedini "IE dependent" rješenje koje je upotrijebio Stinky. Drugo, još gore, je bilo vezano za dizajn tablica s podacima.  Naime, Stinky je izgled tablica riješio tako da bi prijelaz miša preko nekog reda napravio highlight tog reda. Klik mišem bi značio selektiranje tog reda i eventualno otvaranje nove stranice ili novog taba (vidi primjer):

Možete li vidjeti highlight i ručicu u Netscapeu?
red1        
red2        
 

To je jako efektno izgledalo ali jadan korisnik Netscapea bi se našao u sto muka kako selektirati nešto u tablici jer se highlight ne bi pojavio i klik mišem ne bi proizveo ništa. Budući da nije bilo nikakve alternative DHTML navigaciji, aplikacija bi za korisnike tog browsera bila potpuno neupotrebljiva.

Kad je Bojan pitao Stinkya što je s podrškom Netscapeu, dobio je odgovor: "Pa zar to ne radi i u Netscapeu? A dobro, ako i ne radi, neće valjda biti problem prebaciti da radi." Budući da je još vjerovao u znanje i autoritet glavnog developera, nije pomislio na mogućnost da je Stinkyevo znanje web programiranja skromno i da možda nikad nije radio ozbiljnu web aplikaciju koja bi podržavala oba browsera. Doduše, kad je mnogo mjeseci kasnije Stinky hladnokrvno ponudio da Bojan iskoristi kod iz njegovih VB modula u web aplikaciji s argumentom "Pa VB i VBScript su jedno te isto", iluzijama je bio kraj. Ali dotle još nismo došli.

Prototip u smeće i ajmo ozbiljno

Uvidjevši da je Stinkyev prototip pun ograničenja i da bi bilo muka na tome zasnivati upotrebljivo rješenje, Bojan je jednostavno složio totalno drugačiji prototip. Izbacio je tabove i napravio da se svaka cjelina otvara na posebnoj stranici. Tako je korisnik prvo vidio popis radnih naloga na jednoj stranici. Zatim bi odabirom jednog od njih otvorio novu stranicu na kojoj bi vidio popis knjiženja za naloge. Klikom na knjiženje otvarala bi se posebna forma za unos detalja.

Uveo je također browser-aware navigaciju tako da bi se u slučaju da korisnik ima IE, redovi u tablici selektirali s gore opisanim highlightom. Međutim, ako bi korisnik imao Netscape, tekst u ćeliji tablice bi se prikazao kao običan hyperlink pa bi i takav korisnik mogao normalno koristiti aplikaciju.

Muke s funkcionalnom specifikacijom

Da još više iziritira Stinkya, cijeli prototip je ubacio u dokument gdje je svaka stranica u aplikaciji bila detaljno opisana sa svim funkcionalnostima. To je ustvari bila potpuno napisana funkcionalna specifikacija. Nju je napisao iz nekoliko razloga, a najveći je bio taj što je htio prisiliti Stinkya i Žakra da konačno razmisle i definiraju koji će biti konačni scope aplikacije.

Naime, nakon što je Bojan napravio prvi normalni Netscape-friendly prototip, odlučio ga je pokazati Stinkyu da ga ovaj odobri i da kaže "da, to je to, možemo početi s razvojem same aplikacije i neće biti nikakvih velikih promjena". Tako je i bilo, Stinky nije puno žalio za svojim prototipom jer je bio do grla u poslu s desktop aplikacijom pa je rekao Bojanu da je to u redu, i dao je samo pokoju kozmetičku napomenu. Međutim, tada se umiješao Žakro.

Dan nakon što je Stinky odobrio prototip i kad je već Bojan mislio da je "good to go" da pristupi izradi samog rješenja i da duboko zaroni u kod, jer je funkcionalnost specificirana, na ekranu mu je iskočio pop-up poruka od Žakra "Alo, Bojane, oćemo malo sjesti?" To je bio Žakrov omiljen uvod u njegova mannagerska davljenja ubogih developera. Kad je Bojan sjeo do Žakra, ugledao je na ekranu svoj prototip tj. buduću DAMP web aplikaciju za koju je mislio da je gotova stvar jer ju je odobrio project manager Stinky.

I gle čuda, kao da jučerašnjeg razgovora nije ni bilo, udario Žakro po svakom dijelu aplikacije, da ne može to ovako, da bi bilo bolje onako, da bi ovo trebalo pisati tu a ne tamo i tako pola sata i iskasapio on cijeli koncept do neprepoznatljivosti. Bojan se nije snašao ni da pita "Pa dobro, tko je ovdje project manager, ti ili Stinky?" i već je morao temeljito mijenjati specifikaciju i prototip. Tada je shvatio bolnu istinu, koju mu je potkrijepio i Bartol, a to je da je Stinky samo fiktivni voditelj projekta, a da projekt stvarno vodi Žakro, a da stvar bude gora njih dvojica uopće nisu usklađena i svatko tjera svoju varijantu.

Ping pong Žakro-Stinky i pokušaj potpisivanja specifikacije

Potvrda za tu tvdnju stigla je sljedeći dan, kad je Bojan promijenjenu specifikaciju pokazao Stinkyu a ovaj je valjda bio raspoložen za malo menadžeriranja pa je i on kao Žakro krenuo daviti s detaljima, pa zašto ovo, bilo bi bolje ovako, pa daj ovo premjesti i tako to. Bojan je već počeo kuhati ali još je imao strpljenja za njih dvojicu. Međutim, strpljenje ga je opasno počelo izdavati kada ga je malo kasnije opet pozvao Žakro i kao da Stinky ne postoji, iznio nove ideje, promjene i vizije kako bi web aplikacija trebala izgledati. Tada je i pametnome bilo dosta.

Unio je Bojan zadnje promjene koje je čuo od Žakra, završio funkcionalnu specifikaciju i na kraju dodao mali paragraf koji je glasio: "Svi dolje potpisani slažu se sa gore opisanom specifikacijom. Voditelj projekta i uprava potvrđuju da je specifikacija potpuna i da se može prići dizajnu aplikacije i kodiranju, a developer se obavezuje da će aplikaciju napraviti u roku i po opisanoj specifikaciji." Ispod toga su bila tri mjesta za potpis - Žakro kao predstavnik uprave, Stinky kao voditelj projekta i Bojan kao developer.

Nakon toga je sazvao sastanak DAMP tima i predočio svim prisutnima završenu specifikaciju s mjestima za potpis. Bio je vidljivo uzrujan, već mu je bila puna ona stvar Žakra i Stinkya i njihove neodlučnosti, kalkuliranja i neznanja. Umjesto da oni kao menadžeri ili arhitekti aplikacije naprave specifikaciju što će se i kako raditi, oni su radije čekali da developer prvo nešto napravi a onda bi oni to popljuvali i odjednom bi im sinula hrpa ideja. "E pa sad se izjasnite da je to to i da mogu u miru raditi i završiti stvar bez stalnih izmjena funkcionalnosti" mislio je Bojan u sebi dok je gledao njihova lica dok su čitali dokument

Žakrova reakcija je bila tipično politička: "Pa dobro, možemo mi to potpisati, ali znaš, u svakom projektu uvijek ima promjena, pa ne možemo sve unaprijed odrediti, pa zašto te to toliko uzbuđuje, napravi nešto pa ćemo onda vidjeti je li to to, tako smo dosad uvijek radili, ne znam u čemu je problem?"

"U normalnom projektu nije developer taj koji mora čitati misli i pokušati shvatiti što mora napraviti već project manager u interakciji s naručiocem i developerima napiše funkcionalnu specifikaciju i onda je svima u timu jasno što treba napraviti i čemu težimo. Ovdje to nije slučaj" objasnio je Bojan.

"Pa to je sve lijepo, treba pisati dokumente, ali malo smo u stisci, a iako je Krunoslav voditelj, on ima puno posla oko desktop aplikacije, a ja imam druga zaduženja pa ne stignemo raditi sve te dokumente. Ali ti to jako dobro radiš, ovo je jako dobar dokument. Od sljedećeg projekta ćemo raditi tako" ulizivao se Žakro. "Nego, idemo vidjeti što je s drugim stvarima na DAMP-u"..

I tako je rasprava krenula drugim tokom, genijalci nisu potpisali dokument ali više nisu ni puno gnjavili. Ipak je Bojan stekao reputaciju picajzle za dokumentaciju i onog koji umjesto da odmah prione sumanutom kodiranju stalno nešto provjerava, pita i hoće sve imati gotovo. Dakle, definitivno se nije pokazao kao šampion.

Rok isporuke

Približio se tako rok za isporuku aplikacije klijentu i bilo je više nego očito da desktop aplikacija opasno kasni. Uzalud je Stinky ostajao duže proizvoditi copy-paste smeće a Rudi bio prisiljen s teoretiziranja prijeći na ipak malo konkretnog rada i štancanja reporta. Vremena je jednostavno bilo premalo. Žakrova i Stinkyeva procjena je bila preoptimistična čak i za šampionski način rada.

Smiješila se još jedna poznata šampionska isporuka tako dobro opisana u Šampionskom manifestu. Dakle, kodiranje do zadnjeg trenutka, izrada instalacije u dvanaest i pet, takozvano testiranje kod kojeg se instalacija potjera na praznom stroju i ako se aplikacija digne to je to itd. I bilo bi tako ali onda se Žakro sjetio spasonosne ideje. "Pomaknut ćemo rok isporuke za sedam dana i reći ćemo im da ćemo isporučiti sve, i desktop i web." Mogao je tako rezonirati jer je Bojan već priveo kraju web aplikaciju, dva tjedna prije plana. Makar je morao napisati i funkcionalnu specifikaciju i specifikaciju Bartolu sa zahtjevima na bazu i još uz to pazio kako programira - koristio reuse, izdvojio pristup bazi u zaseban modul, izolirao konstante u jedan fajl, intenzivno komentirao kod i izbjegavao šampionsku copy-paste metodu. Eh da, i napravio aplikaciju koja radi i u Netscapeu.

I tako su svi opet bili sretni i spokojni, pogotovo Stinky kojem je Bojan omogućio novih spasonosnih sedam dana programiranja, kako je on zvao višestruko ponavljanje operacija "Selektiraj postojeći kod - Ctrl-C - Klikni gdje treba - Ctrl-V - unesi izmjene, nikako ne komentiraj i proglasi gotovim".

Spokoj je naravno trajao do same isporuke kad se i nakon bonusa od sedam dana shvatilo da Stinkyeva tvrdnja "90% koda je gotovo, ima samo još nekih sitnica" zapravo znači "50% je donekle upotrebljivo, 40% je tek napisano i nije uopće debuggirano i trebat će još triput toliko vremena da se dovede u red". Tako je i ovaj put, u standardnoj šampionskoj maniri, klijent dobio nestabilnu aplikaciju punu bugova a gazda Dodoni nove razloge da se crveni i bruka pred njima. Ali šampioni za to nisu marili. Gazda će se malo ljutiti, Žakro će ga umiriti, doći će bug lista, to će se ispraviti i sve će opet biti po starom. Do nove isporuke i novih bug lista. 
 

  Prije (Previous) Nastavak (Next)