Pradžia / Programavimas / Kaip pradėti programuoti nuo nulio

Kaip pradėti programuoti nuo nulio

Kodėl visi kalba apie programavimą ir ar verta klausytis?

Jei pastaruoju metu nors kartą atidarei LinkedIn, YouTube ar tiesiog kalbėjaisi su draugais IT srityje, turbūt girdėjai tą patį: „Išmok programuoti, ir gyvenimas pasikeis.” Skamba kaip reklama, tiesa? Tačiau už šio šūkio slypi kažkas realaus. Programavimas šiandien nėra tik kažkokia mistiška inžinierių kalba – tai įrankis, kurį galima naudoti sprendžiant konkrečias problemas, automatizuojant nuobodžius darbus ar tiesiog kuriant kažką savo rankomis.

Bet čia ir prasideda problema. Dauguma žmonių, kurie nori pradėti, užstringa dar prieš parašydami pirmą kodo eilutę. Jie skaito straipsnius, žiūri video, klausinėja pažįstamų ir galiausiai… nieko nedaro. Kodėl? Nes informacijos yra per daug, ji prieštaringa, ir niekas tiksliai nepasako, nuo ko pradėti tau konkrečiai.

Šis straipsnis nėra dar vienas sąrašas „10 žingsnių tapti programuotoju”. Čia bandysiu atvirai papasakoti, kaip viskas iš tikrųjų atrodo pradedančiajam, ko tikėtis, ko vengti ir kaip nesusipainioti informacijos jūroje.

Pirmiausia – suprask, ko nori iš programavimo

Prieš diegiant bet kokią programą ar atidarant pirmą pamoką, reikia atsakyti į vieną klausimą: kam tau reikia programavimo? Tai skamba trivialiai, bet atsakymas iš esmės lemia viską – kokią kalbą rinktis, kiek laiko investuoti ir kokio tipo mokymosi kelias tinka.

Štai keletas realių scenarijų:

  • Nori pakeisti karjerą ir dirbti IT srityje – tai rimčiausias kelias, reikalaujantis daugiausiai laiko ir atsidavimo. Tikėtina, kad turėsi mokytis 6–18 mėnesių intensyviai, kol galėsi pretenduoti į pirmą darbą.
  • Nori automatizuoti darbus savo dabartinėje srityje – pavyzdžiui, marketingo specialistas, kuris nori automatiškai apdoroti Excel failus ar siųsti el. laiškus. Čia Python su keliomis bibliotekomis gali išspręsti 80% problemų per kelias savaites.
  • Nori sukurti savo projektą ar verslą – aplikaciją, svetainę, įrankį. Čia kelias priklauso nuo projekto tipo.
  • Tiesiog smalsaujate, kaip viskas veikia – ir tai visiškai teisėtas tikslas. Nereikia tapti profesionalu, kad programavimas būtų naudingas.

Kai žinai savo tikslą, pasirinkimai tampa daug aiškesni. Žmogus, kuris nori automatizuoti Excel, neturi mokytis to paties, ko mokosi tas, kuris nori kurti mobiliąsias aplikacijas.

Kalbos pasirinkimas – viena didžiausių klaidų vietų

Internete galima rasti dešimtis straipsnių pavadinimu „Geriausios programavimo kalbos 2024 metais” ir kiekvienas jų siūlo kažką kitą. Tai sukuria paralyžių. Žmogus pradeda lyginti Python su JavaScript, tada skaito apie Rust, tada kažkas pasako, kad reikia mokytis C++, ir galiausiai jis neišmoksta nieko.

Štai paprastas požiūris, kuris veikia:

Python – geriausias pasirinkimas absoliučiai daugumai pradedančiųjų. Sintaksė artima žmogiškai kalbai, bendruomenė milžiniška, dokumentacija puiki, ir kalba naudojama praktiškai visur: duomenų analizėje, dirbtiniame intelekte, automatizavime, web kūrime. Jei nežinai, ką rinktis – rinkis Python.

JavaScript – jei tiksliai žinai, kad nori kurti svetaines ar web aplikacijas. JavaScript yra vienintelė kalba, kuri veikia naršyklėje, todėl front-end kūrimui ji neišvengiama. Tačiau pradedantiesiems ji šiek tiek sudėtingesnė nei Python dėl asinchroninio programavimo koncepcijų.

SQL – dažnai pamiršta, bet itin vertinga kalba darbui su duomenų bazėmis. Jei dirbi su duomenimis ar nori dirbti analitiko srityje, SQL yra būtinas įrankis.

Ką tikrai galima ignoruoti pradžioje: Java, C++, C#, Rust, Go. Tai puikios kalbos, bet jos nėra skirtos žmonėms, kurie dar nežino, kas yra kintamasis. Prie jų galima grįžti vėliau, kai bus pagrindai.

Mokymosi šaltiniai – kur iš tikrųjų verta leisti laiką

Internetas pilnas nemokamų kursų, ir tai ir gerai, ir blogai. Gerai – nes nereikia mokėti tūkstančių eurų už mokymą. Blogai – nes lengva įstrigti vadinamajame „tutorial hell”, kai žiūri kursą po kurso, bet niekada nepradedi rašyti kodo pats.

