Program za knjigovodstvo – moćan i fleksibilan
Gužva u džungli
30. oktobra 1974-e u Zairu se odigrao jedan od najboljih boks mečeva između aktuelnog svetskog šampiona Džordža Formena i Muhamed Alija – “gužva u džungli. Meč je trebao da bude rutinsko prebijanje Alija od strane Foremana jer je Foreman bio mašina neverovatne snage koja je jednog Frejzera u samo dve runde nokautirala 6 puta. Muhamed Ali je sa druge strane bio znatno slabijeg udarca i reputacije, ali mnogo pokretljivi i brži.
Čak ni komentatori pristalice Alija mu nisu davali nikakve šanse u duelu jer je sva logika i bokserska praksa govorila jasno u prilog da svestraniji Foreman pobeđuje. Rezultat ove istorijske bitke je dobro poznat: Ali je kao pčela plesao oko Foremana sedam rundi, potpuno ga izmorio i onda ga nokautirao nošen skandiranjem desetine hiljade Zairaca: ”Mumbaje Ali, Mumbaje Ali” (Ubij ga Ali…).
Ok, priča zanimljiva, ali kakve veze imaju knjigovodstveni program i gužva u džungli?
Suštinski se svodi na to da je to ilustracija kako se ispostavilo da je Alijeva brzina i pokretljivost postigla mnogo veći efekat od svestranijeg, spremnijeg i u svakom pogledu jačeg Foremana. Da prenesem tu analogiju polako sad na program za knjigovodstvo…
Features sell
Tradicionalno u segmentu poslovnih (eng. enterprise) aplikacija vlada nepisano pravilo “Features sell” što grubo prevedeno označava da je uspešnost prodaje poslovnog softvera direktno proporcionalno broju dodatnih osobina i funkcija koje on ima u poređenju sa konkurentskim programima.
Tačnost i delotvornost ovog pristupa potvrđena je tržišnim uspehom proizvođača ovakvih aplikacija u zadnjih nekoliko dekada, a primera takvih aplikacija je mnogo: od Microsoft Excell-a do skoro svih programa za knjigovodstvo domaćih i stranih. Programi ovog tipa su toliko načičkani funkcijama da se često porede metaforički sa “švajcarskim nožićem”.
O kompleksnosti tih aplikacija kao problemu po korisnika programa za knjigovodstvo sam već pisao, te ću ovde da se osvrnem na jedan drugi problem, a to je da je izrada i održavanje takvih projekta izuzetno skupa i zahteva veliki broj radnika, što čini praktično nemogućim “+1 tržišnu borbu” (imanje više funkcija od konkurencije). Kao ilustracija toga može da posluži da u “super teškoj” kategoriji knjigovodstvenih programa u SAD postoji samo jedna ozbiljna firma: Intuit.
Da li to znači da ne postoje druge firma u Americi koje rade knjigovodstvenim programima? Naravno da ne. Ostale firme uglavnom primenjuju taktiku patentiranu od strane Steve Jobs-a
“Ako ne možeš nekog da pobediš u nekoj igri, promeni igru.”
To se u praksi svodi na to da se konkurencija okreće rešenjima čiji je akcenat sa težnje na imanju što više funkcija pomeren na imanje što manje funkcija, a sve to na bazi logike da je većini korisnika u stvarnosti potreban samo jedan veoma mali broj funkcija kompleksnih i moćnih rešenja, te da svo to mnoštvo funkcija koje “teškaši” nude korisniku samo smetaju .
Primera ovih programa ima mnogo: od kanoničnih Google Docs-a i Basecamp-a do knjigovodstvenih programa poput Freshbooks.
Ja nisam pristalica ni jedne ni druge grupe, već moje opredeljenje ide u pravcu “što većeg broja pametno odabranih funkcija” . Jedan od ljudi koji je taj stav objasnio na maestralan način je Joel Spolsky, prema čijem iskustvu imam neizmerno poštovanje.
Ako vam slušanje predavanja na engleskom jeziku nije problem obavezno odvojite sat vremena za ovo.
Za sve nas prezauzete da odvojimo sat vremena za gledanje bilo čega evo jednog mog primera koji ilustruje takođe moj pristup na jedan “konkretan” način…
Procesi, a ne funkcije…
U jednom od mnogih četova koje sam imao sa Aleksandrom Saveskim, dotakli smo se tematike korisničkog filtriranja podataka prikazanih u tabeli.
Sasvim ispravno i u duhu rešenja iz grupe švajcarskih nožića, Aleksandar je izneo primer o tome kako je korisno imati mogućnost filtriranja podataka poslovnih partnera predstavljenih u tabeli po različitim kriterijumima koji čak mogu biti i povezani logičkim operacijama omogućavajući time fleksibilno i moćno filtriranje podataka. Ideja je takođe da se korisniku omogući da određene često korišćene izraze za filtriranje snimi i kasnije samo pozove iz liste predefinisanih filtera.
Evo vrlo grube ilustracija ideje takve tabele (nema veze nikakve sa rešenjem koje Aleksandar implementira)
Odmah da razjasnimo nešto: ovo rešenje je po mom mišljenju konceptualno sasvim na nivou najboljih programa i kao takvo implementirano u dosta svetskih programa. Drugim rečima, bez obzira na dalji tok ovog teksta, ne tvrdim da je rešenje pogrešno per se, samo nije u skladu sa mojom filozofijom građenja programa – dozvoljam verovatno pogrešnom.
Ja sam se naravno kao svaki pravi zagrižen programer odmah složio da je to moćno i fleksibilno rešenje, ali sam onda stavi svoju kapu “arhitekte” i krenuo da “glumim đavoljeg advokata” te ga zapitao koji je konkretan slučaj kad je filtriranje potrebno.
Po meni je vrlo neverovatno da će bilo koji korisnik doći do ekrana sa listom korisnika iz čiste dosade, uvek postoji neki razlog i izuzetno je bitno proniknuti u to na to koji proces iz stvarnog sveta rezultuje tim dolaskom korisnika na taj ekran sa listom korisnika.
Da li je to traganje za šifrom kupca koji sedi sa druge strane stola, nasuprot komercijaliste i čeka da poruči robu? Moguće – dosta programa ima tu funkciju, ali to što dosta programa implementira nešto na isti način ne znači neizostavno da je to ispravan način. Svaki kupac zna napamet jedinstveni PIB sopstvene firme tako da je sa tog aspekta pretraga partnera suvišan korak koji je moguće preskočiti direktnim odlaskom u unos računa, pitati kupca koji mu je PIB i njegovim ukucavanjem momentalno odrediti kupca računa.
Evo scenarija koji je Aleksandar spomenuo i koji na prvi pogled je očigledan dokaz svrsishodnosti filtera.
Šta ako je izvođaču građevinskih radova potrebna lista građevinskih radova koji su završeni, a koji nisu naplaćeni? Zar to nije savršen slučaj za filter od dva elementa i oni dobiju izveštaj kakav njima treba?
Na prvi pogled, diskusioni nokaut dostojan Alijevog iz 7 runde. Moj odgovor (naravno) je bilo opet pitanje zašto je ta lista treba korisniku uopšte? Šta će on sa njom da uradi jednom kad je vidi na ekranu?
Objašnjenje je bio da korisnik na bazi te liste kreira račun za izvršene radove koji ispostavlja naručiocu radova – što nas dovodi do ključnog dela ovog teksta – ilustracije mog stava
Korisnika ne zanima funkcija “filtriranja liste radova koji su završeni i neplaćeni”.
Ono što njega zanima je automatizacija procesa “fakturisanje neplaćenih radova”.
Grubo i čisto hipotetički ilustrovano, ne treba njemu tabela sa filterima, grupisanjima i sortiranjima, već jedno jedino “dugme” koje kad klikne mu otvori ekran za unos računa kod koga su kao stavke uneseni automatski svi završeni, a neplaćeni radovi. On onda prođe brzo kroz tu listu i izbaci stavke koje neće da fakturiše i to je to.
(Ako se uvek fakturišu SVI neplaćeni radovi ni korak sa pregledom računa ne bi bio potreban – pritisak na dugme i faktura izlazi)
Korisnici, a ne mi (programeri)
Najveći problem u pravljenju poslovnih aplikacija je u tome da ih prave programeri, a ne sami korisnici. Kada to kažem naravno da ne mislim da su programeri glupe i nesposobne individue, naprotiv spadaju u društveni vrh po tom pitanju. Ono na šta mislim je da su po definiciji programeri ljudi tehničke edukacije ili bar “skloni tehnici” i kao takvi fokusirani na implementacino–tehničke aspekte programa.
Ko bi mogao od programera odoleti tako savršenoj tabeli koja automatski radi grupisanje, sortiranje, zamrzavanje, pretraživanje itd – sve bez ijedne linije koda?
Usled te opčinjenosti alatima, programskim jezicima i sličnim tehničkim aspektima veoma je lako smetnuti sa uma da svi ti alati služe modelovanju i automatizaciji stvarnih poslovnih procesa korisnika programa i zameniti taj pristup potpuno obrnutim pristupom gde se stvarni procesi prilagođavaju alatima.
Koliko puta ste pomislili ili čuli nekog da kaže nešto poput
“Ova tabela korisnička kontrola je super cool, pitam se kako i gde bi smo mogli da je koristimo u programu?”
Zaključak
Dobar knjigovodstveni program nije ni švajcarski nožić ni “glorifikovani text box”. Dobar knjigovodstveni program menja “fleksibilnost” za “fokusiranost”, orijentaciju na opcije koje “mogu da podrže bilo koji korisnički zahtev” sa orijentacijom na “obuhvatanje i sažimanje procesnog koraka više”. Dobar knjigovodstveni program pokušava da što više i što verodostojnije reflektuje poslovnu stvarnost – ne očekuje od korisnika da se prilagodi programu, već je on prilagođen njemu.
Evo i nekoliko mojih pitanja za sve Vas:
- Koliko ima funkcija knjigovodstveni program za koje niste ni sigurni kako rade?
- Da li smatrate da preterujem u “pasiranju hrane” i da je “moćna tabela sa filterima” baš ono što vama treba?
- Ako ste u poslu izrade knjigovodstvenih programa, molim vas kažite da li u svom programu pratite “+1 pristup” i nadmašite konkurenciju u pogledu šta sve vaš program ume ili imate neki drugi pristup?
- Ko je u pravu bio: Aleksandar ili ja?
Vaš procesno orijentisano piskaralo,
Nikola Malović