Algoritmija – zemlja programera
Otkriću vam vam ovde premijerno jednu od najbolje čuvanih tajni na svetu:
“Programeri su magična bića koja žive u magičnoj zemlji Algoritmiji.“
Šokirani, zar ne? Niste očekivali? A tek kad čujete kako u Algoritmiji vladaju drugačija pravila igre: ne programira se za platu, Program na kome se radi se ne prodaje za novac, ne koriste ga stvarni ljudi već isključivo zamišljene nasmejane čikice sa izrazom iskrenog oduševljenja dok koriste Program.
U Algoritmiji niko ne “programira” – svi Programeri rade uvek i isključivo na najsavršenijim, najbriljantnijim i najlepšim i genijalnim umetničko naučnim kreacijama. Programeri u Algoritmiji preziru malograđanske okove vremenskih rokova – vremenski rok za izradu nečeg ima samo jednu ulogu – da mu se grohotom nasmeje kada se prekrši. Za svoj rad Programeri u Algoritmiji su plaćeni novcem koga Poslodavac materijalizuje sa najvećom lakoćom iz vazduha u neograničenim količinama pukim pucketanjem prstiju.
Bedna stvorenja zvana Korisnici nemaju (naravno) prvo glasa iz prostog razloga što nisu Programeri te samim tim ni kadri da pojme svojim ograničenim umovima smrtnika uzvišenost kreacije Programera zvane Program. Korisnici i sami znaju svoje mesto koje im pripada u izradi Programa, te tako strpljivo i ćutke sede u svom uglu sobe čekajući kao svaki dobar statista da ga prozovu kada komad izrade Programa dođe do scene gde on vadi novac iz novčanika i sa osmehom na licu ga da Poslodavcu te trkom ondmah nakon toga napusti binu.
Jedini strah koji programeri u Algoritmiji imaju je da ne završe slučajno svoj program. Zato se i na najmanji privid mogućeg napredovanja ka završetku napisani kod neumorno prepravlja u *bolje stanje*, prelazi na najsavremenije tehnologije lansirane tog dana (a u Savršeniji bar tih lansiranja revolucionarno novih stvari ima zaista mnogo), postojeći kod se briše jer se jasno uvidi da postoji rizik da takav neće odgovarati mogućim potrebama Korisnika koje bi on mogao imati za 24 godine.
Srbija (ni)je Algoritmija
Na moju veliku žalost, a siguran sam na žalost velikog broja mojih kolega, nedavno je otkriveno da Algoritmija ne postoji. Srbija je u mnogo čemu Algoritmija, ali ispostavilo se da na žalost to nije za nas programere. Radi se za novac, postoje korisnici koji besramno očekuju funkcionalni proizvod za svoj novac kojim (gle drskosti) mogu obavljati svoju poslovnu delatnost. Poslodavci em ne materijalizuju novac iz vazduha em još bezobrazno očekuju od nas Programera da za taj novac kojim nas plaćaju završimo programe na vreme i u odgovorenom obimu.
Cela situacija bi bila potpuni i katastrofalni poraz za nas programere van Algoritmije, da se mi programeri nismo dosetili načina borbe protiv toga: zažmurimo jako i trudimo se što više možemo da zamislimo da smo u Algoritmiji. Rezultati ove gerilske borbe su neočekivano dobri: procenat nezavršenih i nedovršenih knjigovodstvenih programa je sasvim na nivou proseka Algoritmije.
Jedini je problem sa celom gerilskom taktikom što se sa vremena na vreme poneko od Programera gledajući korisnike kako se zlopate sa “algoritmičnim programima” sažali na iste i obično odluče da im pomognu time što će napraviti najbolji program za knjigovodstvo. Pitanje na koji odmah nalete je koji je najbolji program za knjigovodstvo? Jedan deo njih bazira odluku na zahtevima korisnika pokušavajući da pokrije“uniju svih eventualnosti”. Drugi deo potpuno ignoriše korisnike i radi isključivo po sopstvenom nahođenju. Obe ove grupe uglavnom završe na sličnom mestu: sa rešenjem koje je manje ili više tehnički savršeno, sa rešenjem nafilovanim svim mogućim i nemogućim opcijama rada programa. Program naravno pokazuje u procenat tačno proces indeksiranja tabele FAK01 i PK23 u zadnja 2 reda ekrana. Sa takvim programom, nema šanse da se negativno odgovori na pitanje starog lisca knjigovođe: “A, da li može ovo?”. Može sve naravno – podržano je.
Da li je takav program koji može i radi sve – savršeni program za knjigovodstvo?
Po mom ličnom uverenju nije jer je “previše dobar”. U slučaju knjigovodstvenih programa po meni ne važi da “od viška glava ne boli” već naprotiv. Eto dođosmo napokon i do teme ovog članka, sledeće teze
Savršeni program za knjigovodstvo dakle nije najbolji program za knjigovodstvo,
već je to “neophodno dobar” program za knjigovodstvo.
Kako možeš…
“… da veličaš osrednjost kada ti u samom podnaslovu ovog bloga stoji kao proklamovani cilj Savršeni knjigovodstveni program po meri korisnika?“ – možda se neki od vas pitaju sad.
Kažu da slika govori više od hiljadu reči, pa ću se ja zato odgovoriti na to pitanjem koristeći grafikon potreba i zadovoljstva iz knjige Dilema izumitelja
Kao što vidite na grafikonu, ulagati u tehnološka dimenziju rešenja ima smisla samo do momenta kada rešenje postane “dovoljno dobro” po oceni prosečnog korisnika. Nakon toga se nivo korisničkog zadovoljstva ne podiže na tehnološkom planu već pouzdanošću, cenom, korisničkom podrškom, pametnim dizajnom i sličnim. Ovo je takođe u skladu sa Pareto “80/20” principom o kome sam pisao mnogo puta na blogu
Gore iznesen stav kad se prevede na jezik razumljiv nama programerima zvuči ovako:
”Prosečnog korisnika ne zanima uopšte šta se dešava *ispod haube*.”
To znači da nema smisla beskonačno prepravljati kod, nema smisla juriti beskonačno savršen dizajn baze, nema smisla juriti beskonačno savršeni model stvarnosti pre kodiranja i sl. Ovo naravno NE ZNAČI da nema smisla ulagati u održiv tehnološki dizajn i implementaciju programa, truditi se postići jasno razgraničenje programskih celina itd. Znači samo da ne treba biti prevelik fanatik u tome. Ima toliko stvari pametnijih u koje možete uložiti vaše programerske radne časove, a vreme je novac.
Kako možeš …
“… da razlikuješ sa sigurnošću ono šta ima smisla raditi od onog što nema smisla?”
Evo jednog metoda: uzmu se skupovi zahteva raznih korisnika i ono što je presek tih zahteva se odradi samo. Funkcionalni zahtevi korisnika koji su van tog preseka se jednostavno odbace ili odlože za nedefinasnu budućnost. Iako ovaj pristup funkcioniše kod nekih proizvoda, u slučaju knjigovodstvenih programa je neprimenljiv jer rezultuje polovičnim rešenjima koja svojim nedostacima onemogućuju efikasno vršenje poslovne delatnosti korisnika.
Ok, pošto očigledno ovaj pristup nije optimalan po meni, postavlja se pitanje koji jeste onda?
Za odgovor na ovo pitanje poslužiću se u ovom postu problemom o kome razmišljam dosta zadnjih nekoliko dana – uticajem ekranske rezolucije na optimalan rad programa za knjigovodstvo.
Ako pogledamo statistiku posetioca ovog bloga možemo videti da najveća grupa korisnika koristi računar sa 1024 x768 rezolucijom. Taj podatak je saglasan sa svim ostalim izvorima do kojih sam ja mogao doći.
Postavlja se pitanje dakle šta učiniti na osnovu te informacije.
Ja lično vidim tri opcije:
- izrada programa za 1024 x 768 i ignorisanje ekrana sa većom rezolucijom.
- izrada programa koji je prilagođen svim rezolucijama
- izrada programa koji je prilagođen *optimalnoj* rezoluciji
Ilustraciju implementacije na bazi prvog pristupa možemo videti na primeru Adacco programa za knjigovodstvo.
Po mom ličnom mišljenju ovo je nedovoljno dobro rešenje jer se sav taj neiskorišćeni prostor na primeru unosa mp računa mogao iskoristiti možda za prikaz kontekstnim korisnih informacija: istorija pređašnjih računa kupca, njegove otvorene stavke, stanje artikla na lageru itd itd.. Činjenica da su veličine svih prozora nepromenljive (te se prozor ne može uvećati i raširiti preko celog ekrana) takođe doprinosi mojoj ličnoj impresiji ovog rešenja kao nedovoljno dobrog.
Ilustraciju implementacije na bazi drugog pristupa možemo videti na primeru Microsoft Outlook Ribbon-a gde možemo videti da se alatna traka prilagođava ekranskoj rezoluciji.
Kada je ekranska rezolucija velika ikone su krupne i naglašene, sa punim tekstom.
Kada je ekranska rezolucija mala ikone izgube tekst i preurede se u skladu sa manjim ekranom.
Na prvi pogled, ovo rešenje izgleda idealno – zar je moguće da postoji bolje? Tehničko govoreći – jeste savršeno, ali nas to dovodi do poente ovog članka. Da bi dobio program prilagođen svim mogućim rezolucijama Microsoft je zaposlio sigurno veći broj programera da rade na tome. Veći broj programera koji rade na projektu je veća cena programa.
Ako to imamo u vidu, pitanje da li postoji bolje rešenje sagledano u kontekstu gore datog grafika se pretvara u
“Da li si korisniče spreman da platiš mesečno *30* evra umesto *20* da bi imao mogućnost X?”
Sagledavanjem rešenja iz ove pragmatične perspektive, dosta rešenja postaju predobra i predstavljena su u desnom gornjem delu grafika.
Optimalno rešenje je uvek ono rešenje koje je u najboljem interesu korisnika. Na primeru ekranske rezolucije koji koristim u ovom blog postu, to bi bilo rešenje optimizovano za 1280 x 1024 rezoluciju i jednostavnim skaliranjem na gore.
Slažem se da većina korisnika koristi 1024 x 768 na sajtu, ali da li je to u njihovom najboljem interesu – striktno gledano kroz novac?
Cena 19’’ ekrana je negde oko 70 evra i recimo da moraju da plate taj iznos.
Na troškovnoj strani, to dodatno ulaganje će im se isplatiti za nekoliko meseci samo kroz to da je program “20”, a ne “30” evra, a monitor ostaje.
Na prihodnoj strani, time što tokom kreiranja maloprodajnog računa vide otvorene stavke možda će uočiti neki neplaćeni račun, možda će videti u tom dodatnom prostoru da iako nemaju na stanju artikla X da stiže u toku dana iz VP skladišta i ostvariti dodatnu prodaju. Ispisano ime žene kupca u dodatnom prostoru koje omogućuje da pita:”A kako je Snežana?” može da pospeši prodaju pospešuje prodaju…. Ima milion stvari i načina kako se taj dodatni prostor može iskoristiti za pružanje dodatnh informacija prodavcu i samim tim povećanjem efektivnosti komercijalnog rada. Na taj način se za kratko vreme ostvaruje uvećanje prihoda koje pokriva investiciju u potpunosti, a monitor ostaje.
Na marketinškoj strani, kupac koji naručuje robu u preduzeću koje ima neke prastare 15” monitore od 35 kg imaće drugačiju sliku o tom preduzeću nego što bi imao kada bi tu bili 19” LCD monitori.
Da ne razvlačim dalje ovaj banalan primer, shvatili ste poentu sigurno
Dovoljno dobar program za knjigovodstvo je savršeni program za knjigovodstvo
Želim na kraju još samo da podvučem suštinu ovog posta gore ilustrovanu raznim primerima…
“Dovoljno dobar” program za knjigovodstvo je program koji je ni previše dobar ni previše loš. To je program kome su mogućnosti koje nudi izbalansirani pragmatični skup suštinskih funkcija koje knjigovodstveni program treba da ima. Balansiranje seta tih funkcija se ponekad vrši i na način koji kratkoročno gledano je protivan interesima samog korisnika, ali je i to odgovornost autora knjigovodstvenog programa kao profesionalca u toj oblasti. Korisnicima ne treba povlađivati bezumno, ali ih ne treba ni ignorisati potpuno.
Težnja ka tehnološkom savršenstvu programera neusmerena ka nekom od tih balansiranih ciljeva nema pragmatičnog smisla i kao takva je kontraproduktivna. Fokus programera zato treba konstantno proveravati da li je usmeren na stvarni problem, stvarnog korisnika i stvarni proizvod. Programiranje koje smetne sa uma svoju proizvodno – profitnu suštinu, vodi prekoračenju budžeta i vremenskih rokova i proizvodima čija funkcionalnost nije u najboljem mogućem interesu korisnika.
Šta vi mislite o ovome? Da li autori programa za knjigovodstvo trebaju da prave programe na bazi unije svih zahteva svih svojih korisnika? Da li se slažete ili ne sa mojim stavom da je ponekad i u interesusamog korisnika kada proizvođači knjigovodstvenih programa profesionalno preuzmu odgovornost na svoja pleća i donesu odluku protivno željama korisnika?
Ko po vama treba odlučuje kako i šta program za knjigovodstvo treba da radi?
Hvala na pažnji,
Nikola Od Algoritmije
Slažem se da postoje stvari koje „programeri“ treba da postave kao pravilo i ne odstupaju od toga…
(Inače „programeri“ su nezgodan izraz, programiranje je samo jedan mali deo kreiranja funkcionalnog sistema… Ljudi to teško shvataju…)
Mala napomena kod rezolucije:
U preduzeću u kojem radim imamo bar dvadesetak laptopova i većina ima rezoluciju 1280×800…
Tako da bih preporučio tu rezoluciju kao minimum.
Pozdrav!
Naravno da se slazem da je programer grubo uproscavanje stvarnosti (u mojoj firmi ima desetak razlicitih DEV funkcija), koristim ga samo figurativno.
Bas me iznenadio podatak o tolikim laptopovima – svi se oni koriste tokom celog dana za rad sa „knjigama“?
Razlog zasto sam iznenadjen je da u mom skromnom iskustvu sa klijentima obicno „gazda“ ima jedan (ili terenci) dok vecina komercijalista/operatera i sl. imaju desktop racunare (verovatno sto su jeftiniji i pretpostavljam udobniji za svakodnevno profesionalno koriscenje.
U svakom slucaju hvala na sugestiji, 800 pixela u vertikali je moj novi standard izgleda 🙂
Evo malo detaljnijih statističkih podataka iz moje firme:
9 desktopa – (1-2 po maloprodajnom objektu)
10 desktopa – knjigovodstvo u dva grada.
15 laptopova – komercijalisti
+ možda još koji laptop koji sam zaboravio 🙂
Zanimljivo je recimo da su zaposleni u knjigovodstvu sve žene i svaka ima svoj desktop računar 🙂
Svi komercijalisti – muškarci su dobili po laptop…
Nije tako bilo pre par godina, ali se u zadnjih par godina razlika u ceni smanjila toliko da je nabavka laptopova bila sasvim logično rešenje – pogotovo za komercijaliste koji idu i po terenu i rade i od kuće.
Veliki + za laptop varijantu je što imaju svoje baterije i samim tim svaki ima u sebi skoro svu funkcionalnost prosečnog UPS uređaja, što je relativno velika stavka u ceni desktop računara, a nažalost kod nas još uvek neophodna.
Naprimer, jedini razlog zašto u maloprodajama nisu laptopovi je što većina novih modela nema COM port za fiskalne kase….
Sve u svemu, treba računati na laptopove, a šefovi mi već par godina traži pristup svojim poslovnim podacima i sa svojih mobilnih telefona 🙂
Pitanje, koje deluje naizgled jednostavno, a u mnogome određuje kasniju sudbinu pograma.
Pravo je pitanje kome je program namenjen tj. šta je korisniku najvažnije
-prvo po pitanju veličine korisnika–broja radnh stanca id
-po pitanju važnosti – šta je najvažnije, brzina, sigurnost podataka ili nešo treće (DB bi verovatno inzistirao na sigurnosti kao prvom elementu)
-po pitanju delatnosti koju planiramo pokriti, trgovina (maloprodaja, veleprodaja), proizvodnja, uvoz, izvoz itd
itd
Ako se reši ovo pitanje, posle je sve lakše.
I tada korisnik mora da bude „zakon“, u smislu da ga se sluša širom otvorenih ušiju, ali to nikako ne znači (ma koliko platio) da svaki njegov zahtev trba ugraditi u osnovnu verziju paketa. U stvari, sem slučaja da se korisnik ne sluša uopšte, jedino je gore da se realizuje svaki korisnikov zahtev (zarad tako nedostajuće šake dolara). To dovodi do mora opcija za koje niko nezna kako rade i zašta služe (sa odgovorom „ma šta će ti to, to je rađeno za peru još…) ili da se lomi osnovna logika programa, tako da kako god se krene ne može da se stigne do kraja, jer je svko kalemio neki svoj deo, po svom nahođenju, bez jedinstvene niti koja to sve spaja u jednu logičku celinu. Pronalaženje te mere je ogroman poblem i trži čoveka iz prakse koji poznaje suštinske procese unutar firmi kojima je program namenjen.
Programerima je teško da shvate neke zahteve korisnika, jer teško mogu da zamisle situaciju u kojoj ljudi godinama rade u određenom programu, i da bukvalno znaju par osnovnih funkcija u njemu, i da je svako pitanje van toga preteško pitanje, a svaka najmanja promena dovodi do težeg stresa. Što manja firma stvar se usložnjava, jer relativno manje kvalitetan kada mora da rešava više stvari, manja je specoijalizacija. itd..