Per paskutinius 10 metų programuotojo specialybė viešojoje erdvėje iš egzotinės virto į vieną geidžiamiausių, tai liudija ir pirmajame populiariausių studijų trejetuke vis atsidurianti informatika. Nuolat girdime apie puikias darbo sąlygas, svaiginančias karjeras ir atlyginimus. Bet ką iš tikrųjų veikia programuotojai? Rašo kodą ir kuria sistemas? Trumpas teisingas atsakymas yra „galvoja“. O ilgesnį atsakymą tarptautinės programuotojo dienos proga (Elektronika.lt past., rugsėjo 12 d.) pateikia šios specialybės atstovas Kęstutis Armalis.
Asoviatyvi „Pixabay“ nuotr,
Su šiuo darbu nesusidūrusiems žmonėms programuotojo specialybė gali atrodyti magiška: teksto rašymas pagal tam tikras taisykles kuriant pasaulį patogesniu darančias programas atrodo kaip svajonių darbas. Tai skamba ir lengvai, ir įdomiai, ir prasmingai.
Tokiame įsivaizdavime yra dalis tiesos, įskaitant tai, kad programuotojai išties dalį darbo laiko rašo kodą, t.y. tekstines instrukcijas kompiuteriams. Tą kodą programuotojai dar išsaugo į failus ir kompiliuoja, t.y. savo parašytą „tekstą“ paverčia kompiuteriams ar konkrečiai sistemai dar geriau suprantama informacija. Net ir pats programuotojų „teksto“ rašymas nėra panašus į, tarkime, šio straipsnio kūrimą – programuotojai visada naudojasi įrankiais, kuriuose veikia daugybė šablonų ir net ištisų bibliotekų, automatinės korektūros funkcijos ir įvairios kitos pagalbos.
Tad visų pirma programuotojai didžiąją dalį savo darbo laiko galvoja. Kai kuriais atvejais netgi filosofuoja.
Kodėl reikia galvoti
Kompiuteriai iš esmės yra labai greiti ir galingi skaičiavimo aparatai. Kitaip nei žmonės, kompiuteriai (vis dar) negalvoja ir nemąsto, tačiau žmogus nė iš tolo neprilygsta kompiuterio gebėjimui atlikti matematinius skaičiavimus.
Tačiau pasaulio, kuriame gyvename, problemos paprastai nėra susijusios su skaičiavimais. „Žmonių pasaulio“ problemos ar siekiai yra tokie, kaip ką nors parduoti, padaryti greičiau ir geriau, sužinoti, priimti geriausią sprendimą ir panašiai. Kompiuteriai tiesiogiai šių problemų nesprendžia.
Todėl visų pirma programuotojas galvoja. Jis ieško būdų, kaip pasitelkti šį didelį ir galingą skaičiavimo aparatą „žmonių pasaulio“ problemų sprendimui. O vadinamasis „kodas“ yra tarpinė-jungiamoji grandis tarp žmonių problemų ir kompiuterių galimybių. Nėra sunku „parašyti kodą“. Sunkiausia sugalvoti, koks kodas geriausiai susies žmogiškąjį ir kompiuterinį pasaulius.
Tam tikrose situacijose programuotojas ne tik galvoja, bet ir filosofuoja. Programuotojas turi gebėti mąstyti abstrakcijomis, kurios kompiuteriams yra patogesnės nei konkrečios sąvokos.
Tarkime, turime situaciją, kuomet reikia apibūdinti trijų asmenų šeimą – motiną, tėvą ir vaiką. Tai lengva padaryti kitam žmogui raštu ar balsu. Tačiau kompiuteris nesupranta nei šių sąvokų kaip žodžių, nei jų ryšių. Programuotojas turi gebėti konkrečią šeimos sąvoką kompiuteriams perteikti abstrakčiai, pvz., kaip diagramą, kurioje kiekvienas paskiras taškas atspindi šeimos narį, o taškus jungiančios briaunos – jų tarpusavio ryšius. Tam, kad gebėtų konkrečias situacijas paversti kompiuteriams suprantamomis abstrakcijomis, programuotojas širdyje privalo būti filosofas, t.y. mąstytojas, gebantis nuolat sukurti naujų būdų apibūdinti aplinką, įvykius, struktūras, objektus ir jų ryšius. Ir ne supaprastinti, o perteikti bei apibūdinti kitokiu būdu – kompiuteriams suprantama kalba.
Kaip atrodo programuotojo diena
Kaip jau supratote, realaus kodo rašymo dienos metu pas programuotojus nėra tiek jau daug. Pabandysiu tai iliustruoti standartinėmis programuoto dienos veiklomis.
Diena paprastai prasideda kiekvienam programuotojui nustatant dienos užduotis ir prioritetus. Tuomet – susitikimų metas. Šiuolaikinius ir sudėtingus projektus kuria ne pavieniai programuotojai, o komandos, todėl svarbu sukoordinuoti darbus ir jų būseną. Susitikimai paprastai vyksta pirmoje dienos pusėje.
Svarią dalį dienos užima tyrimai: idėjų paieška, užduoties vizualizavimas ir nagrinėjimas ieškant tinkamiausio kodo, abstrakcijų, bibliotekų ir technologijų.
Kadangi šiuolaikinės sistemos yra labai sudėtingos, nepakanka vien sugalvoti kodą. Programuotojas privalo užtikrinti, kad jo į sistemą pridėtas „kodas“ veiks, nesukels visos sistemos ar atskirų jos komponentų sutrikimų. Tam padeda programuotojų rašomi testai. Testuojamas tiek pats kodas, tiek jo integracija į sistemą. Kartais naujo kodo pridėjimas reikalauja ištestuoti visą milžinišką sistemą.
Net jei po testų viskas veikia, programuotojas taip greitai neįves naujo kodo į jau veikiančią sistemą. Kadangi programuotojams itin svarbus sistemų stabilumas, automatiškai ištestuotas kodas paprastai turi nukeliauti kitų programuotojų įvertinimui. Tad dalį savo laiko programuotojai skiria savo kolegų kodo peržiūrai.
Tarp kitos dažnos kasdienės veiklos – kiti susitikimai, kodo ir sistemų dokumentavimas („žmonių kalba“ aprašytas kodas), komandos procesų tobulinimas, savo bei kitų veiklos ar kodo vertinimas, diskusijos apie projekto ateitį, technologijas, techninius ir architektūrinius sprendimus, nuoširdus pokalbis su kolega, kuriam galbūt net pati geriausia diena, bei kita veikla. Ką jau kalbėti apie poreikį nuolat tobulėti ir mokytis, kad neatsiliktum nuo naujovių.
Galiausiai, programuotojas nelygus programuotojui. Jų yra skirtingų tipų ir specializacijų. Vieni rūpinasi naudotojo sąsajomis ir jų elementais (tarkime, kaip atrodys mygtukai), kiti – specializuojasi infrastruktūroje, t.y. rūpinasi ir „sujungia“ skirtingus serverius bei aplinką programinei įrangai veikti. Dar kiti programuotojai dirba su moksliniais tyrimais ir didesnę dalį laiko skiria mokslinių straipsnių analizei bei eksperimentams. Egzistuoja ir programuotojai – komandų vadovai ar architektai, daug laiko skiriantys projekto, komandos darbo ar technologijų valdymui.
Tačiau visus juos vienija jau išsakyta mintis, kad programuotojai visų pirma tiesiog galvoja.
Su tarptautine programuotojo diena!