Programuoti pradėjau prieš 3-5 metus. Atrodo, kad wannabe programerių situacija pasikeitė. Atsirado daugiau būdų patekti į programavimą, bet kartu atsirado gerokai daugiau tokių norinčių patapti programuotojais. Nujaučiu, kad mano patarimai yra senstelėję. Šiandien noriu pergalvoti, ką daryčiau kitaip jei tik pradėčiau mokytis programuoti dabar. Taip pat noriu pažvelgti kaip pasikeitė pasaulis ir požiūris į tuo norėtojus.

# Kalbos ir technologijų pasirinkimas

Kuo toliau, tuo labiau suvokiu, kad tai nėra taip svarbu kaip atrodo pradedant. Išmokti programuoti yra sudėtingiau, nei vėliau išmokti naują kalbą ar frameworką.

Kaip ir daugelis, aš nežinojau kur tiksliai noriu atsidurti. Žinojau, kad noriu būti paklausus specialistas, noriu išmokti kuo greičiau ir kuo lengviau. Svajojau kada nors tapti nepriklausomu nuo vietos, bet net neįsivaizduoju ar tai įmanoma.

Greitas tyrimas parodo, kad visi ravina apie JavaScript’us ir tai man parodo atvirą galimybę prisijungti prie šito reikalo.

Javascriptas ir Frontendas yra tiesiausias kelias į programavimą. Savo programuotojo karjerą pradėjau karpydamas dizainus, tęsiau rašydamas vis daugiau JavaScripto. Tada iš JavaScripto dar buvo madinga juoktis ir šaipytis, dabar tokių pašaipų girdžiu vis mažiau ir mažiau.

Jei tavo tikslas neturi visiškai aiškių reikalavimų kalbai ir technologijai, rekomenduoju pradėti nuo JS. Su Javascriptu pradėti lengva, net mano mama sugebėtų atsidaryti Chrome konsolę ir nupastinti ten for loopą. Aišku jei tik norėtų. Šitas privalumas gali pasirodyti gan menkas, bet pamėgink pasikurti aplinką kitos kalbos programavimui ir suprasi apie ką aš.

Kitas labai didelis privalumas yra kalbos universalumas. Kadaise girdėjau, kad artėjam prie etapo kai viską rašysim viena kalba. Panašu, kad ta kalba bus JavaScriptas ir visokios jo atmainos. Jau dabar su JS’u galima parašyti praktiškai viską ką nori. Internetinius puslapius, mobilias programėles, programas kompiuteriams, programuoti mikrovaldiklius, reiktų gerai pagalvoti ko dar negalima rašyti su JS’u.

Šie dalykai kelia JS’o programuotojų paklausą. Ypač patyrusių ir gerai savo darbą išmanančių, tokių kur tapsi po keletos metų. Be to per tą laiką galėsi nuspręsti kur link labiausia nori judėti. Taigi pasirinkdamas JavaScript’ą neapribosi savęs taip labai kaip galbūt apribotum save rinkdamasis kitą kalbą.

Jei mokyčiausi programuoti iš naujo, nedvėjodamas nerčiau tiesiai į JavaScript’ą.

Turėčiau paminėti, kad mano situacija pareikalavo, kad pramokčiau WordPress'ą ir PHP. Naudingas ir pavojingumo suteikiantis įrankis. Nematau nieko blogo jei tenka pramokti ir kokį CMS’ą, nes taip tiesiog lengviau suteikti klientams reikalingą naudą.

Taip, tai numuša susikoncentravimą, bet kartu duoda šiek tiek saugumo ir unversalumo tuo momentu kai esi visiškas junioras.

# Triukšmas (krūvos kalbėtojų ir norėtojų būti programuotojais)

Delfiai, kursų promotionas, visuomenės susigalvoti mitai labai populiarina mintį būti programuotojais. Gali pasirodyti, kad ši specialybė yra lengvas, greitas būdas gauti gerą darbą ir didelį atlyginimą.

Iliuzija, kad gali susimokėti už kursus ir per du mėnesius tapti programeriu yra gerokas šūdas. Labai džiaugiuosi, kad man neteko nusivilti, nes neturėjau nerealių iliuzijų. Visada stengiuosi sau priminti, kad dalykai kurie atrodo per daug lengvi (too good to be true) yra netikri.

