Odgovor na ovo pitanje dajemo vam u razgovoru s dvoje softverskih inženjera, koji su s nama podelili korisne trikove i alate za što efikasnije pisanje koda.
Ljudi koji ne potiču iz tog sveta, programere zamišljaju kao “noćne ptice” koji celu noć provode pred velikim monitorima pišući beskrajne linije koda, nemajući tako vremena za druge poslovne i društvene aktivnosti.
Međutim, istina je sasvim drugačija. Dobro napisan kod je konačni rezultat, iza kojeg stoji dobro osmišljena strategija, temeljno istraživanje i niz veština koje olakšavaju i ubrzavaju sam proces pisanja.
O procesu “od ideje do realizacije”, trikovima i alatima koji omogućavaju efikasno pisanje koda, kao i o ostalim obavezama koje ispunjavaju tokom svog radnog dana, razgovarali smo sa Jelenom Dragićević, inženjerkom softvera u kompaniji Seven Bridges i Acom Gagićem, takođe softverskim inženjerom i suosnivačem kompanije ThinkBig.
Za početak, koliko sati dnevno provedeš u efektivnom pisanju koda?
Jelena: Utrošeno vreme na efektivno programiranje zavisi od mnogo faktora (sastanaka, posla koji se ne odnosi na implementaciju tehničkih rešenja, koncentracije tog dana, itd.) i samim tim varira iz dana u dan. Recimo da je moje prosečno vreme u prethodnom periodu bilo 5h dnevno, nekad je ova brojka mnogo veća a ima dana kada ne uspem da spojim ni sat vremena za kodiranje.
Neko nepisano pravilo ne postoji, ili možda ja još uvek ne znam za njega, svakako je cilj da se vreme procenjeno za određenu količinu posla ispoštuje u dogovorenom roku, kako se posledice ne bi osetile na nivou tima i na višim nivoima u kompaniji.
Aco: Proces razvoja softvera je kompleksan posao gde ne možemo sve aktivnosti uklopiti u pisanje koda, koje se neretko uzima kao jedina validna ili naplativa aktivnost. Kako je većini ljudi radno vreme osam sati, ono se uglavnom uzima kao očekivana osnova, što je i ok — ako prihvatimo da tokom tog vremena rezultati mogu da variraju.
Bitno je da razumemo da pored inženjerskog aspekta u programiranju postoji i kreativni, logički deo na koji mogu da utiču razne sporedne stvari, koje nekad ne možemo da eliminišemo. Svi smo imali dane kada sve rešavamo i dane kada nam jednostavne stvari prosto ne polaze od ruke.
Ranije, dok sam se aktivno bavio programiranjem, isto kao i danas, uvek sam se vodio rezultatima, jer su oni ti koji daju vrednost našem trudu i kodu, shodno tome moji dani su nekada bili duži, nekada kraći.
Koliko procentualno vremena provedeš u razmišljanju i razvijanju strategije, a koliko u samom pisanju koda?
Jelena: U zavisnosti od vrste zahteva i tipa ticket-a (da li je u pitanju bug, refaktorisanje postojećeg koda, nova funkcionalnost, itd) proces od ideje do realizacije je različit. Ukoliko radim na rešavanju bug-a prvo se potrudim da uspešno reprodukujem prijavljenu grešku i lociram u kom delu sistema/koda se nalazi, nakon toga sledi proces debug-ovanja, osmišljavanja rešenja, i na kraju implementacija istog.
U slučaju da je potrebno razviti novu funkcionalnost, sam početak izgleda tako što se prvenstveno upoznajem sa samom funkcionalnošću, proučavam dizajn i u kom delu sistema bi trebalo da se sama funkcionalnost nalazi. Nakon toga, sagledavam trenutnu arhitekturu koda i osmišljavam na koji način je potrebno prilagoditi istu kako bi se novo “parče” koda uklopilo.
U obe navedene situacije ključna je analiza trenutne situacije u kodu i pronalaženje potencijalnog rešenja, što ume da oduzme i po nekoliko dana, ukoliko je ta faza odrađena na pravi način, sama implementacija bi trebalo da predstavlja “lakši deo”.
Aco: Ja lično uvek u početku razmišljam o graničnim faktorima i rizicima, tako validiram neku ideju i ujedno počinjem sa definisanjem prvih koraka, postavci projekta i organizacije. Proces realizacije svakako traje duže, ali ne mogu precizno da kažem koliko zbog raznolikosti projekata na kojima sam radio. To nikako ne znači da trošim malo vremena na planiranje i strategiju, sve je prilagođeno tipu projekta i organizaciji, bitno je da se ne pretera ni u jednom delu razvoja.
Pored pisanja koda, koje sve obaveze moraš da ispuniš tokom dana?
Jelena: Radni dan inženjera ne zahteva samo pisanje koda, iako je to glavni deo posla. Pored istraživanja, debugging-a, testiranja u “logističke poslove” svakako spada i priprema i sprovođenje deploy procesa, uz testiranje svih faza deploy-a, kako bismo izbegli svima neprijatnu situaciju, critical bug-a (ili čak i minorni bug) na produkcijskom okruženju.
Vrlo često se na dnevnom redu nađe i pisanje tehničke dokumentacije kao i spremanje raznih vidova prezentacija. Naravno, neizostavni redovni sastanci sa timom sastavni su deo svakodnevnog rasporeda, kako bismo održali sinhronizaciju i produktivnost tima na visokom nivou
Aco: Istraživanje, testiranje, logistika i razne druge stvari danas troše skoro celokupno radno vreme, jer kao CTO ne uspevam više da pišem kod koliko bih želeo. Ali, dok sam programirao skoro svaki dan sam imao sastanke sa ostatkom tima, vodio sam svoj log aktivnosti kako bi dodatno optimizovao svoje vreme. Debuging i testiranje su svakako bili neizostavni deo svakodnevice, samo na početku svoje karijere sam pisao kod bez testova, što kasnije nikad nije bio slučaj.
Da li imaš neki omiljeni alat i koje su njegove prednosti?
Jelena: Svi alati koji na bilo koji način ubrzavaju pisanje koda i proces implementacije rešenja su više nego omiljeni. Nekad se čini da tih par trenutka koje uštedimo automatskim popunjavanjem koda nema nekog efekta na globalni učinak, međutim kad saberemo sve te trenutke rezultat će biti ozbiljan komad vremena koji se uštedi. Shodno navedenom, svi su omiljeni, samo dok pomažu.
Aco: Integrisano razvojno okruženje (IDE) pored terminala predstavlja nezaobilazni alat svakog programera. Pomoć, odnosno opcije koje dobijamo uveliko olakšavaju manipulisanjem različitih delova koda, projekta i njihovih funkcionalnosti, te značajno ubrzava i olakšava razvoj.
Kako sam uvek obitavao u svetu PHP-a moj omiljeni alat je bio PHP Storm, koji pored navedenih stvari prepoznaje framework koji koristim, mogu da povežem bazu, git i razne druge stvari te kroz njega po potrebi da radim mnogo više sem pisanja PHP-a.
Da li postoje “trikovi” za brže pisanje koda i koja je to razlika između Qwerty i Dvorak tastature?
Jelena: U zavisnosti u kom IDE i, naravno, u kom jeziku pišete kod, trikovi su brojni i različiti u zavisnosti od izbora. Čini mi se da sam vremenom u potpunosti zaboravila na miš i počela da koristim sve prečice na tastaturi, jer mi je utisak da sam brža i efikasnija na taj način. Nikada nisam koristila Dvorak tastaturu, tako da, ne bih znala razliku.
Aco: Dvorak tastatura je brža, efikasnija i optimalnija, tako je barem navedeno u nekim zvaničnim istraživanjima, ali iskreno meni nikad nisu trebale takve performanse. Qwerty je default postavka na većini tastatura i uz dodatno usavršavanje korišćenje može da bude veoma brzo i efikasno, zato je i dalje ona moj izbor.
Sa druge strane postoji jedno istraživanje (ne mogu da nađem referencu do njega) gde su izračunali u satima na godišnjem nivou koliko korišćenje više ekrana i miša usporava rad, zbog rasipanja fokusa na više ekrana i traženje pozcije kursora i gde da kliknemo. Primenio sam i testirao savete koje su naveli, ali sam ih na kraju delimično prihvatio, napravio sam svoj sistem.
Pomoćni ekran koristim ponekad, znači mi da vidim više stvari odjednom. Miš ne koristim odavno, primarno koristim tastaturu ali je dopunjujem touchpad-om kada zatreba. Treba probati različite postavke i izabrati ono što “ti najbolje leži”.
Želiš da podeliš svoje mišljenje o ovoj temi? Komentari su otvoreni na našoj Facebook i LinkedIn stranici!