Neki dan sam čuo još jedan u nizu viceva o tome kako netko rješava problem sa zamjenom žarulje. Ovaj put su se na tapeti opet našli programeri...
Što kaže programer kada mu kažu da korisniku treba promijeniti žarulju?
- Sad bi još i žarulju mijenjali?!!
Dvorac od pijeska
Ako se nikada niste našli u situaciji programer-korisnik vic vam možda i nije smiješan. Oni koji su svjesni zapetljanosti tog klinča reći će da to i nije vic nego prava istina. Programeri i korisnici su dva različita svijeta. Svaki zahtjev od korisnika programer će osjetiti kao ulazak stranog predmeta u svoje tijelo. Nimalo ugodno. Programer gradi svoj kod kao što dijete gradi dvorac od pijeska na plaži. I onda dolazi val korisničkih zahtjeva koji sav njegov trud pretvara u hrpu pijeska.
Gerald Marvin Weinberg rekao je da kad bi arhitekti gradili zgrade na isti način kao što programeri pišu programe prvi bi djetlić razorio cijelu civilizaciju. Dobro, neki arhitekti stvarno grade zgrade na taj način i one se ruše, ali srećom, oni su u manjini. Programeri su sretni što umjesto čvrste i skupe gradnje imaju pijesak. Ako i dođe val ili neki nespretni kupač nagazi na dvorac od pijeska, nije problem sve srušiti i započeti ispočetka. Nije problem, ali treba vremena i gnjavaža je ponavljati posao koji ste već napravili.
Problem je u perspektivi
Osnovni problem u odnosu programera i korisnika, kao i u mnogim drugim odnosima, je nerazumijevanje koje proizlazi iz različite perspektive. Korisnik dođe programeru i kaže:
- Pa gle, ja ne vidim u čemu je ovdje problem, samo tu (korisnik neodređeno maše prstom iznad jedno područja na zaslonu) dodaš jedan gumb i problem je riješen.
Korisnikov problem bi stvarno bio riješen postavljanjem gumba koji bi pokretao određenu radnju, ali programer zna da za tu radnju treba natipkati brdo koda i još možda pomaknuti neki od kotačića koji bi mogao uzrokovati probleme ostalim gumbima, listama i korisničkim podacima.
Sigurno ste već vidjeli scenu u nekom filmu kad korisnik pritisne neku tipku, a kamera zatim ponire u mikro perspektivu čipova i brzo prolazi digitalnim krajobrazom. Tako i neki programeri, kad uhvate trenutak korisnikovog klika na gumb, u glavi vrte sav onaj kod koji se u tom trenutku izvršava.
Vožnja bez zaštitne ograde
Glavni razlog sukoba programera i korisnika je kad aplikacija ne radi ono što korisnik očekuje od nje. Takve situacije bi se izbjegle kad bi aplikacija bila dobro istestirana. Najveću grešku koju možete napraviti je da za taj posao zadužite programera. On zna kako se vrte kotačići, dok isprobava aplikaciju on u glavi vrti kod i neće svjesno napraviti ono što bi moglo izazvati probleme. Nešto kao kad bi napravili cestu na nekom brdskom području s puno zavoja i onda zbog uštede vremena (jer sve treba biti gotovo još jučer) i novca ne postavite svugdje zaštitne ograde.
Programer zna raspored zavoja i gdje nema zaštitnih ograda pa će svoju vožnju prilagoditi uvjetima koji su mu jako dobro poznati. Korisnik će nestrpljivo nagaziti na gas i izletjeti na prvom većem zavoju na kojem, gle slučajnosti, nema zaštitne ograde.
Budimo iskreni i recimo da programer nekad namjerno izostavi ogradu jer računa da nema budale koja bi se u tim uvjetima tako ponašala.
Programer u koži korisnika
Za poboljšanje odnosa nužno je bolje upoznavanje. Kako rijetko koji korisnik može ući u kožu programera i spoznati kod iznutra, na programeru je da napravi taj korak. Potrebno je pogledati aplikaciju očima korisnika, razumjeti njegove potrebe i način rada. Problematični korisnički zahtjevi su često takvi jer korisnik pokušava sam reći kako misli da bi se problem trebao riješiti umjesto da jednostavno kaže uzrok problema i da njegovo rješavanje prepusti programeru.
U vrijeme kad sam radio knjigovodstvene aplikacije skoro uvijek sam od korisnika tražio da mi pokažu kako bi svoj problem riješili na papiru, bez računala. Najveći problem su mi bili oni koji su to u Excelu baš super riješili pa to samo treba prekopirati u aplikaciju.
Kad cijelo vrijeme programer prima izvitoperene zahtjeve onda više ne raspoznaje ni one smislene. Ako je korisniku ‘crkla’ žarulja onda je treba i promijeniti. Nećemo ga valjda ostaviti u mraku?! Možda je baš u tom trenutku započeo ispunjavati virman s namjerom da programeru plati račun. ;-)