Softver zanatlija II

Ako ste tek skočili na ovu stranicu, možda prije toga ipak da pročitate prvi dio: Softverski obrt/zanatstvo.

Dio I. Ideologija i stav

Razvoj softvera u XXI vijeku

Prije nešto više od 20 godina dok smo sestra i ja bili studenti, mahsus je kupila neki časpis za koji je njen profesor dao interfvju (razvgov novinara i neke ličnosti koji se objavi u medijima). Nakon što je pročitala, sva onako ushićena i istovremeno tužna kazala je riječi koje mi i dan danas odzvanjaju u ušima: “Jao kako je ovaj čovjek pametan. Ništa ga nisam razumjela šta priča.”

Nije važno koji je to čovjek bio, ali je veoma važno na koji se način izražavao i zašto je moja sestra izgovorila upravo to. Na to sam ja kazao (naravno, kao i svaki inžinjer, logičar, matematičar, …) da to nije znak nikakve pameti, čak naprotiv. Ako se neko, posebno visokoobrazovana ličnost i još uz to s titulom akademik, možda, ne zna izražavati tako da ga potpuno jasno i nedvosmisleno razumije i neko bez škole i neko ko je visoko obrazovan, takav je ustvari ništa drugo nego oholi manipulator.

Sandro nam u ovom poglavlju upravo priča o sličnim pojavama u razvoju softvera. Ako je neko u stanju da piše takav kôd da ga drugi ne razumije, onda se svi odjednom takvom dive i više ga nikako ne smatraju početnikom, nego starijim (senior) kolegom. Veli on, nako mnogo raznih sastanaka, konferencija, predavanja, prikupljenih par certifikata iz Java programskog jezika, svakodnevnog rada s alatima za modeliranje (UML – Unified Modeling Language), te slijedeći mustre poput GoF (Gang of Four) i Core J2EE, šta sam mogao drugo nego da pomislim nego da sam neko i nešto. Jednostavno, jednoga dana odlučio sam da se više ne zovem developerom (razvijačem), ili nedaj Bože, programerom ili koderom. Te je tako odlučio da će od danas (jednog dana s kraja devedesetih), a nakon sedam godina karijere, da se naziva softver arhitektom. Svakako nastavio je s praksom zamršenih stvari gdje god je imao priliku, jer tada, u tim godinama to se zvalo senioritetom i dizajnom softvera.

Uočavam u zadnjim godinama da profesor spomenut na početku ima veoma drugačiji stil izražavanja. Još uvijek to nije na onom nivou kako bi bilo dovoljno po mjerama jednog inžinjera (sve fino rastavljeno na proste faktore, bez da se išta podrazumijeva), ali u mnogome bolje. Valjda je to neki proces odrastanja, sazrijevanja svakog čovjeka. Ako čovjek doista ide u smijeru sazrijevanja, onda se iz godine u godinu može primijetiti njegova jednostavnost. Jednostavnost u svemu, ali može se primijetiti i velika odmjerenost, mudrost, znanje, iskustvo iza svake izgovorene riječi i svakog djela. Ne treba biti preveliki mudrac niti znalac da se to primijeti. I upravo takve ljude najviše volimo i najviše cijenimo u našem društvu. Sada dok ovo čitate, moguće je da vam naumpada neka osoba iz vaše mahale koja nije posebno školovana čak, ili pak neki vaš omiljeni profesor ili predavač s jutuba. Ali u svakom slučaju, rijetki pojedinci.

Sandro je ipak jednoga dana odlučio da više ne bude arhitekta, da ne bude taj čovjek s “statusom”. Nešto čemu su tadašnji (a i mnogi današnji) programeri itekako težili i vidjeli skoro ka vrhunac karijere. Kada se ima pozicija softverskog arhitekte u nekoj, ne tako beznačajnoj firmi to u osnovi znači:

  • Staž, priznanje – jer posebno valja zapaziti da ne postoji junior i senior arhitekta, zar ne?
  • Moć – može se ljudima narediti šta da rade i kako da rade.
  • Superiornost – u poređenju s drugima, posebno svim tim silnim programerima, ma koliko iskustva i znanja imali.
  • Vidljivost, primjećivost – zbog svih “mudrih” stvari o kojima se priča i raznih, uglavnom nerazumljivih, dijagrama, menadžerima se itekako zapada za oko,
  • Napredovanje – iako se ima već titula, status, napredovanje je mnogo značajnije. Nije ista povišica od 10% na platu od 1000KM i na platu od 5000KM, zar ne?
  • Šira odgovornost – ima se pogled na širu sliku, tzv. Big picture.

Zbog te njegove odluke, ali i nekih drugih, mi smo u prilici da čitamo ovu njegovu knjigu i uzimamo pouke i poruke.

I još napomena za kraj ovog poglavlja. Ovdje se ne radi o tome da je arhitektura softvera bljak ili da je to samo nepotrebno mudrovanje, ako je kojim slučajem to neko zaključio. No, valja biti pošten prema samome sebi prije svega, pa izabrati da se u životu radi posao koji se doista voli, u kojem se osjeća strast, koji nas ispunjava. Možda je neko npr. studirao mašinstvo i ima zvanje inžinjera mašinstva, ali ipak voli da radi kao automehaničar. Mi treba da poštujemo odluku takvih ljudi, jer on popravlja auta zato što to voli, uživa u tome i vjerovatno je najbolji majstor nadaleko, nego da radi inžinjerluk koji ne voli, u kom ne uživa u kom nema strasti za poslom.