Keletas konkrečių rekomendacijų:

Nemokamų šaltinių geriausi:

  • freeCodeCamp – puikus JavaScript ir web kūrimo mokymui. Interaktyvus, struktūruotas, su realiais projektais.
  • CS50 (Harvard) – vienas geriausių įvadinių kursų apskritai. Nemokamai prieinamas per edX platformą. Sunkus, bet verta.
  • Python.org oficiali dokumentacija – geriau nei daugelis kursų. Pradedantiesiems yra specialus „Tutorial” skyrius.
  • Kaggle – jei domina duomenų analizė ar mašininis mokymasis, čia yra nemokamų mikrokursų ir realių duomenų rinkinių.

Mokami, bet verti pinigų:

  • Udemy – kursai dažnai parduodami su 90% nuolaida (tikroji kaina ~10–15 EUR). Angela Yu „100 Days of Code” Python kursas yra vienas geriausių rinkoje.
  • Scrimba – interaktyvi platforma JavaScript mokymui. Galima tiesiogiai redaguoti kodo pavyzdžius pamokų metu.

Svarbiausias patarimas: pasirink vieną šaltinį ir eik iki galo. Neprašok, kol nebaigei. Kursų keitimas viduryje yra viena dažniausių priežasčių, kodėl žmonės niekada nepasiekia pakankamai gilaus lygio.

Praktika – vienintelis dalykas, kuris iš tikrųjų moko

Čia reikia būti atviriems: žiūrėti kursus ir skaityti straipsnius nėra programavimo mokymasis. Tai yra pasiruošimas mokytis. Tikrasis mokymasis vyksta tada, kai sėdi prieš tuščią ekraną ir bandai kažką sukurti pats, be pagalbos.

Pradedantiesiems tai yra skausminga patirtis. Klaidos, kurių nesuprantas. Valandos, praleistos ieškant, kodėl kodas neveikia, ir galiausiai paaiškėja, kad trūko vienos kabliataškio. Tai normalu. Tai yra procesas.

Keletas praktinių būdų kaip treniruotis:

  • Codewars ir LeetCode – platformos su programavimo uždaviniais. Codewars labiau tinka pradedantiesiems, LeetCode – ruošiantis darbo pokalbiams. Rekomenduoju pradėti nuo Codewars, kai jau moki pagrindus.
  • Savo projektai – tai geriausia praktika. Sugalvok problemą, kurią nori išspręsti, ir bandyk ją išspręsti kodu. Net jei projektas paprastas – skaičiuotuvas, atsitiktinių citatų generatorius, asmeninis biudžeto sekiklis – procesas moko daugiau nei bet koks kursas.
  • GitHub – pradėk naudoti nuo pat pradžių. Tai ne tik kodo saugojimo vieta, bet ir tavo portfolio. Kai kreipsiesi dėl darbo, pirmiausia žiūrima į GitHub profilį.

Vienas praktinis patarimas, kuris tikrai veikia: kiekvieną dieną rašyk bent 20–30 minučių kodo. Ne žiūrėk kursus, o rašyk. Net jei tai bus paprastos pratybos, reguliarumas yra svarbiau nei intensyvumas.

Klaidos, kurias daro beveik visi pradedantieji

Per daug metų stebint, kaip žmonės mokosi programuoti, išryškėja keletas modelių, kurie vėl ir vėl kartojasi. Geriau žinoti apie juos iš anksto.

Perfekcionizmas – daugelis pradedančiųjų bijo rašyti „blogą” kodą. Jie laukia, kol „pakankamai” išmoks, ir tada pradės. Šis momentas niekada neateina. Kodas visada gali būti geresnis. Rašyk, net jei jis bjaurus.

Per greitas perėjimas prie naujų temų – kai kažkas neveikia arba sunku, lengviau pereiti prie kitos temos. Tačiau programavimas yra kumuliatyvus – jei nesupranti ciklų, nesuprasi funkcijų, jei nesuprasi funkcijų, nesuprasi objektinio programavimo. Neik toliau, kol nesupratai dabartinės temos.

Kopijavimas be supratimo – Stack Overflow ir ChatGPT yra nuostabūs įrankiai, bet jei tiesiog kopijuoji atsakymus nesuprasdamas, ką jie daro, tu nesimokai. Kiekvieną nukopijuotą kodo eilutę pabandyk suprasti.

Socialinė izoliacija – programavimas atrodo kaip vieniša veikla, bet taip nėra. Bendruomenės, Discord serveriai, vietiniai meetup’ai – tai vietos, kur galima gauti pagalbos, motyvacijos ir ryšių. Lietuvoje veikia keletas aktyvių IT bendruomenių, verta jų ieškoti.

Lyginti save su kitais – internete pilna 19-mečių, kurie jau dirba Google. Tai yra išimtys, ne norma. Kiekvienas mokosi savo tempu, ir tai yra gerai.

Aplinka ir įrankiai – ką diegti ir kaip susitvarkyti darbo vietą