Atsigavimui siūlau paskaityti kiek laiko užtrunka freeCodeCamp’o mokslai. Du metus dirbant ties jais pilnu etatu. Taip, du metai iki kol gali būti programuotoju. Dar ten sako, kad darbą gali gauti greičiau. Abu šie teiginiai yra tiesa ir abu šie teiginiai turėtų nuleisti ant žemės. Tai tiesog reiktų atsiriboti nuo šito triukšmo ir atsidėti darbui.

Mokydamasis programuoti du aštonioliktais vis priminčiau sau, kad šitai užtrunka laiko. Atsiminčiau pasitikėti procesu ir įdėtu darbu.

# Juniorų perteklius

Triukšmas ir visuomenės dėmesys duoda daug eismo persimokymui programuoti. Net jei iš kiekvieno šimto kalbėtojų kokie 5 pamėgina programuoti, o iš tų pamėginusių kiekvieno šimto penki pramoksta ir iš tų pramokusių kažkiek gauna darbus, susidaro nemažai žalių programuotojų. Pridėkim mokymosi įstaigų pabaigėjus, tai tikrai pradedančiųjų kiekis yra stiprus.

Gauti pirmą darbą yra gerokai sunkiau nei buvo prieš tris metus. Turi būti geresnis, norėti labiau, tobulėti greičau, o svarbiausia mokėti pademonstruotis savo privalumus.

Gavau pirmą darbą Klaipėdoje. Realiai mokėjau tik pagrindus, bet labai norėjau mokytis ir buvau pasirengęs išmokti bet ką. Gali būti, kad darbą gavau, nes Klaipėdoj konkurencija buvo labai maža (mažai juniorų).

Labai tikėtina, kad beveik neįmanoma gauti darbo mokant tik pradmenis. Už tai verta pagalvoti apie patapimą “tikru programuotoju” darbo gavimui. Sprendimas paprastas, reikia daugiau laiko, kantrybės ir tikėjimo savim. Taip pat pirmas darbas gali būti ne visai darbas, o internshipas. Tiesiog veikla padėsianti gauti patirties ir būsimam darbdaviui įsitikinti, kad kietai varai.

Aš gan ilgai negalėjau persilaužti ir įtikinti savęs, kad esu tikras programuotojas. Kol dar mokiausi, atrodė, kad daugiau nei dizainų karpymas aš nenukeliausiu. Galvojantiems panašiai galiu tik priminti kiek trunka pilni freeCodeCamp’o kursai. Tiesiog reikia duoti sau laiko ir stengtis.

Mokantis dabar, mano tikslas iš karto būtų patapti "tikru programuotoju”. Prieš gaunant darbą stengčiausi turėti parašęs bent vieną pilną projektą. Tuo pat metu, vis tiek pradėčiau ieškotis darbo ir applyinti jau pramokęs pagrindus.

# Apie ką kalba internetai

Būti hipsteriu apsimoka. Nepaisant realios galimybės, kad vakarietiška mada mus aplenks, gali gauti rimtą pranašumą (unfair advantage) pradėdamas dalykus before they were cool.

Ruby on Rails taip ir neprigijo mūsuose, o va Angularas ir kiti JavaScripto dalykai tikrai populiarūs. Dabar galvoju, kad reikia ne tiek madų vaikytis, kiek tendencijų. Tendencija buvo SPA (Single Page Application) populiarėjimas.

Aš pats jau kuris laikas svaigstu apie Progressive Web Appsus, Chatbotus ir balsu valdomus dalykus. Tikiu, kad jie yra labai artima ateitis ir jų išmanymas man duos pranašumą.

Toks strateginis galvojimas geriausia veikia jau turint pagrindus, gal net pirmą darbą. Gali būti per daug rizikinga ir tikrai per daug sudėtinga mokytis the very next thing dar kai jie nėra mainstreamiai. Tiesiog medžiagos gali nepakakti.

Iš kitos pusės, kuo anksčiau pradėsi apie tai galvoti, tuo greičiau pasieksi produktyvumą ir greičiau kelsi sukuriamą vertę.

