To je to što me zanima!

Zašto je korisnik programeru nerijetko "najgori" prijatelj?

Osnovni problem odnosa programer-korisnik, kao i u mnogim drugim odnosima, je nerazumijevanje koje proizlazi iz različite perspektive i pogleda na određeni problem
Vidi originalni članak

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. ;-)

Idi na 24sata

Komentari 17

  • EvEvil 12.05.2012.

    hahahhaaha! kao da radite u mojoj firmi! :D (btw, odvalila sam se na vic!:)))

  • BrunoBožić 28.04.2012.

    Ukratko se to može reći ovako; napraviti FINALNI produkt nije moguće u jednom ciklusu, stvaranje dobre aplikacije podrazumijeva dugoročni međuodnos između korisnika i programera, gdje se u (ako treba) i više stotina interakcija mijenjaju funkcije aplikacije. Iako je navedno nešto sasvim normalno, POSLODAVAC je taj koji ne želi čuti za to jer bi to značilo da se ne može uzet novac na kratak rok i uzeti novi projekt. No poslodavčeva je zadnja, uzima se desetak projekata istovremeno i svi imaju biti DOVRŠENI u točno određen broj radnih sati koji ne uključuje daljnje izmjene jer bi to bilo pogubno po poslovanje (izgled kojeg definira poslodavac u svojim mokrim snovima). Sve priče tipa "dobar programer uvijek radi dobar kod" i "treba komunicirati i prilagođavati aplikaciju" su u našim uvijetima utopističke. 1% programera ima privilegiju da mu poslodavac dozvoli i dokumentiranje koda, i programiranje usmjereno na testiranje mikro-jedinica programa, i sakupljanje podataka o zadovoljstvu korisnika itd. Najveća većina ima parsto radnih sati da jednom za svagda dovrši projekt te da se taj projekt više ne dira - iliti kako poslodavci kažu "da se više ne gubi vrijeme na nešto za što smo rekli da je gotovo". Postoji razlika između prozaičnog dobrog programera koji ima vremena raditi the ultimate klase s the ultimate objektima koje je kasnije lako dopuniti novim property-ima i the ultimate error handlingom i loggingom i jetija, a to je da je jeti navodno viđen. Dok se nisam prvi put zaposlio kao programer i ja sam radio the ultimate komade koda, no ta se iluzija, da se tako radi ovaj posao, nasilno rasplinula s prvim danom rada u profesionalnoj developerskoj okolini.

  • djob 28.04.2012.

    Ovo je previše generalizirano. Ključna riječ ovog članka je loš programer. Dobrom programeru, koji ima dobru 'arhitekturu' koda itd, nikakva izmjena neće moći "kulu" pretvoriti u "hrpu pijeska".

Komentiraj...
Vidi sve komentare