Voda se polako penje..
Dva mjeseca nakon što je preuzeo Pras Bojan se riješio svih ostalih
projekata koje je programirao ili vodio. Nekako u isto vrijeme nazvao
ga je Erich i zatražio procjenu vremena kada Pras može biti gotov da
to može prenijeti klijentu. Bilo je očito da klijent već lagano kuha
jer nema nikakvih rezultata i umjesto aplikacije i njenih ekrana
stalno mora gledati Erichovu facu i slušati nove bajke zašto
aplikacija još nije gotova.
Bojan je Erichu smireno uzvratio da mu ne može odmah odgovoriti jer
bi to bilo neozbiljno već da mora napraviti projektni plan i sve
lijepo izračunati. Erich je jedva to pregrmio ali se vidjelo da je
nestrpljiv. Nekako u isto vrijeme je Bojan, nakon nekoliko prototipova
i desetina mailova s klijentom i Erichovim konzultantima, uspio
pohvatati većinu zahtjeva i steći neku okvirnu sliku koliko tu stvarno
ima posla. Iz njegove analize se jasno vidjelo da se stvarna brojka
kreće negdje između 10 i 12 čovjek-mjeseci, dakle "samo" šest puta
više od inicijalne procjene. U to nije bio uračunat dotadašnji rad
koji je već sam premašio onu početnu, šampionsku procjenu.
Iako ga je u početku bilo strah kako će Erich i klijent reagirati
kada se suoče s istinom i vide stvarne brojke, uspio se odhrvati
napasti i ostavio je u projektnom planu sve "nešampionske" aktivnosti
poput pisanja dokumentacije, code reviewa, testiranja i kontrole
kvalitete. Znao je da je ovo jedinstvena prilika da se počne raditi
pošteno i ako se to njima ne bi svidjelo, potražio bi sreću
negdje drugdje jer je dotad u srcu već raskrstio s Dodonijem i "našim
poduzetništvom" (vidi priču o plaći i dobiti).
Kada je klijent uskoro dobio pravi projektni plan u kojem je pisalo
da do kraja projekta mora čekati bar četiri mjeseca, prema Erichovim
riječima skoro ga je udarila kap. Ipak, kao nekim čudom, prihvatio je
i tu novu odgodu ali je zamolio da se rok pomakne mjesec dana prije,
jer je tada planirao prezentaciju Prasa za cijelu firmu. "Što im Erich
radi da sve to podnesu i ne šutnu ga u guzicu, da li ih možda
hipnotizira?" pitao se Bojan ne vjerujući da su šampioni još uvijek u
igri i da imaju 3 mjeseca vremena da u miru dovrše Pras.
Idila
Sljedeća dva mjeseca prošla su kao u nekom nešampionskom snu. Do
kraja je definirana funkcionalna specifikacija, razriješene su gotovo
sve tehnološke dileme i definirana arhitektura, napisani su svi
potrebni dokumenti i postavljena sva potrebna infrastruktura za
nesmetani rad. I najvažnije od svega, oformljen je relativno solidan
tim kojeg su činili Bojan kao voditelj projekta, Bartol kao database
developer, novopridošli Petar (vidi priču
o drugim šampionima) i suradnik Dražen kao web developeri. Jedino
je priču kvario Maddog kojeg je Žakro na silu ugurao u projekt ali za
njega su ionako bili rezervirani manji nebitni taskovi (primjer kako
je i tako male taskove znao usrati vidi
dolje).
Dakle, sve ljudi koji su znali raditi i imali dovoljno iskustva da
posao privedu kraju, naravno ako od početka do kraja budu full-time
angažirani u projektu. Osim dobrog tima ono po čemu se Pras razlikovao
od dotadašnjih šampionskih projekata bili su sljedeći faktori:
- Do kraja definirani i jasni zahtjevi: čitajući Mc
Connellovu knjigu
Software project survival guide, Bojan je došao na ideju da na
samom početku projekta napravi Korisnički priručnik u kojeg je
ubacio screenshotove iz prototipa. Na taj način je klijent već na
početku imao jasnu sliku što može očekivati od aplikacije i naravno,
u ranoj fazi projekta davati primjedbe i izmjene. Nakon što je par
puta revidirao i izsecirao priručnik, klijent je rekao da je to OK i
da se može krenuti u izradu.
- Definirana arhitektura i konvencije kodiranja: Pras je
bio zamišljen kao n-tier web aplikacija koja se sastojala od data,
business, workflow i presentation sloja. Svaki sloj je sadržavao
klase koje su obavljale točno određene poslove i komunicirale samo s
neposrednim susjednim slojem i nisu znale za ostale slojeve npr.
workflow klase nisu imale direktni kontakt sa bazom već samo s
business klasama ispod sebe. Iako je početno zamišljeno da data i
business sloj budu izvedeni kao COM komponente, od toga se odustalo
zbog zahtjeva klijentovog administratora da se na server ne ugrađuju
COM komponente već samo čisti ASP. Umjesto COM komponenti, slojevi
su implementirani u ASP klasama u VBScriptu.
Također, cijela arhitektura je dokumentirana tako da je bila
dostupna svakom članu tima. Isto tako je napisan code convention
dokument u kojem je detaljno objašnjeno kako se trebaju nazivati
varijable, funkcije, klase itd.
- Uvođenje novih tehnologija i edukacija članova tima:
Najočitija tehnologija koja je Prasom uvedena u Dodoni inženjering
je bio XML odnosno XSLT. Prezentacijski sloj prasa je bio izveden
pomoću XSLT templatea koji su prikazivali XML dobiven od workflow
klasa. Iako nitko u timu nije imao prijašnje iskustvo s XML-om,
Bojan je inzistirao na njegovom uvođenju jer mu je bilo jasno da
uskoro neće biti web developera koji ne treba znati XML i da je ovo
jedinstvena prilika da ga svi nauče. Zato je i u planu predvidio
učenje te tehnologije i nagovorio gazdu Ericha da se preko Amazona
kupi dobra knjiga o XML-u i XSLT-u. Koliko je ta odluka bila
ispravna, pokazalo je oduševljenje svih članova tima koji su brzo
prigrlili XML/XSLT uz komentare: "Kako smo prije mogli živjeti bez
toga?". Ne treba ni dodati koliko je to utjecalo na moral i dobro
raspoloženje u timu. Možda su po prvi puta neki od njih radili bez
osjećaja srama i osjećali da ne stvaraju ili krpaju šampionsko smeće
već da stvarno rade nešto dobro i kvalitetno.
Sve pobrojane karakteristike navele su novog člana Dodonija Petra
da nakon mjesec dana rada na Prasu kaže da je ovo najbolje organiziran
projekt na kojem je ikada radio.
Šampionsko otrežnjenje
U idealnom svijetu bi opisana idila imala sretan završetak, projekt
bi bio završen na vrijeme, klijent bi bio zadovoljan i Dodoni bi
stekao važnu referencu koja bi mu otvarala vrata za druge projekte.
Možda bi se na kraju godine brojala i velika dobit i davale povišice,
šampioni bi rasli i zapošljavali nove ljude. Niti ove legende
vjerojatno tada ne bi ni bilo.
"OK, stop!", rekao bi Erich na to. "Zaboravili ste na mudro
šampionsko vodstvo i njegov talent da uništi dobru priliku i kad nitko
ne vjeruje da je to moguće." U redu, Erich, sorry, zaboravili smo na
tebe i tvoje nikad do kraja razjašnjene sposobnosti kao poduzetnika.
Upravo su te "sposobnosti" dovele do toga da je Pras krenuo sasvim
drugim putem nego što su Bojan i ostali u timu zamislili. O čemu se
radilo?
Negdje krajem ljeta te godine, kad se Pras zahuktao do maksimuma i
kad su klase i XSLT-ovi nastajali kao na tekućoj vrpci, Erich se po
tko zna koji put pojavio u Zagrebu s velikim novostima. Okupio je sve
prisutne u sobi za sastanke i slavodobitno obznanio da će golema
Dembelijska osiguravajuća kuća kupiti DAMP. S obzirom da je firma kćer
te kuće već koristila web verziju DAMP-a (vidi
poglavlje DAMP na webu), bilo je logično očekivati da će je i
firma majka mirisati i ako recenzije budu pozitivne, htjeti uzeti i za
sebe. Prema Erichovim riječima, to se upravo i dogodilo, jedino
se naravno neće moći koristiti potpuno ista aplikacija već će trebati
napraviti verziju 3 koja bi trebala u potpunosti biti izvedena kao web
aplikacija i u koju bi trebalo ugraditi specifične zahtjeve novog
klijenta. Da ne ostane samo na tehnikalijama, Erich je odmah počeo
mahati i brojkama o par tisuća klijent licenci za DAMP i umjesto
zjenica u očima si mu mogao vidjeti $$$. Bio je sav izvan sebe, samo
se čekala pobjednička truba i povik "Hura, svi na DAMP!".
Da će novi klijent potpuno obuzeti Ericha i pomračiti mu ono malo
razuma što mu je ostalo bilo je jasno kada je Žakro dan poslije pozvao
Bojana na stranu i zamolio ga da nekako presloži svoj plan za Pras i
resurse jer da će Petar morati prijeći na izradu prototipa za novi
DAMP. "Pa, to je nemoguće, Petar je uz mene najviše u Prasu i
najiskusniji je developer, to će imati ozbiljne posljedice" s
nevjericom je odvratio Bojan. "Znaš ti Ericha, Bojane, kad se on
zainati, onda nema rasprave, ovo sa novim klijentom nam je prilika
života. Probaj smisliti nešto, ubaci Tihomila i Rudija, svi će
maksimalno pomoći. Vidio sam da radite i review koda, to bih i ja
mogao raditi, hoćeš li mi pokazati kako, baš me to interesira." gudio
je Žakro preneraženom Bojanu kojem se odjednom sav svijet srušio.
Jednim potezom uzeli su mu najvažnijeg developera, ugrozili rok
projekta i naravno, oni neće biti krivi kad projekt propadne nego on
zato što je kenjao s tom dokumentacijom i kvalitetom umjesto da je
sumanuto kodirao kao Stinky i lijepo sve stigao bez problema. Sve mu
je bilo jasno. Šampionizam je opet pobijedio. Još uvijek vidno
potresen, vratio se daljnjem radu na Prasu za kojeg je sad znao da je
osuđen na propast.
Baš mi je žao!
Otprilike u isto vrijeme kada je Pras bačen u pozadinu a novi DAMP
postao jedina stvar šampionskog postojanja, Bojan je dobio ponudu od
druge firme da prijeđe kod njih. Oprezan kakav je, stavio je na papir
sve pros i cons između šampiona i nove firme i na kraju shvatio da se
tu nema što razmišljati jer su šampioni gubili na svim frontovima.
Nove tehnologije, veća plaća, plaćeni topli obrok, bolja oprema, nova,
klimatizirana zgrada, tim stručnih ljudi - sve je izgledalo totalno
drugačije od Dodonija pa se počeo pitati zašto je tu i izgubio
dragocjenih petnaest mjeseci života.
Sljedeći dan je pozvao Žakra na stranu i uručio mu svoj otkaz. Ovaj
je lijepo odglumio da ga je to jako pogodilo. "Baš mi je žao, pa ti si
ovdje bio važna karika, pa kako to?" Po tome kako je brzo završio
žalovanje i počeo pričati o uvjetima otkaza i obavezama koje Bojan
mora izvršiti da bi mogao otići, bilo je jasno da je ustvari odahnuo i
da se još jednom, nakon Patrika, uspio riješiti opasnosti za svoju
stolicu.
Erich je s druge strane to podnio malo teže, pogotovo što je
iznenada počeo jako brinuti što će biti s Prasom i da li će ga Bojan
završiti prije nego što ode. Čak ga je počeo ozbiljno nagovarati da
ostane još mjesec dana, vidjelo se da ga je frka, nešto što nije
pokazivao prije dok je odgurnuo sve projekte osim novog DAMP-a u
stranu. Na svoju sreću, Bojan je ostao tvrda srca i inzistirao na
točnom datumu odlaska. Obećao je samo da će svog nasljednika dobro
uputiti u projekt prije nego što ode.
Epilog - što je bilo s Prasom poslije?
Da je Bojan dobro procijenio da ne smije obećati ostati u Dodoniju
do kraja Prasa pokazalo se u sljedećim mjesecima kad je od Bartola
doznao da se Pras pretvorio u beskonačnu trakavicu kojoj se ni ne
nazire kraj. Iako je Bojanov nasljednik bio dobar programer i dosta
stručan da nastavi tamo gdje je on stao, stvar je opet uprskao Erich
jer je pristao na potpuno nebulozne zahtjeve klijenta da se dizajn
baze drastično promijeni dva tjedna prije roka isporuke i da se u
zadnji čas provedu change requesti za koje bi trebalo duboko
zadirati u aplikaciju. Po toj nevjerojatnoj Erichovoj snishodljivosti
Pras nije bio nikakva iznimka u odnosu na druge projekte i bio je još
jedan u nizu kojeg je mudro vodstvo uspjelo svojom nesposobnošću
upropastiti.
Iako se ubrzo riješio šampiona i Ericha, pri pomisli na Pras Bojanu
je svejedno bilo žao što je prvi pravi projekt koji je vodio i koji je
stvarno mogao biti školski primjer kako treba raditi posao tako
neslavno i nesretno završio. Da Pras nije bio usamljen slučaj i da je
kasnije još veći i važniji projekt imao sličnu sudbinu, pročitajte u
jednoj od sljedećih priča Legende pod radnim naslovom DAMP-ova
treća inkarnacija.
Priča za
najupornije čitaoce: Maddog protiv A4
Jedan od rijetkih taskova koji je Maddog dobio u Prasu odnosio se
na prebacivanje jednog Word dokumenta u HTML oblik. Vjerojatno bi se
Maddog zadovoljio opcijom Save as HTML i ne bi ni pomišljao
optimizirati rezultat da nije bilo neugodnog zahtjeva klijenta: HTML
dokument mora ličiti na original iz Worda i mora se odštampati na
jednoj stranici. Ni u kojem slučaju ne smije prelaziti na drugu
stranu!
Kada je Bojan prvi put vidio dokument, kao iskusnom web developeru
mu je bilo jasno da se on može uz malo truda prebaciti u HTML, iako je
bio prilično nakrcan s informacijama i imao vrlo male margine.
Naravno, zadatak nije bio trivijalan i ne bi se dao riješiti samo
igranjem u Frontpageu nego je trebalo ući u HTML source i ručno
optimizirati.
Prva Maddogova reakcija na dobiveni zadatak je bila tipična: "Ah,
koji kurac ja sad to moram raditi, zar ne može netko drugi? Ajde,
dobro, daj taj dokument da ga sredim pa idemo dalje." I bacio se
delija na ono što je mislio da će biti čas posla. Ubrzo je shvatio da
mu ne ide i počeo je divljati. "Pa gle, sranje se stalno isprintava na
dvije strane. Klikam i mičem ove jebene tablice ali nikako da ih
stisnem", psovao je Maddog glasno i pritom naravno smetao ostale koji
su pokušavali raditi. Prošlo je tako par sati i onda je razljućen
odustao i vratio se svom solo projektu.
Sutradan je pitao Bojana: "Jesi li siguran da se to može? I oni
stvarno hoće da to stane na jednu stranu?" "Da, nažalost, mora biti
tako. A u čemu je problem?", odvratio je Bojan. "Ma ništa, budem
ja to već napravio, ionako sad nemam što knjižiti. A i onih 16 sati
što si mi isplanirao za taj task nije baš puno, mogao si staviti i
više" negodovao je Maddog. "Slobodno ti napiši koliko si radio, nije
plan sveto pismo" savjetovao ga je Bojan. "Haha, pa da mi netko
poslije prigovara da sam radio više nego što je trebalo. Ostavi ti
moje knjiženje meni" završio je konverzaciju šampion i vratio se borbi
s HTML-om i prokletim A4 formatom.
Nakon još par sati napikavanja, vučenja Petra za rukav i nekoliko
desetina isprintanih stranica, Maddog je slavodobitno bacio papir
Bojanu na stol. "Evo ti tvoja stranica, uspio sam!" Bojan je u čudu
gledao nešto što je otprilike ličilo na početni formular ali ni u snu
nije bilo egzaktna kopija Word dokumenta. Tada se sjetio pitati: "A
jesi li provjerio i iz Netscapea?" Maddogov bijes je narastao na još
veći nivo kad je shvatio da je uspio u Internet Exploreru, ali da mu
se iz Netscapea još uvijek ispisuju dvije stranice. "Prokleti
Netscape, tko ga je izmislio?" vikao je. I opet, nakon par sati
psovanja i vikanja, ponovno je bacio papir Bojanu na stol uz povik:
"Evo ga, i u Netscapeu je sada OK." I time je za njega stvar bila
završena, bez obzira što je formular jedva ličio na original i što bi
teško prošao kod klijenta.
Bojan se nije ni trudio dalje ga gnjaviti jer je znao da bi izgubio
živce i dragocjeno vrijeme. Umjesto toga uzeo je Dreamweaver i
uspoređujući s originalnim Wordom krenuo od početka izrađivati
formular. Za dva-tri sata formular je bio gotov i kad bi ga isprintao
iz Netscapea ili Explorera i stavio na svjetlo ispred originalnog
predloška, nije bilo razlike među njima. Čak je mogao ubacivati i
razmake jer mu je početna verzija zauzela tek 70% stranice. Kad je
nekoliko dana kasnije Maddog vidio Bojanov primjerak, samo se napravio
toša i procijedio: "Ah, vidim da si ga ti malo dorađivao."
Ova anegdota koja pokazuje da je Maddog bio najkorisniji kad nije
ništa radio još se više puta ponovila u DAMP-u 3 kojeg je vodio Petar
i koji je uvijek bio na sto muka kada ga je Žakro tražio da velikom
šampionu da nekog posla. Ali o tome u sljedećim pričama.
|