Pradžia / Technologijos / Kaip išmokti programuoti nemokamai

Kaip išmokti programuoti nemokamai

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

Programavimas šiandien yra kažkas panašaus į raštingumą prieš šimtą metų – vis daugiau žmonių supranta, kad be šio įgūdžio pasaulis darosi sunkiau suprantamas. Bet čia svarbu atskirti du dalykus: programavimą kaip profesiją ir programavimą kaip įrankį. Jei nori tapti programuotoju ir dirbti IT kompanijoje – tai vienas kelias. Jei nori automatizuoti nuobodžius darbus, suprasti, kaip veikia technologijos aplink tave, arba tiesiog išbandyti kažką naujo – tai visiškai kitas kelias, ir abu yra vienodai teisėti.

Geriausia žinia ta, kad mokytis programuoti nemokamai šiandien yra ne tik įmanoma, bet ir tikrai efektyvu. Internetas tiesiogine prasme yra pilnas kokybiškų resursų, kurių prieš dešimt metų reikėjo mokėti tūkstančius eurų. Problema dažnai yra ne resursų trūkumas, o jų perteklius – žmogus tiesiog nežino, nuo ko pradėti, ir paskęsta informacijoje.

Šiame straipsnyje bandysiu padėti susiorientuoti – ne teoriškai, o praktiškai. Kokie resursai iš tikrųjų veikia, kokia tvarka mokytis, ko vengti ir kaip nepasiduoti po pirmų sunkumų.

Pirmiausia – pasirink kalbą, bet neapsėsk

Viena iš dažniausių klaidų pradedantiesiems – per ilgai svarstyti, kurią programavimo kalbą pasirinkti. Forumuose galima rasti begalę diskusijų tipo „Python ar JavaScript?”, „Java ar C++?” ir taip toliau. Tiesa tokia: pirmoji kalba nėra sprendimas visam gyvenimui. Ji yra tik įrankis, su kuriuo išmoksi mąstyti programavimo terminais.

Jei neturi jokio konteksto – rinkis Python. Kodėl? Nes jo sintaksė yra artimiausia žmogiškai kalbai, jis naudojamas duomenų moksle, dirbtiniame intelekte, automatizavime, žiniatinklio kūrime, ir jo bendruomenė yra milžiniška. Tai reiškia, kad į bet kokį klausimą internete rasi atsakymą per penkias minutes.

Jei tave labiau traukia interneto puslapiai ir matomas rezultatas – rinkis JavaScript. Su juo galėsi iš karto matyti, ką sukūrei naršyklėje, o tai labai motyvuoja pradžioje.

Jei domina mobiliosios programėlės Android sistemai – Kotlin. Apple ekosistema – Swift. Žaidimai – C# su Unity varikliu.

Bet vėlgi – nesustok ties šiuo sprendimu ilgiau nei valandą. Pasirink ir eik toliau.

Nemokamos platformos, kurios iš tikrųjų moko

Resursų internete yra tiek daug, kad lengva pradėti viską iš karto ir nebaigti nieko. Todėl čia pateikiu konkrečius, patikrintus variantus – ne visą sąrašą, o tuos, kurie realiai veikia.

freeCodeCamp – turbūt geriausias nemokamas resursas žmonėms, norintiems išmokti žiniatinklio kūrimą. Čia yra struktūruotas kursas nuo HTML ir CSS iki JavaScript, React ir Node.js. Kiekvienas modulis turi interaktyvias užduotis, kurias sprendžia tiesiogiai naršyklėje. Baigus tam tikrus etapus, gauni sertifikatus – jie nemokami ir tikrai atpažįstami darbdavių.

The Odin Project – šiek tiek sunkesnis, bet labai išsamus kursas. Jis nėra toks „rankos vedamas” kaip freeCodeCamp – čia daugiau savarankiško darbo, daugiau realių projektų. Tai geras dalykas, nes realus darbas programuotojo profesijoje yra lygiai toks pat – niekas tau nepasakys kiekvieno žingsnio.

CS50 – Harvardo universiteto kursas, prieinamas nemokamai per edX platformą. Tai yra tiesiog fenomenalus kursas, kuris moko ne tik programavimo, bet ir kompiuterių mokslo pagrindų. Dėstytojas Davidas Malanas turi retą dovaną – gebėjimą sudėtingus dalykus paaiškinti paprastai ir įdomiai. Kursas prasideda nuo C kalbos, bet tai nėra problema – tie pagrindai padeda suprasti, kaip kompiuteris iš tikrųjų veikia.

Codecademy – geras variantas absoliučiai pradžiai. Interaktyvus, vizualus, lengvas. Tačiau čia yra vienas spąstas: platforma yra tokia patogi, kad žmonės kartais pasijunta, jog moka programuoti, bet realiai nemoka. Tai vadinama „tutorial hell” – kai sprendžiate užduotis su pagalba, bet savarankiškai nieko sukurti negali. Codecademy naudok kaip įvadą, bet neužstrigk joje.

