Atnaujinta 2018 01 01. Tikiuosi įrašas tapo aiškesniu, naudingesniu ir labiau užkabinančiu pradėti.

Nusprendęs mokytis programuoti ilgai ieškojau kaip teisingai pradėti. Nenorėjau suklysti pasirinkdamas blogą kalbą ar kryptį, tad ilgai trypčiojau ir atidėliojau mokymasi.

Šiame įraše tikiuosi paprastai ir aiškiai papasakoti apie pačius pirmus žingsnius į programavimą. Tikiuosi, kad pavyks sumažinti būtinybę gaudyti informaciją klaidžiojant pačiam. Galbūt askaitęs šį postą galėsi nerti tiesiai į programavimą ir išnerti jau būdamas tikru programuotoju.

# Pagrindiniai klausimai prieš pradedant

Ši dalis gali atrodyti nesvarbi ir nereikalinga mokantis programuoti. Jei jauti, kad šitai nėra tiesiogiai susiję su programavimu, gali drąsiai praleisti iki "Kokią kalbą pasirinkti".

Apgalvokim nedidelį planelį, užtruksim daugiausia valandą. Tereikia atsakyti į kelis klausimus.

# Kodėl nori programuoti? Kaip programavimas pakeis tavo gyvenimą?

Prireiks daug kantrybės. Ypač kai pastrigsi ir norėsi mesti. Reiks stiprios motyvacijos grįžti ir tęsti mokytis. Nežinau stipresnės motyvacijos norą kaip nors pasikeisti.

Visi "kodėl" yra geri. Mano buvo tiesiog noras dirbti white collar (ofisinį) darbą ir kada nors patapti nepriklausomu nuo vietos.

# Kiek laiko, energijos, kantrybės ir pinigų gali skirti, kad išmoktum programuoti?

Procesas šiek tiek skirsis jei neturi jokių įsipareigojimų ir gali skirti visą laisvą laiką programavimui, nuo to jei turi vaikų, paskolų, mažai laisvo laiko.

Pakanka tiesiog suvokti savo situaciją. Bus lengviau priiminėti sprendimus.

# Kokį pranašumą suteikia dabartiniai tavo sugebėjimai, profesiniai ir asmeniniai?

Persikvalifikuodamas ir tapdamas programuotoju būsi lyg ką tik mokyklą baigęs, be reikiamos patirties. Už tai tavo dabartiniai sugebėjimai arba esama patirtis gali suteikti pranašumą.

Pardavimų, bendravimo su klientais, vadybos ar bet kokia kita patirtis yra naudinga. Patirtis gali padėti lengviau gauti pirmą darbą, klientų, gali padėti gauti geresnį atlyginimą arba tiesiog parodyti darbdaviui sugebėjimą greit mokytis dalykų.

Sugebėjimas parduoti save bus ypatingai svarbus įsiliejant į rinką.

Kaip ir ankstesnėse dalyse, svarbu tiesiog apgalvoti savo privalumus ir juos suvokti.

Penki klausimai apsisprendus rimtai siekti programuotojo darbo

# Kaip įsivaizduoji (svajoji), kad atrodys tavo gyvenimas išmokus programuoti?

Kur dirbsi, kokie bus klientai, užsakymai, projektai prie kurių dirbsi? Kaip atrodys ofisas, kas bus kolegos, koks tavo vaidmuo komandoje?

Net jei vizija pasikeis vėliau, labai gerai vizualizuoti siektinus dalykus. Padės nepasimesti apsisprendžiant ir renkantis kryptį. Pasirinkimų programuotojams tikrai daug.

# Kokią kalbą pasirinkti?

Pradedant mokytis, gali pasirodyti, kad tai svarbiausias klausimas. Net sunku suvokti, kodėl daug kas sako "kalba nesvarbi, reikia mokytis programavimo principų".

Iš tikro tai kalba nesvarbi. Arba tai net nėra tas klausimas kurį reiktų sau užduoti. Tikrasis klausimas yra ką nori programuoti? Internetinės svetainės, žaidimai, programėlės telefonams, kompiuteriams, mikrovaldikliai (IOT), savivaldės transporto priemonės, dirbtinis intelektas - visos sritys turi tinkamiausias joms kalbas.

Mano galva, internetiniai puslapiai yra tinkamiausias kelias norintiems persimokyti ir papti programuotojais. Todėl toliau kalbėsiu apie web'ą.

# Kodėl internetiniai puslapiai?

Išmokti kurti (rašyti, programuoti) internetinius puslapius yra bene lengviausia. Mes visi kasdien naudojamės internetiniais puslapiais, juos suprantame, jie lengvai prieinami.