Taigi jei mokyčiausi dabar, vos gavęs pirmą darbą pradėčiau mokytis ir kodinti visokius Messengerio botus, aiškintis kas tas PWA ir etc. Tiesą pasakius, nuolatos šitai darau ir stengiuosi mokytis naujus, visai nesenai pasirodžiusius dalykus.

# Programavimo kursai nėra bilietas į pirmą darbą

Pasakoti pradedančiąjam apie daugiatūkstantinį programuotojų poreikį yra tas pats, kas kliedėti besimokančiam vairuoti septyniolikmečiui apie fūristų (vilkikų vairuotojų) trūkumą. Taip, poreikis yra, bet tikrai ne tų švieželėnų, katrie porą mėnesių palankė kursus.

Galbūt prieš metus kursai buvo tokiu tramplynu, bet kuo toliau, tuo labiau kursai turėtų būti tramplynų į praktiką įmonėje (internship). Jei pradedančiojo kursai tau prižada darbą po jų, bėk kuo toliau. Jei garantuotai prižada internshipą, bet nepasako kaip konkrečiai jį pasiekti, bėk kuo toliau. Net jei prižada praktiką ir pasako kaip ją pasiekti, bet neužrašo to į sutartį… aš irgi bėgčiau.

Mokantis programuoti du aštuonioliktais, turėčiau rimtai apsvarstyti galimybę eiti į kursus. Jei nuspręsčiau dalyvauti kursuose, mano tikslas būtų pramokti pakankamai, kad gaučiau praktiką ir galėčiau ją paversti pirmu darbu. Todėl kruopščiai išsiaiškinčiau praktikos galimybes ir gaučiau sąlyginį pasižadėjimą praktikai. Tokį kur, jei kažką atliksiu pagal reikalavimus, garantuotai gausiu praktiką.

# Darbas ir praktika

Jokia kita veikla nebus naudingesnė už kodo rašymą, perrašinėjimą ir analizavimą. Koduotos (as in tepaluotos) rankos yra geriau už bet ką kitą. Šito suvokimas vienintelė tikra priežastis kodėl aš mokiausi programuoti labai ilgai, bet tikrasis progresas atsitiko per porą paskutinių mėnesių prieš gaunant darbą.

Mokydamasis iš naujo, praleisčiau visą klaviatūros laiką rašydamas kodą. Iš pradžių perrašinėčiau tutorialus, net pačius paprasčiausius, kur reikia passetinti kintamąjį ir paskui jį iškviesti. Vėliau perrašinėčiau sudėtingesnius, tada mėginčiau visaip juos kaitalioti, laužyti ir išplėsti.