YouTube – neįvertintas resursas. Kanalai kaip Traversy Media, Fireship, Corey Schafer (Python), Kevin Powell (CSS) yra tikrai aukštos kokybės. Fireship ypač išsiskiria – jų trumpi vaizdo įrašai yra puikūs konceptams suprasti greitai.

Khan Academy – jei nori suprasti matematiką, kuri slypi už programavimo (algoritmų sudėtingumas, duomenų struktūros), čia yra labai geras pagrindas.

Kaip mokytis, kad tikrai išmoktum

Resursai – tai tik pusė darbo. Antroji pusė – kaip tu su jais dirbi. Ir čia dauguma žmonių daro tas pačias klaidas.

Pirmoji klaida – per daug žiūrėti, per mažai rašyti. Programavimo negalima išmokti pasyviai. Galima suprasti konceptą žiūrint vaizdo įrašą, bet sugebėjimas jį pritaikyti ateina tik tada, kai pats rašai kodą. Kiekvieną kartą, kai matai pavyzdį – uždaryk vaizdo įrašą ir pabandyk atkartoti pats. Tada pabandyk pakeisti. Tada pabandyk sukurti kažką panašaus, bet kitaip.

Antroji klaida – bijoti klaidų. Klaidos programavime yra ne nesėkmė, o informacija. Kai gauni klaidos pranešimą (error message), tai yra sistema, kuri tau sako: „štai kur problema”. Išmok skaityti klaidas, kopijuok jas į Google, ieškok Stack Overflow – tai yra tikrasis programuotojo darbas.

Trečioji klaida – mokytis be projekto. Abstrakcija veikia tik iki tam tikro taško. Kai turi realų tikslą – sukurti savo asmeninę svetainę, automatizuoti kažkokią užduotį darbe, sukurti paprastą žaidimą – motyvacija yra visiškai kitokia. Projektas neturi būti sudėtingas. Gali būti paprastas skaičiuotuvas, todo sąrašas arba programa, kuri kiekvieną rytą siunčia tau orų prognozę.

Praktinis patarimas: naudok Pomodoro techniką – 25 minutės koncentruoto darbo, 5 minutės pertraukos. Programavimas reikalauja didelės koncentracijos, ir smegenys greitai pavargsta. Trumpos pertraukos padeda išlaikyti produktyvumą ilgiau.

Aplinka, įrankiai ir kaip viską susidėti

Prieš pradedant rašyti pirmą kodo eilutę, reikia susitvarkyti darbo aplinką. Tai nėra sudėtinga, bet svarbu padaryti teisingai iš karto.

Kodo redaktorius: Naudok Visual Studio Code (VS Code). Jis nemokamas, veikia visose operacinėse sistemose, turi milžinišką plėtinių (extensions) biblioteką ir yra tai, ką naudoja dauguma profesionalių programuotojų. Įdiek šiuos plėtinius iš karto: Prettier (kodo formatavimui), GitLens (darbui su Git), ir kalbos specifinį plėtinį (Python, JavaScript ir t.t.).

Terminalas: Išmok naudoti komandinę eilutę. Žinau, kad tai atrodo bauginančiai, bet iš tikrųjų reikia išmokti tik keliolika komandų, ir tai atvers daug durų. Windows sistemoje naudok Windows Terminal su PowerShell arba WSL (Windows Subsystem for Linux). Mac ir Linux – terminalas jau yra įdiegtas.

Git ir GitHub: Tai yra versijų kontrolės sistema – įrankis, kuris seka visus tavo kodo pakeitimus ir leidžia grįžti atgal, jei kažkas sugedė. GitHub yra platforma, kur galima saugoti savo projektus internete. Mokytis Git reikia nuo pat pradžių – ne todėl, kad tai būtina mokantis, bet todėl, kad tai yra standartinis įrankis bet kurioje IT komandoje, ir kuo anksčiau pradėsi, tuo geriau.

Online aplinkos: Jei nenori nieko diegti iš karto – naudok Replit arba CodeSandbox. Tai yra pilnavertės kodo rašymo aplinkos, veikiančios naršyklėje. Puiku eksperimentams ir greito kodo bandymui.

Kada eiti į bendruomenę ir kodėl tai svarbu

Programavimas gali atrodyti kaip vienišas užsiėmimas – sėdi vienas prie kompiuterio ir kodi. Iš tikrųjų taip nėra, ir vienas iš greičiausių būdų tobulėti – dalyvauti bendruomenėje.

Discord serveriai yra šiandien viena aktyviausių vietų. freeCodeCamp, The Odin Project, Reactiflux (React kūrėjams), Python Discord – tai yra vietos, kur galima užduoti klausimą ir gauti atsakymą per kelias minutes. Svarbu: prieš klausdamas, pabandyk pats išspręsti problemą bent 20-30 minučių. Tai ugdo problemų sprendimo įgūdžius, ir kai galiausiai klausi, klausimas bus daug konkretesnis.

Stack Overflow – tai yra programuotojų klausimų ir atsakymų platforma, kuri egzistuoja nuo 2008 metų. Praktiškai bet kokia problema, su kuria susidursi pradžioje, jau buvo kažkieno paklausto ir atsakyta. Išmok efektyviai ieškoti čia.