Internetas ir puslapiai jame kuo toliau tuo labiau tampa panašūs į tikras programas, kokias seniau mes turėdavome tik operacinėj sistemoje. Jau dabar randasi internetiniai puslapiai, kurie beveik niekuo nenusileidžia į kompiuterius įrašomoms programoms.

Webas gali būti puikus įvadas į programavimą. Pramokus programuoti internetinius puslapius, galima tęsti į sudėtingesnes šakas.

Galiausia, programuotojų bendruomenė prigalvojo būdų, leidžiančių kurti programinę įrangą (software) įvairioms platformoms, mokant programuoti tik web'ui. Tarkim galima sukurti programėlę telefonams arba kopiuteriams naudojant tas pačias technologijas (kalbas) kaip programuojant internetinius puslapius.

Aš asmeniškai tikrai norėčiau pramokti ir naudoti daugiau kalbų, nes įdomu. Tačiau grynai iš praktiškumo dar nespėjau išmokti ir profesionaliai dirbti su daugiau kalbų. Jei mano karjera augs pagal planą, gali būti, kad ir neteks daugiau mokytis kitų kalbų. Nebent iš smalsumo.

# Frontend'as ir Backend'as

Webo programuotojai skirstomi į dvi puses, frontenderius ir backenderius. Nėra svarbu kuri pusė tau labiau patiks, pačioj pradžioj net nebūtina apsispręsti.

  • Frontendas - atsakingas už išvaizdą, už kodą kuris veikia vartotojo naršyklėj.
  • Backendas - atsakingas už kodą veikiantį serveryje, pagrinde programos logiką.

Tikriausia frontendą renkasi tie, kam svarbu matyti savo darbo rezultatus, juos "pačiupinėti". Backendas labiau dealina su informacija, jos išsaugojimu, apdorojimu, iškvietimu.

Verta pamėginti abu. Gerai žinoti kas jie tokie, pagal tai priklausys kalbos pasirinkimas.

# HTML ir CSS

Pagaliau priėjom prie tikrojo kalbos pasirinkimo.

  • HTML yra atsakingas už informacijos atvaizdavimą.
  • CSS padaro informaciją gražia, pakeisdamas išvaizdą.

Vos pramokęs šias kalbas, galėsi kurti puslapius. Puslapis kurį dabar skaitai yra sulipdytas beveik vien iš HTML ir CSS. Tik išoriniai puslapio papildiniai parašyti su JavaScript'u, bet aš to kodo net nerašiau.

Taigi, pats pirmas žingsnis turėtų būti HTML ir CSS pramokimas. Smagiausia, kad šie dalykai yra tikrai nesudėtingi ir ganėtinai lengvai perprantami. Užteks paskaitinėti ir parašinėti šiek tiek, kad suprastum ir galėtum judėti pirmyn.

Ką mokytis pramokus HTML ir CSS

# JavaScript

JS jau yra tikra programavimo kalba. Aš rašau vien javascriptus ir kaip minėjau man dar neatėjo laikas kai dėl praktiškų priežasčių būtų buvę verta imtis kitos kalbos.

Atsimeni kai minėjau, kad su webo technologijomis įmanoma parašyti beveik bet ką? Taip yra dėl to, kad programuotojai prisigalvojo būdų runninti javascriptą praktiškai visur.

Programuotojai arba myli arba nekenčia JavaScripto, bet vis mažiau kas laiko JS netikra kalba. Gal dėl to, kad JS yra viena populiariausių programavimo kalbų pasaulyje?

Taigi pramokus HTML ir CSS, reiktų pramokti ir JavaScripto. Net jei galiausia pasirinksi kitą kalbą, JS vis tiek bus naudingas. Jis naudingas visiems webo programuotojams.

Vieninteliai programavimo kursai kurių tau reikės

# Pirmi žingsniai

Gerai, žinai, kad nori būti webo programuotoju. Žinai, kad turėtum pramokti HTML, CSS, o tada JavaScrip'ą. Kokie turėtų būti tavo pirmi žingsniai?

Turiu visai gerą įrašą apie vietas kur gali pamėginti programuoti, net jei nesi niekad to bandęs.

Jų visiškai pakaks pramokti HTML ir CSS, gal šiek tiek JavaScripto. Ypatingai HTML Dog, paprastas, greitas ir labai aiškus.

Iš tikro svarbiausia pradėti. Galima praleisti valandų valandas renkatis, analizuojant kas geriau, ką mokytis, kuri medžiaga geresnė, taip tik labiau atitolinsi laiką kai jau būsi "tikru" programuotoju.

Mano nuoširdžiausia rekomendacija dabar yra pramokti dalykus. Pereik HTML Dog, tada CodeAcademy HMTL, CSS ir JavaScript'o krytis, o tada gali ateiti paskaityti Patapimo Programuotoju Planą, jame pasistengiau sudėlioti mokymosi progreso seka.