Galiausia rodyčiau savo darbo rezultatus visiems aplink. Dėčiau į Githubą, rašyčiau blogo postą, dėčiau į savo portfolio. Tikriausia iš pat pradžių rinkčiausi daug mažučių projektėlių (tarkim https://javascript30.com) ir juos pumpuočiau vieną po kito be jokio sustojimo.

Paskutinius mėnesius iki pirmo darbo, aš tiesiog karpiau dizainus vieną po kito. Taip kruopščiai ir gerai kaip tik sugebėjau. Iki tol turėjau sugebėjimų, bet niekaip nesugebėjau jų sulipdyti į vieną naudingą rinkinį kurį galėčiau parduoti darbdaviui. Kodo rašymas ir rodymas buvo laimintis reikalas.

# Susirask mentorių

Aš neturėjau drąsos nei supratimo kaip rasti mentorių. Radau keletą jutūberių, kurie tapo mano netiesioginiais mentoriais. Jie ir jų mintys man padėjo persilaužti ir suvokti kaip elgtis, kad pasisektų.

Kartais suvokti net pačius elementariausius dalykus prireikia nemažai laiko. Ypač kai aplink daug triukšmo, pasirinkimų, skambių nuomonių ir elitizmo. Treneris gali padėti nepasimesti.

Žmonės turintys draugą, pažįstamą programuotoją, judės daug greičiau ir turės tikrą galimybę tapti programuotoju. Stipriausia, kad tas žmogus jau yra išsprendęs dalykus, kurie tau neaiškūs.

Žaisdamas su Lara Croft, dažnai pasimesdavau ir nebežinodavau kaip pereiti lygį. Tada pagūglidavau ir paskaitydavau, kad kurioj oloj yra paslėptas raktas ar jungtukas ir galėdavau tęsti.

Su mentoriumi lygiai tas pats. Kur paslėptas raktas tikriausia būčiau išsiaiškinęs ir taip, bet prieš tai metęs žaidimą, grįžęs, vargęs ir vėl ieškojęs daug kartų. Mentorius gali tiesiog nukreipti tinkama linkme. Mentorius gali padėti susidaryti aiškų planą, gal net padėti su disciplina jo laikytis.

Pradėjęs mokytis išsiaiškinčiau kaip rasti gerą mentorių. Tada nepagailėčiau energijos įsiprašyti, kad man padėtų.

# Minkšti dalykai

Soft stuff. Sugebėti programuoti yra būtina. Be sugebėjimo programuoti nevyks niekas. Bet kaip galvoji, kam lengviau gyventi ir kas greičau juda, gerai programuojantis ar gerai programuojantis ir turintis kitus įgūdžius veikėjas?

Didžiausias mano programuotojo privalumas yra mokėjimas komunikuoti. Rašyti ir kalbėti apie tai ką darau, parduoti savo sugebėjimus ir save kaip tinkamą žmogų galintį kodu išspręsti verslo problemas.

Rašymas, kalbėjimas, geras portfolio, bendravimas su kitais programuotojais visų pirma leis potencialiam darbdaviui (arba klientui) tave pažinti iki pradedant darbinį kontaktą. Esu didelis tikėtojas, kad tai padės tau gauti geresnius darbus, daugiau pinigų ir daug greičiau lipti karjeros etapais.

Atsimenu vieną darbo interviu, per kurį šitas blogas išgelbėjo mane nuo darbo koletyve kuriam nebūčiau pritapęs. Per interviu manęs niekas nekalbino. Pokalbį vedžiau pats, pasakojau ką dirbu, ką moku, kas man įdomu, mėginau klausti apie projektą prie kurio turėčiau dirbti. Galiausia visą laiką tylėjęs mano amžiaus bičas pasakė kažką panašaus į: “Gali čia nepasakot, mes skaitėm tavo blogą ir žinom viską. Tai kas geriau, dirbti ar freelancinti?”

Mano atsakymas aišku praplaukė jo nepalietęs, nes jis dar pridėjo: “Mums reikia ko nors, kas dirbtų tiek, kiek naudosim softą, bent penkis metus. Kas garantuos, kad radęs ką nors geriau nepabėgsi?”

Nežinau kodėl jie mane iš viso pasikvietė, bet žinau, kad šitas blogas sutaupė energijos ir man, ir jiems.

Šiek tiek gaila, kad mano darbo auditorija nekalba lietuviškai. Galbūt jei mokyčiaus programuoti dabar, pagalvočiau apie tinkamos kalbos ir auditorijos pasirinkimą prieš rašydamas blogą.

# Kodėl 2018 yra puikūs metai mokytis programuoti

Lygiai dėl tos pačios priežasties kaip 2014. Programuoti yra gerai, pradėti niekad ne per vėlu. Technologijų pasaulis greitai keičiasi, plečiasi, naujokams visad atsiras vietos. Randasi naujos šakos, kurios panašu, kad bus massive.

Dalykai nestovi vietoje, naujokai turi puikias galimybes gan greit pasivyti ir pralenkti snaudžiančius patirties turinčius programerius. Mane ypatingai jaudina HTML5 ir webo tapimas į pilnavertę platformą softui. Balsu valdomi dalykai (Alexa, Google Home, etc), labai tikėtina, kad vyksta kažkas panašaus į tai kas vyko atsiradus obuolio Appstore.

Žodžiu mokytis verta, imkit JavaScript’ą, atsiduokit kodo rašymui, pasistenkit rasti mentorių ar bent jau susidraugauti su kitais programuotojais.

Net jei šiuo metu apie programavimą beveik nieko nesuprantat, teisingai elgiantis visiškai realu per ateinančius 6-24 mėnesius pakeisti savo karjerą ir tapti tikru programuotoju 😃