Reddit – subredditai kaip r/learnprogramming, r/webdev, r/Python yra geros vietos gauti patarimų ir pamatyti, kaip kiti sprendžia panašias problemas.

GitHub – ne tik kodo saugykla, bet ir bendruomenė. Žiūrėk į kitų žmonių kodo projektus, bandyk suprasti, kaip jie išsprendė problemas. Open source projektai yra puiki mokykla.

Vienas praktinis patarimas: rask bent vieną žmogų, kuris mokosi kartu su tavimi. Gali būti draugas, kolega, arba žmogus iš Discord serverio. Atskaitomybė – kai žinai, kad kažkas kitas irgi dirba ir tikisi, kad tu dirbi – yra vienas galingiausių motyvacijos įrankių.

Kaip išvengti „tutorial hell” ir pradėti kurti realiai

Apie tai jau užsiminiau, bet tai yra tokia dažna problema, kad verta skirti atskirą sekciją. „Tutorial hell” – tai būsena, kai žmogus begalę laiko praleidžia sekdamas kursus ir pamokėles, bet niekada nepradeda kurti savarankiškai. Tai yra psichologinis reiškinys: pamokėlės suteikia saugumo jausmą, nes visada yra atsakymas, visada yra kitas žingsnis. Savarankiškas kūrimas yra nepatogus, nes niekas tau nesako, ką daryti.

Kaip išeiti iš šio rato? Štai konkretus planas:

Kai baigsi bet kurį kursą arba modulį, nedelsdamas pradėk projektą, kuris naudoja tai, ką išmokai. Projektas neturi būti originalus ar sudėtingas. Klasikiniai pradedančiųjų projektai: skaičiuotuvas, oro prognozės programa (naudojant nemokamą API), todo sąrašas, paprastas žaidimas (pvz., „atspėk skaičių”). Kai pradedi tokį projektą, iš karto susidursi su problemomis, kurių nebuvo kurse. Tai yra geras ženklas – tai reiškia, kad mokaisi.

Naudok metodą, kurį vadinu „build-break-fix”: sukurk kažką, tyčia sulaužyk (pakeisk kažką, kad neveiktų), ir tada pataisyk. Tai ugdo gebėjimą debuginti – vieną svarbiausių programuotojo įgūdžių.

Kai projektas veikia – pabandyk jį patobulinti. Pridėk naują funkciją. Pakeisk dizainą. Optimizuok kodą. Kiekvienas toks žingsnis yra mokymasis be pamokėlės.

Kai nemokami resursai baigiasi – ir kas toliau

Nemokamų resursų pakanka labai toli. Bet yra momentas, kai gali norėti daugiau struktūros, mentoriaus arba specializuoto turinio. Čia svarbu žinoti, kad net ir tada nereikia mokėti tūkstančių eurų.

Coursera ir edX – daugelis kursų čia yra nemokami audito režimu. Tai reiškia, kad gali žiūrėti visą turinį nemokamai, tik sertifikato negausi. Jei sertifikatas nereikalingas – puiku.

MIT OpenCourseWare – MIT universiteto kursų medžiaga, prieinama nemokamai. Čia yra tikrai gilūs kompiuterių mokslo kursai tiems, kurie nori suprasti teorinius pagrindus.

Udemy – techniškai mokama platforma, bet kursai čia nuolat parduodami su 90% nuolaida. Kursai, kurie kainuoja 200 eurų, reguliariai parduodami už 10-15 eurų. Populiarūs autoriai kaip Angela Yu (Python), Jonas Schmedtmann (JavaScript, CSS) ir Andrei Neagoie turi tikrai aukštos kokybės kursus.

Tačiau svarbiausia suprasti: jokia mokama platforma neišmokys tavęs greičiau nei tu pats, jei dirbsi su realiais projektais. Mokėjimas pinigų nekuria motyvacijos – ją kuria tikslai ir rezultatai.

Dar vienas dalykas, apie kurį retai kalbama: kai jau moki pagrindus, vienas geriausių būdų tobulėti yra skaityti kitų žmonių kodą. GitHub yra pilnas open source projektų. Rask projektą, kuris tave domina, ir tiesiog skaityk kodą. Bandyk suprasti, kodėl autorius pasirinko vieną ar kitą sprendimą. Tai yra kaip knygų skaitymas rašytojui – tu absorbuoji stilių, struktūrą ir idėjas.

Galiausiai – nesibaimink, kad esi per senas, per jaunas, per užimtas arba nepakankamai matematiškai gabus. Programavimas nereikalauja genijaus. Jis reikalauja kantrybės, smalsumo ir noro sėdėti su problema tol, kol ji išsisprendžia. Šie įgūdžiai yra ugdomi, ne įgimti. Ir geriausia vieta pradėti – tai ten, kur esi dabar, su tuo, ką turi. Kompiuteris, interneto ryšys ir valanda per dieną – to pakanka, kad po metų tu žiūrėtum į savo pirmąjį projektą ir stebėtumeis, kiek toli nuėjai.