U utorak 15.06. u 18h organizovali smo online druženje sa programerima. Tema su bile greške koje prave programeri, a panel je bio namenjen svima, bilo da su na početku svoje karijere ili već imaju višegodišnje iskustvo u ovom poslu. Razgovor je bio veoma dinamičan, svi koji su prisustvovali mogli su da postave pitanja i dobiju odgovore iz prve ruke. Odgovori i saveti bili su konstruktivni, a diskusija od samog početka živa i informativna.
Svoja zanimljiva iskustva sa nama podelili su stručni, ali hrabri programeri:
- Olivera Gavrilović, JavaScript Developer (Levi9)
- Milivoj Kovačević, Software Engineer (Symphony)
- Sebastian Novak, Lead Software Architect (VegaIT)
Moderatorka panela i koordinatorka HelloWorld tima na prirodan način započela je diskusiju navodeći grešku koju je ona napravila i tako motivisala ostale učesnike da slobodno podele svoja iskustva.
Greške su sastavni deo svakog posla, i dešavaju se uglavnom na početku karijere, a neki od razloga su prevelika motivacija koja sa sobom nosi želju za dokazivanjem i brzopletost.
Panelisti su nam naveli neke svoje početničke greške.
"Moj danak neiskustvu je bio što nisam znala kada je proizvod dovoljno gotov da bude isplativ. Prvi feedback mi je bio da ne stajem na vreme, da peglam stvari koje možda nije potrebno peglati, otvaram opcije koje možda nije potrebno otvarati za tržišnu cenu tih proizvoda u tom trenutku", prisetila se Olivera.
"Dobio sam zadatak da dodam filtriranje koje nije postojalo na nekoj tabeli. Naravno kada pokreneš sve to radi, onda dodaš uslov i ne pokreneš ponovo već ga tako pušuješ i to stigne do klijenta neistestirano. Nažalost, verzija koja nije trebala da ode klijentu je otišla, ali, na sreću, to je bilo samo dobavljanje podataka i nije imalo uticaja na izmenu nečega pa tako nije bilo ni drastičnih posledica, naveo je Milivoj.
Sebastian se na početku karijere susreo sa problemom koji muči većinu juniora. "Na početku svoje karijere radio sam sve 200 km na sat bez obzira na to kako je to urađeno, da li je to provereno i da li to radi. U jednom trenutku sam pomislio da mogu da odradim deployment iako nisam znao kako se to zapravo radi, ima na wikiju pa cu se snaći. Ujutru sam započeo deployment oko 09:57 i to tako što sam dropovao bazu bez backup-a. A backup se radio tačno na sat vremena. 57 minuta posla ljudi je bilo izgubljeno i tačno 200 inženjera je moralo da ostaje sat vremena duže da ispočetka unesu sve te podatke. To me je naučilo da kada se rade mutacije sa bazom uvek mora da se radi backup, i backup backup-a."
Jedna od tema bila je kako pronaći ravnotežu između brzine kodiranja i kvaliteta koda, osvrnuvši se na okruženje koje je haotično za rad.
"Ti kao developer nisi C level executive koji treba da preuzima odgovornost. Ono što ti možeš kao developer je da kažeš svoj stav i da kažeš ako je ovo dugoročan projekat i ako ovo uradimo na ovaj način dobićemo to i to. Ako ne odvojimo određeno vreme za upravljanje složenosti integracije nove funkcionalnosti to će nas koštati sledeći put kad budemo nešto radili 3x više vremena, i ako se biznis složi sa tim vi idete dalje i samo se štancuju nove funkcionalnosti. To nije vaš problem i ne treba vi da osećate stres zbog toga. Njihova je odluka da idu tom putanjom i može nekad biti dobro nekad ne, ali to je poslovna odluka, ali je neizbežno povezana sa kodom koji se pravi", naveo je Sebastian iz kompanije VegaIT.
Na početku karijere juniori se susreću sa izazovom procene vremena potrebnog za završetak projekta i šta time dobija, a šta gubi kompanija. Jako je važno znati ko u tom trenutku preuzima odgovornost.
"U normalnim, zdravim okruženjima niko od juniora ne očekuje da uradi astronomski preciznu procenu. Jedino što može da se uzme u obzir je ko je dao procenu. Čak i ako se u potpunosti omaši procena to ne mora biti loša stvar ako se na vreme javi kako bi se dalje odradilo planiranje", procenio je Sebastian na osnovu svog dosadašnjeg iskustva.
Testiranje i predupređivanje grešaka štede vreme, da integracioni e-unit testovi povećavaju kvalitet koda i dosta donose na vrednosti samog projekta složili su se učesnici panela.
Olivera iz kompanije Levi9 podelila je sa učesnicima najčešće razloge za pravljenje grešaka i na koji način ih prepoznati, ali se osvrnula i na svoje greške koje je pravila u poslednje vreme.
"Ono što prvo treba da izdvojimo je da programerski posao nije samo kodiranje. To je definitivno i umeće preuzimanja zahteva da li od strane klijenata ili ko god da vam te zahteve postavlja. Razumevanje tih zahteva, planiranje tih zahteva i odabir tehnologije kojom ćemo ponuditi rešenja i raspodela taskova u timu. Estimacija vremena i dosta komunikacija vezano za rešenje i tek na kraju kada se sve to dobro isplanira dolazi izrada samog rešenja. Ono gde juniori greše je najčešće u tom planiranju. Želja za dokazivanjem, brzopletost i manjak iskustva je upravo jedna od tih grešaka. Moja veća greška u poslednje vreme bila je na pretposlednjem Hackatonu. Postojao je neki zadatak i jedan deo rešenja nije mogao da se pokrene lokalno već u neko drugom okruženu, da se digne live. Dosta dugo nam je trebalo da napravimo to neko prvo lokalno rešenje i pod ushićenjem i željom da što pre to testiramo na nekom live okruženju, pustili smo kod i komitovali AWS kredencijale zajedno sa tim kodom. Desilo se da nam je AWS blokirao pristup. Pristup se odblokirava tako što se potvrdi identitet, a to može da učini čovek koji je u Novom Sadu. To se dešava noću oko 01:00 obzirom da je taj čovek odblokirao pristup tek sledeće jutro uspeli smo da postavimo samo 2 iteracije i izgubili plasman. "
Sa dilemom kada prekinuti proces i krenuti ispočetka sa pisanjem koda susreće se dosta programera. Ovde nekada presudnu ulogu igra iskustvo, ali nije retkost da i seniori ne prepoznaju problem u okvirnom roku, to nam je povrdio i Milivoj iz kompanije Symphony.
"Situacija gde je trebalo izmeniti, refaktorisati deo postojeće funkcionalnosti. Tu sad dolazi do dileme da li pisati kod ispočetka ili dorađivati postojeće rešenje. U tom trenutku nisam prepoznao grešku pa sam nastavio da gradim prvobitno rešenje da bih kasnije morao ponovo da prolazim kroz legacy kod i dorađujem određene delove. "
Sebastian je pak svoju grešku pronašao u malo drugačijoj situaciji, ali je i to bio pravi preokret u njegovoj karijeri. Na ovome je naučio kako da analizira softver što mu je pomoglo da spreči neke buduće krahove u svojoj karijeri.
"Kada sam prvi put dobio priliku da vodim projekat imao sam osećaj da cutting edge tehnologije ako ih staviš dovoljno i iskoristiš sve imaćeš bleeding edge projekat. Ali su sve te cutting edge tehnologije počele da cut-uju sam proizvod i projekat je skoro propao. Tada sam dobio žestok wake-up call. Ja sam oduvek mislio da se softverski kod pravi zbog nas jer mi to volimo da radimo, a zapravo softver služi da podržava biznis. I jedini zahtev za sistem je performansa, brzina i stabilnost, sve ostalo je lepo imati ali neće doneti vrednost."
Zašto je važno da prepoznamo svoje greške
Ponovo se vraćamo na dobro poznatu činjenicu, rad na sebi je zaista ključ svakog uspeha. Iz sopstvenih grešaka, koliko god to bilo poražavajuće u datom trenutku, na kraju dobijemo veće znanje, moć da se izborimo u sličnim situacijama i mogućnost da prepoznamo problem na vreme, što mogu potvrditi i iskustva učesnika ovog vebinara.
Kakvi su tvoji utisci nakon vebinara?
Slobodno da nam u komentarima opiši neku grešku koja ti je promenila pogled na funkcionisanje i dalji rad u svetu programiranja.
Snimak vebinara možeš pogledati u nastavku: