Pereiti prie pagrindinio turinio

Principai padėję tapti geresniu programuotoju

Pildome People @ Visma blogų seriją, kurioje dirbantys vismiečiai dalinasi savo patirtimi ir patarimais. Šią savaitę skaitykite Artūro Liepio blog’o įrašą apie vienus iš pagrindinių principų padėsiančių tapti geresniais programuotojais.

Kai pradėjau programuoti, aš buvau laimingas, kad mano kodas veikia ir programa duoda norima rezultatą – ko gi daugiau gali reikėti geram programuotojui? Lyg ir nieko, tik gerai veikiančios ir laiku klientui pristatytos programos. Tačiau per 16 darbo metų IT srityje, kai užrašiau tūkstančius kodo eilučių ir dirbau kartu su nemažai kitų programuotojų pastebėjau, kad geras programuotojas tas, kuris turi tam tikrus geram programuotojui būdingus mąstymo bruožus ir kelis veikiančias darbo vertybes/principus, kurie neapsiriboja tik kodo rašymu.

Principai padėję tapti geresniu programuotoju

Ir džiugu, kad šiais principais vadovaujuosi ne tik aš vienas, bet ir mano kolegos Tendsign komandoje, taip užtikriname, gerą darbinę atmosferą ir gebame kurti milžinišką pridėtinę vertę klientui. Mūsų projektas – tai viešųjų pirkimų sistema. Todėl klientai turi daug atsakomybės, nes dirba su didelėmis pinigų sumomis, kur operacijose labai svarbų vaidmenį turi laikas minutėmis ar net sekundėmis. Dėl to, sistemos klaidos gali kainuoti labai daug.

Bet apie viską nuo pradžių… Kokie yra gero programuotojo bruožai ir darbo principai?

ENGINEER keeps evolving and perfecting tech competence.

Tai ne tik pirmasis principas, apie kurį kalbėsime, bet ir viena iš Visma Lietuva vertybių, kuria vadovaujasi ne tik mūsų bet ir visos likusios įmonės komandos. Todėl visuose projektuose turime galimybę dirbti su naujausiomis technologijomis.

Juk niekas nesiginčija, kad programavimas – žingeidžių žmonių reikalas ir kad kompetentinga komanda garantuoja bent pusę geros darbinės atmosferos. Juk nėra geresnio jausmo, už nuolatinį tobulėjimą, kurį smarkiai gali įtakoti ir aplinka, kurioje dirbi.

Iš patirties galiu teigti, kad kompetencijos kėlimas greičiausiai vyksta tada, kai ne tik pats domiesi, bet ir turi su kuo aptarti savo pamatytą ir išgirstą informaciją. O dar greičiau, kai tokie pokalbiai vyksta nuolat, t.y. rengiami įvairūs specializuoti hub’ai, tech pokalbių sesijos su komanda.

Tačiau, aklas noras išbandyti visa, kas nauja gali pakišti koją. Ne tik nepatyrę programuotojai, bet  kartais ir seni vilkai įsivelia į troškimą išbandyti vis daugiau naujų technologijų ar programavimo kalbos subtilybių, nepaisydami poreikio ar aplinkybių.

Tai priveda prie to, kad pradedama galvoti, jog svarbiausia darbe yra kuo greičiau ir moderniau atlikti užduotį ir kuriamas klaidingas suvokimas, kad panaudojus, kuo daugiau funkcijų ir „kietų“ bibliotekų tapsi geru specialistu. Tame yra tiesos, bet svarbu suprasti, kad tik to negana.

ENGINEERS always voice their opinions.

Tai dar vienas principas būdingas geriems programuotojamsŠį principą drąsiai jungiame prie pirmojo, nes tik geroje komandoje vyksta konstruktyvi diskusija apie naudojamas technologijas, projekto ateitį ir vystymą.

Įsivaizduok, kad laikas gali būti iššvaistomas, jei programuotojas tiesiog aklai vadovaujasi duota dokumentacija. Juk tikrai kartais gali būti situacijų kai blogai paruošti reikalavimai. Todėl, jeigu programuotojas mato, kad galima padaryti kažką geriau arba tai gali sukelti problemų ateityje, būtina apie nelogiškus reikalavimus reikia kalbėtis su komanda. Ir kuo skubiau juos pakeisti, nes ateityje vis tiek gali viskas “išlįsti” ir reikės pakartotinai ties tuo dirbti. O perdarinėti funkcionalumą dažnai užtrunka ilgiau, nei naujai suprogramuoti. 

ENGINEERS are pragmatic.

Trečioji gero programuotojo vertybė. Pritaikome optimalius sprendimus realiems klientų poreikiams, surasdami geriausią kokybės, laiko ir kainos derinį. Tikras inžinierius mąsto nesudėtingai, bet tuo pačiu darbus atlieka kokybiškai. 