Techninė pusė dažnai gąsdina pradedančiuosius, bet iš tikrųjų čia nėra nieko sudėtingo. Štai minimalistinis sąrašas, ko reikia pradžiai:

Teksto redaktorius: Visual Studio Code (VS Code) yra de facto standartas. Nemokamas, greitas, su milžiniška praplėtimų ekosistema. Įdiegus Python ar JavaScript praplėtimus, gauni sintaksės paryškinimą, klaidų rodymą ir daug kitų patogumų.

Python įdiegimas: Eik į python.org, parsisiųsk naujausią versiją. Windows vartotojams svarbu pažymėti „Add Python to PATH” diegimo metu – be to kils problemų. Mac vartotojams Python dažnai jau būna įdiegtas, bet rekomenduoju įdiegti naujesnę versiją per Homebrew.

Terminalas: Tai juodas langas su tekstu, kurio daugelis bijo. Bet jis yra būtinas. Windows vartotojams rekomenduoju įdiegti Windows Terminal arba naudoti Git Bash. Mac vartotojai turi puikų terminalą iš karto.

Git: Versijų kontrolės sistema. Įdiegk nuo pat pradžių ir išmok bent pagrindinių komandų: git init, git add, git commit, git push. Tai išgelbės tave nuo situacijų, kai „kažkas sugedo ir nežinau kaip grįžti atgal”.

Nieko daugiau iš pradžių nereikia. Nereikia pirkti galingų kompiuterių – programavimui mokytis tinka bet koks kompiuteris, kuris gali paleisti naršyklę. Nereikia specialių klaviatūrų, monitorių ar kitų priedų. Tai yra dažnas atidėliojimo pretekstas.

Kai viskas atrodo per sunku – apie „impostoriaus sindromą” ir kaip su juo gyventi

Yra momentas, kurį patiria beveik kiekvienas pradedantysis. Jis ateina maždaug po kelių savaičių ar mėnesių mokymosi. Pradedi suprasti pagrindus, bet tuo pačiu pradedi suvokti, kiek dar nežinai. Ir tada ateina mintis: „Galbūt aš tiesiog neturiu galvos šiems dalykams.”

Tai yra impostoriaus sindromas, ir jis yra universalus programuotojų palydovas – ne tik pradedančiųjų, bet ir patyrusių specialistų. Tai jausmas, kad tu esi apgavikas, kad visi kiti žino daugiau, ir kad kažkas netrukus tai atras.

Keletas dalykų, kurie padeda:

  • Suprask, kad net patyrę programuotojai nuolat ieško atsakymų Google ir Stack Overflow. Tai nėra silpnumo ženklas – tai yra darbas.
  • Veskite progreso žurnalą. Kartais sunku pastebėti, kiek išmokai, nes kiekviena nauja žinių sritis atrodo didžiulė. Bet jei pažiūrėsi, ką mokėjai prieš mėnesį, pamatysi realų progresą.
  • Kalbėkis su kitais. Bendruomenėse dažnai paaiškėja, kad visi jaučia tą patį.

Programavimas nėra talento klausimas. Tai yra kantrybės ir praktikos klausimas. Žmonės, kurie „greitai išmoko”, dažniausiai tiesiog sėdėjo prie kompiuterio daugiau valandų nei tu.

Nuo pirmų kodo eilučių iki pirmo darbo – realus laiko vaizdas

Baigiant šį straipsnį, norisi kalbėti atvirai apie laiką, nes daugelis kursų ir reklaminių medžiagų žada stebuklus per 3 mėnesius. Realybė yra sudėtingesnė.

Jei mokaisi intensyviai – 4–6 valandas per dieną – galima pasiekti darbo rinkos lygį per 6–12 mėnesių. Jei mokaisi po darbo, 1–2 valandas per dieną, tikėtinas laikas yra 12–24 mėnesiai. Tai nėra nesėkmė – tai yra realybė.

Tačiau čia yra svarbus niuansas: pirmą darbą gauti yra sunkiausia. Antras – daug lengviau. Trečias – dar lengviau. Pirmojo darbo paieška gali užtrukti ilgai ne dėl to, kad esi blogas, o dėl to, kad neturi patirties, o visi nori patirties. Tai yra klasikinis paradoksas, kurį reikia perrašyti per projektus, atvirojo kodo įnašus ir aktyvumą bendruomenėje.

Programavimo mokymasis yra vienas iš tų dalykų, kur nėra trumpiklių. Bet yra kažkas kita – kiekvienas mažas laimėjimas, kiekviena išspręsta problema, kiekvienas veikiantis kodas suteikia tokį pasitenkinimą, kuris sunkiai aprašomas žodžiais. Tai yra kūrybos jausmas: tu sukūrei kažką iš nieko, ir tai veikia. Dėl to žmonės ir lieka šioje srityje – ne dėl atlyginimų (nors jie irgi geri), o dėl to jausmo, kai pagaliau supranti, kaip kažkas veikia, ir gali tai panaudoti.

Pradėk šiandien. Ne rytoj, ne pirmadienį. Atidaryk VS Code, įdiek Python ir parašyk: print("Labas, pasauli!"). Tai yra pirmas žingsnis, ir jis yra tikras.