Senioritet

Napredovanje u karijeri je na Zapadu itekako problematično, a u zemljama tzv. Istočnog bloka u koje je htjeli mi to ili ne spadala i bišva Jugoslavija još i problematičnije. U to je više problematičnije što je jedan nakaradan sistem odgoijo par generacija i već “napravio” mentalitet kakav je napravio razvaljen uz neviđene turbulencije u postavkama sistema – agresija, rat, ratna dešavanja, odliv kadra, profiterstvo, …

Tako da se mnogi i dan danas, pa čak i ako nisu imali radnu karijeru iz predratnog stanja, vode logikom da to što su stariji zalužuju više. Ako imaju više godina, znači i veća plata, bolji status u firmi, a što ustvari prevedeno na jednostavan, prost jezik znaci: što sam stariji, moram manje raditi, više naređivati i imati veća primanja.

Lezi hljebe da te jedem!

Nije mala skupina ni onih koji su u jednom periodu svoga života bili itekako požrtvovani, pa bi to iskorištavali (zloupotrebaljavali, da budemo precizniji) do kraja života. Oni misle da zato što mogu da zakače neku značku za rever, da svi treba da im ugađaju k’o čiru na stražnjici.

Isto je i u programiranju, i upravo u ovom podpoglavlju o tome govori Sandro u svojoj knjizi. Ljudi misle da zato što su jednom naučili nešto, u tome možda dobili neki certifikat (iako je sva ta tehnologija zastarila i niko je živ više ne koristi), treba da svima trljaju nos s time i da govore: Eeee, ne znate vi kako je bilo u naš vakat.

Nije isto imati deset godina iskustva samo na jednom projektu i samo u jednoj firmi i jednom timu i imati deset godina iskustva na 10 različitih projekata (što uglavnom uključuje mnogo više različitih tehnologija, metodologija, pristupa, …) i možda još u 10 različitih firmi ili timova.

Senioritet je relativan, prolazan, u svijetu razvoja softvera zaključuje Sandro.

Nova (brutalna) stvarnost

Do prije svega 10tak godina programer je mogao da bude samo i jedino onaj koji piše kôd. Pročita opis zadatka, prioni na rad, završi, prezentuje i to je to. Danas, programer osim toga što svakako mora znati da piše kvalitetan kod jer mu je to primarno zanimanje mora da zna još i da razgovara s klijentima (unutar ili izvan firme), automatizira testove, implementaciju, donosi odluke o tehnološkim izborima, radi u tzv. distribuiranim timovima. On mora da ne samo razgovara s klijentima, nego da im pomogne da se iznađe pravo rješenje i prioritiziraju stvari. On mora i da pravi izvještaje o napretku, i da ih stalno unaprjeđuje. Mora da zna upravljati kriznim situacijama, biti vješt u upravljanju promjenama i očekivanjima. Programer danas mora da ima i vema dobre prezentacione, govorničke sposobnosti i vještine. On također mora biti dobar u razgovoru s drugim kolegama, posebno kod razgovora za posao, ondosno prilikom procesa regrutacije novog kadra. Mora razumjeti ne samo arhitekturu softvera i poslovnu logiku, nego i zahtjeve menadžmenta u smislu ekonomskih zahtjeva i u skladu s tim planirati i reagovati.

Ovo prečesto ne razumiju i veoma teško se prilagođavaju starije kolege i kolegice. Oni koji su već radili po 10 i više godina u IT-u i sada odjenom moraju da napuste svu tu praksu i počnu neki novi život i još uz to svakodnevno da uče i usavršavaju se.

Ovo također i prečesto ne razmiju i mladi ljudi koji tek završavaju fakultete, jer ih niko na tim fakultetima ne uči da će morati biti sve ovo gore nabrojano. Rijetki su fakulteti u svijetu koji idu u korak s modernim trendovima i studente pripremaju za tržište.

Sve ovo gore nabrojano, ali i ono što nije, a što programer danas treba da zna, nekada je, ne tako davno, predstavljao ne tako mali tim ljudi. Svi oni su morali biti iskusni, s vještinama i znanjem, sada je to “strpano” sve u jednog čovjeka. I upravo zbog toga, jer ljudi nisu mašine, valjda precizno definisati šta jedan programer treba da zna i kakve vještine da ima iz određenih oblasti. Ne moguće je znati sve!

Tu je u razvoju softvera mnogo pomogla revolucija nastala 2001 godine zvana: Agilnost. Ali, evo i nakon 19 godina od tada, još uvijek programeri ne znaju šta trebaju da budu (ili šta trebaju da rade), šta trebaju da uče, koje vještine i znanja da usvajaju. Softveri su još uvijek nekvalitetni, skupi, sporo se razvijaju i još sporije unaprjeđuju itd itd.

4

Hits: 90