Ir visas jau mūsų išvardintas vertybes jungia vienas bendras bruožas, kurį galime įvardinti paprasčiausiu atsakomybės jausmu. Kitaip tariant, tai yra supratimas, kad jau nuo pat pirmos kodo eilutės tu pats esi atsakingas už savo parašytą kodą.

Įsivaizduok, tokią situaciją: programuotojas gauna užduotį, kurią turi atlikti per dvi dienas, ją įveikia per dieną, tačiau nesikiria pakankamai laiko testavimui ir keliauja prie kitos užduoties mintyse sau galvodamas, „koks aš šaunus programuotojas“. Šios hipotetinės situacijos bėda ta, kad jis neskyrė laiko testavimui ir paliko tam tikrų spragų, kurias pastebi kolega peržiūrinėjantis kodą. Tuomet gaunasi, kad pirmas programuotojas turi pasiėmęs kitą užduotį, dar papildomai gauna taisyti seną. Trūksta laiko, dar reikia atsiminti, ką ir kodėl daro ir taip sugaištamas papildomas pusdienis, o kodas vėl tuo pačiu procesu grąžinamas peržiūrėti kolegai. Rezultatas: programuotojas ne tik sugaišo anksčiau sutaupytą laiką ar net daugiau, be to dvigubu darbu apkrovė kolegas, kurie tą laiką galėjo panaudoti kitiems darbams. Svarbu ne kaip greitai gali suprogramuot ką nors, bet kaip greitai visa komanda atliks užduotį kokybiškai.

Mūsų komandoje tokios peržiūros atliekamos nuolat, o proceso efektyvumą užtikrina atsakomybės už savo kodą jausmas. 

Deja, bet per visą programuotojo karjerą teko susidurti ir su ydingu mąstymu, kuris kenkia visos komandos efektyviam darbui. Jeigu galvoji, kad atidavęs savo kodą peržiūrai esi daugiau už nieką neatsakingas – klysti. Nustok taip mąstyti. Net jeigu ir kodą tikrinantis programuotojas, ir testuotojai nerado klaidų, tai nesėkmės atveju už į produkciją paleistą blogai veikiantį kodą, turės atsakyti visa komanda.  Dažnu atveju mes linkę atsakomybe dalintis, tačiau, kai aš pradėjau prisiimti atsakomybę už savo padarytas klaidas kode, tai man padėjo apie rašomą kodą prieš atiduodant peržiūrai pagalvoti bent kelis kartus.

Todėl mano, patarimas – nebijok prisiimti atsakomybės už parašytą kodą ir kuo ankstesnėje savo karjeros stadijoje atsikratyk šių žodžių: „Tai ir taip turėtų veikti“ ir: „jeigu bus blogai, tai vėliau pataisysiu… “. Būtent toks mąstymas tau padės tapti daug geresniu savo srities specialistu. Ypatingai ilguoju karjeros laikotarpiu, kuriame reikėtų neužmiršti ir paskutinio gero IT inžinieriaus prinicipo: ENGINEERS build trust and create value for customers. 

Jeigu sugebėsi pritaikyti visas šias vertybes, principus savo kasdieniniame darbe, tai ilgainiui pamatysi, jog turi vienus iš pagrindinių gero programuotojo mąstymo bruožų.

Tad pabaigai mano esminiai patarimai/atmintinė šia tema:

  • Programuotojas yra komandos dalis ir turi galvot komandiškai, o ne bandyti kuo greičiau atlikti užduoti ir jos “atsikratyti”. 
  • Taip pat negalima dirbt ir pernelyg lėtai, taip stabdant visos komandos darbo. 
  • Svarbu ne tik atlikti savo užduotį, bet ir, jeigu reikia pagalbos, padėti kitiems komandoje.
  • Taip pat reikia  pagalvoti apie laiko sąnaudas, bei kokybės rizikas, bandant paeksperimentuoti su naujomis technologijomis ant produkto, kuris jau naudojamas klientų. Niekada nebandyti dalykai, dažnai kelia kokybės rizikas, todėl reikia arba skirti daugiau laiko arba įvertinti tai prieš naudojant. Jei komanda su tuo sutinka – pirmyn. 
  • Na ir visada, kaip įmanoma atidžiau, testuokite savo parašytą kodą. Programas kuriame vartotojams, tad reikia stengtis, kad mūsų darbas nekeltų jiems neigiamų emocijų ar problemų.

Jeigu domina daugiau Visma kuriamų produktų, tai apsilankyk mūsų karjeros puslapyje.

Populiariausi blog'ai