
Kada se govori o razvoju softvera, uglavnom su teme tehnologija, programski jezici, alati, okruženja i ostala tehnička pitanja. To i jesu ključne odrednice školovanja kadrova za poslove programera ili softver inženjera. Programi školovanja formalnog, ali i neformalnog obrazovanja akcenat stavljaju uglavnom na savladavanje tehničkih veština neophodnih za rad budućeg programera. To je svakako veoma važno, ali nije jedino što je potrebno da poznaje budući programer kada počne da radi.
Ono što predstavlja problem sa kojim se suočavaju programeri prilikom izlaska na tržište rada na realnim projektima sa naručiocem jeste poznavanje domena primene i potpuno razumevanje realnih potreba korisnika.
Za razliku od bilo koje druge delatnosti, zahtevi za softverskim rešenjem danas mogu doći iz bilo kog domena: industrije, finansijskog sektora, obrazovnog sistema, saobraćaja itd. Ne postoji oblast rada u kojoj nema korišćenja IT-ja ili primene nekih softverskih rešenja. Govorimo o beskonačnom broju domena primene. Programeri, naravno, ne mogu da poznaju sve te domene, ali moraju potpuno da razumeju zahtev da bi kreirali softversko rešenje za naručioca.
Pogledajmo jedan primer zahteva:
„Zahtev korisnika iz bankarskog sektora je da varijabilna kamatna stopa bude izražena u obliku referentne kamatne stope (EURIBOR) + doplata, na primer: 6M Euribor +1,5 (šestomesečni EURIBOR, povećan za jedan i po procenta). Doplata (u tom slučaju 1,5%) je u primeru kredita plaćanje banci za njene usluge i ostaje fiksna do kraja njenog isteka.”
Ovako nešto je razumljivo nekome ko radi u bankarskom sektoru, ali svima ostalima, pa i programerima, ovo je prilično nejasno. Razlika je u tome što programer treba da napiše programski kod koji će ovaj zahtev da obradi, ali da bi to uradio, prvo treba da ga potpuno razume. Formulacija zahteva ostavlja mnogo nepoznanica i naravno zahteva dodatna pojašnjenja, što znači da IT-jevci postavljaju dodatna pitanja, ulaze u razgovor i pojašnjenja sa naručiocem i koriste konsultanta iz domena primene ako je raspoloživ. Stoga su im potrebne veštine komunikacije, aktivnog slušanja i pregovaranja; nešto što nisu ni pomišljali dok su učili generičke kolekcije, SQL upite, MVC šablone, web API i druge tehničke teme.
Samo potpuno razumevanje korisničkih potreba daje dobru osnovu za svaki dalji rad i razvoj. Faza prikupljanja zahteva se često ne shvata ozbiljno – razvojni timovi teže da što pre počnu sa samim razvojem, a bez jasne i precizne slike o tome šta se i kako se razvija. I, nažalost, često i dešava da softver odlično radi, samo što klijent na kraju kaže: „Da, ali to nije ono što sam ja tražio”.
Autor: Goran Radić