Šitas postas tegul bus toks FAQ skyrelis, kur surašau dažniausia pasitaikančius klausimus ir atsakymus į juos. Esu visiškai tikras, kad bent vienam skyrelyje atpažinsi situaciją kurioj esi buvęs, o gal net dabar būni.
# Gauti leidimą
Pats dažniausias šio blogo “darbas” yra leisti veikti. Kad ir kokią visiškai įtikinamą, logišką ir visiems priimtiną priežastį neprogramuoti turi, leidžiu jos nepaisyti.
Visiškai suvokiu, kad kartais reikia kažkokio random bičelio iš internetų leidimo veikti ką norėtum veikti, bet sau (dar) neleidi.
Tai žinok, leidžiu. Tikrai, gali mokytis programuoti, medžioti pirmą darbą, planuoti ir ruoštis tolimesniems karjeros šuoliams.
Pats paprasčiausias pratimas čia, pakeisti žodelį “bet” į “ir.” Pakeičiam “Norėčiau programuoti, bet life happens, niekaip neturiu laiko” į “...ir rasiu būdą gauti bent kelias valandas kiekvieną sekmadienį programavimui mokytis.”
Prigavęs save, kad ieškau kieno nors leidimo veikti atsimenu, kad pasaulis yra keista, daugiausia mūsų įsivaizdavime egzistuojanti "realybė" (o gal net haliucinacija). Visokie leidimai ir draudimai gyvena grynai mūsų galvoj. Niekas negali mums nei leisti, uždrausti veikti kokius nors dalykus.
Iš tikro gal nereiktų kliautis kažkokio bičelio internetuose leidimu. Svarbiausia tavo paties leidimas.
Pirmiausia leidi, tada kiek įmanoma labiau stiprini savo galimybes pasiekti ko nori. Jei tik skirsi pakankamai pastangų ir laiko, vis tiek pasiseks ir pavyks.
# Įtikėti, kad sugebėsi
Šitas gali nutikti bet kuriam žingsnelyje. Nesvarbu ar tik pagalvojai apie programavimą ar ruošiesi peršokti į kažkelintą darbą.
Išlenda įvairiausiom formom. Dažniausia prokrastinacija, susidomėjimo ar motyvacijos sumažėjimu, kartais net reikalo numetimu nenumatytam periodui.
Nemanau, kad yra koks quick fix'as šiam reikalui. Kiek pačiam pavyko pastebėti, tiesiog reikia pakankamai laiko, pastangų ir noro.
Turbūt daugeliui iš mūsų nubėgti maratoną atrodytų neįmanoma misija. O kaip jei šiam reikalui skirtum du, tris ar gal penkis metus, kasdien treniruotumeis ir labai labai norėtum įveikti tuos 42km?
Dar pasikartojant galiu tik padrąsinti veikti dalykus ir pasitikėti procesu.
# Pasirinkimų paralyžius ir tolimesnio žingsnio baimė
Du labai susiję dalykai. Galėčiau atsiminti krūvą pavyzdžių, kai bijodamas žengti laipteliu aukščiau aš vis prisgalvodavau ką dar reikia nuveikti prieš ryžtantis. Pakalbėkim apie vieną sudėtingiausių žingsnelių.
Įdomiausi tie atvejai, kai žmonės būna gerai pasirengę, atlikę visus reikalingus veiksmus ir yra pasirengę gaudyti pirmą darbą. Tik kažkodėl visaip atidėlioja, nes ar tai bijo "sudeginti tiltus," ar "dar turi išmokti kokį vieną labai svarbų daiktą."
Atsidūrus tokioj situacijoj svarbu suvokti, kad mes niekada nebūsim visiškai pasirengę kitam žingsniui. Visada turėsim minčių ir būdų pagerinti savo pasirengimą. Bet ar tikrai kokie nors pakeitimai bus tiek kritiniai, kad išspręstų mūsų dabartinį pastrigimą.
Asmeninė patirtis sako, kad to baisaus žingsnio žengimas padeda surinkti svarbios informacijos, padėsiančios geriau suvokti ko mums iš tikrųjų trūksta.
Lyg nedidelis eksperimentas - pabandom, smagu jei pasiseka, jei ne, natūraliai gaunam planą tolimesniems veiksmams. Tai padeda sutaupyti daug laiko kurį kitu atveju skirtume dvejonėms arba ne pačių produktyviausių dalykų darymui.
"Kokią kalbą mokytis" buvo paralyžiuojanti dvejonė, kol neprisiminiau mokykloj bandyto Pascalio. Per kelis vakarus Turbo Pascalis leido man suvokti kaip veikia kintamieji, sąlygos, ciklai, o svarbiausia, suvokti kaip iš tikro veikia programavimas ir įsivaizduoti galimybes, kurias atvers sugebėjimas programuoti.
Nors po to Pascalio niekur taip ir nepanaudojau, jo pabandymas atvėrė akis į programavimo pasaulį.
Galėjau ir toliau skaityti kodėl PHP yra kaka, blogus lyginančius kalbų greičius, sintaksės grožį, bet džiaugiuosi pasirinkęs veikti. Net jei tas pasirinkimas nebuvo geriausias, jis davė pakankamai informacijos tolimesniems žingsniams.
Galiu dar pridėti šitą postą, kur pasakoju apie savo gan avantiūristiškus bandymus. Čia aprašyti pavyko visai sėkmingai, bet turiu geroką rinkinuką ir nepavykusių. Tie nevykę gal net geresni, nes davė pamokų ir pamokų praktiškai iškart.
# Atgalvoti visus susigalvojimus kodėl negali programuoti
Šitas lengvas ir, nors anksčiau gaudavau panašių emailų, dabar jau praktiškai nebepasitaikantis. Norėčiau įsivaizduoti, kad Kodinu blogas kažkiek prisideda sklaidant įvairiausias fantazijas kodėl kuris nors žmogus "negali išmokti programuoti".
Teko garbės bendrauti su įvairiausias žmonėm, kurie nepaisant savo situacijos visaip bandė ir sugebėjo patapti programuotojais. Taip, kai kuriems prireikė daug laiko, gal kai kuriems vos vos pavyko, už tai mes visi skirtingi ir mūsų kelias į tikslą vis kitoks.
Jei dar turi kokį nors stiprų susigalvojimą kodėl negalėtum programuoti, būtinai parašyk man. Kartais reikia įveikti svarias kliūtis tapti programuotojais. Jos prideda laiko ir reikalauja papildomų pastangų, bet yra įveikiamos.
Galiu paminėti bene dažniausią realią kliūtį pradėti programuoti - anglų kalbos nemokėjimas. Sprendimas akivaizdus ir paprastas, tiesiog visam procesui pridės laiko. Kol išmoksi svarbiausią programavimo kalbą - anglų.
# Suvokti, kad tai maratonas
Pastangų ir motyvacijos reikės daug ir ilgam. Nors pramokti programuoti galima gan greit, gal net darbą gauti galima sąlyginai greit, pats procesas yra ilgas ir lėtas.
Dažnai nesuvokimas pasireiškia pradedantiesiems - "jau išmokau JavaScript'ą, ką mokytis dabar." Arba po pusmečio žmogus jau "moka" kelias kalbas, keletą frameworkų, nori dirbti, bet iš tikro tėra paviršutiniškai susipažinęs su šitais dalykais.
Dirbdamas pirmą darbą aš jau įsivaizdavau, kad moku daugbę dalykų, o kitus galiu išmokti per kelias savaites. Darbo pokalbiai ir bandymas (prieš laiką) gaudyti sudėtingesnius darbus mane nuleido ant žemės.
Pati tikriausia tiesa yra ta, kad reikia išmokti tikrai daug. Įprastai tas mokymasis nutinka ne susipažįstant su technologijomis per tutorialus, o dirbant prie realių projektų. Kuo puikiausiai tinka asmeniniai projektai. Tada po truputį pradeda aiškėti kiek daug iš tikro reikia laiko ir žinių, kad būtum naudingas.
Gal dar galima paminėti kitą šio nesuvokimo variantą: "metu darbą, turiu santaupų pusmečiui, mokysiuos programuoti." Dar panašus būna "eisiu į programavimo kursus."
Šioj vietoj tiesiog noriu paminėti, kad kartais to pusmečio gali neužtekti net kai jau moki programuoti, turi tam įrodymus ir tenori susirasti darbą, o ką jau kalbėti apie vos susidomėjusius programavimu.
# Susigaudyti kas iš tikro svarbu
Jei ankstesnius punktus galima priskirti labiau psichologiniams, pasitikėjimo ar kažkokiem panašiem dalykams, tai susigaudymas yra grynai praktinis reikalas.
Informacijos aplink mus daug, garsiausiai šaukia naujovių nešėjai arba egzistuojančių dalykų nurašytojai. Maždaug "PHP is dead, cool kids use Rails now", tada "Rails is soo 2012, visi naudoja Node," tada "Meskit tą lousy Node, gi dabar reikia rašyti Go" ir t.t. Kalbų, frameworkų, visokių fancy įrankių galybė irgi nepadeda. Laikui bėgant keičiasi tik pavadinimai.
Blogiausia tai, kad visi tie blizgučiai gali lengvai nukreipti dėmesį nuo tikrai svarbių dalykų. Taip pat, susipažinti su vis nauju daiktu yra gerokai lengviau nei vieną pramokti tikrai gerai.
Dar pridėkim jau minėtą pasirinkimo paralyžių ir turim užburtą ratelį. Atrodo darai, stengies, lyg kažką vis išmoksti, bet iš tikro tik sukinėjiesi toj pačioj vietoj.
Kartais, artėjant pirmo darbo paieškoms, pradeda aiškėti apie kiek daug svarbių dalykų mes dar net nežinom. Arba tik įsivaizduojam, kad reikia žinoti ir nežinom. Tada irgi svarbu suvokti ką iš tikro reikia išmokti, o su kuo galima tik susipažinti.
Šios problemos sprendimas atrodo paprastas, bet ne visada akivaizdus. Reikia rasti kaip išmokus kuo mažiau, galėtume tapti kuo naudingesni. Palyginkim:
- Pramokti PHP ir Laravel, taip pat Symfony, MySQL, SQLite, HTML, CSS, JavaScriptą, VueJS, websocketus, GraphQL, Reactą, TypeScriptą, turint daug mažų, per tutorialus atliktų darbų pavyzdžių.
- Pramokti PHP, Laravel, MySQL ir HTML su CSS. Prašyti pilnai veikiantį projektą su Laravel. Turėti to projekto kodą GitHub'e ir live demo saitą.
Skirtumo tarp šių scenarijų nėra daug. Pirmas turi daug visokių mandrysčių. Antras kiek įmanoma mažiau, bet atrodo gerokai tvirčiau, patikimiau ir labiau pasirengęs darbui.
Kartais tiesiog reikia padėti susivokti, kad labiausia prie tikslo artina ne blizgučių vaikymasis, o geras pagrindų ir svarbių dalykų išmanymas. Ai, dar visai gerai padėti susivokti kurie iš tų dalykų yra svarbūs.
# Įtikėti, kad darbo medžioklė yra toks pat mokymosi procesas kaip mokymasis programuoti
Galvojai mokytis programuoti yra sunku? Pabandyk gauti pirmą darbą. Naujokų daug, neįmanoma žinoti ar išmokai pakankamai, bauginančios interviu arba namų darbų užduotys, ar mano portfolio geras, kaip pasirašyti CV jei neturiu patirties.
Dažniausia pasitaikančios kliūtys būna kažkokia baimė "sudeginti tiltus" ir nerealistiška reakcija į nepasisekusias aplikacijas.
Abiejoms situacijoms turiu tą patį atsakymą. Darbo medžioklė yra mokymosi procesas. Kiekvienas išsiųsta aplikacija leis sužinoti ką nors naujo.
Nemanau, kad yra kokia nors galimybė kaip nors pagadinti savo galimybes išsiunčiant nepakankamai gerą aplikaciją. Blogiausia kas gali nutikti, tai tiesiog negausi jokios reakcijos.
Kaskart medžiodamas darbą praeinu tą patį ciklą. Pirmas ratas būna pilnas atmetimo - negaunu atsakymo, neįveikiu užduoties, nepraeinu kažkelinto interviu. Kaip ir medžiodamas pirmą darbą, dabar su kiekviena darbo aplikacija išmokstu vis ką nors naujo. Kiekviena sekanti aplikacija pagerina galimybes gauti darbą, kol galiausia pavyksta.
Net jei šiuo metu nesi pasirengęs, kas sako, kad nebūsi po pusmečio? Tau nereikia "dar kažką išmokti," kad galėtum aplikuoti į darbą.
Negavai jokios reakcijos? Tikriausia esi nepakankamai kvalifikuotas tai pozicijai. Nors gali būti, kad ir tiktum, tik nemoki atskleisti ir pademonstruoti savo sugebėjimų ir žinių.
Duoda užduotį, bet po jos nebeatrašo? Tikriausia reiks dar pasimokyti. Nebepaskambina po interviu? Galbūt reiktų paskaityti knygų apie bendravimą ir darbo pokalbius, o gal tiesiog buvo geresnių kandidatų.
Neįmanoma pasirengti kai nežinai ko realiai iš tavęs reikia. Už tai su kiekviena darbo aplikacija surenki vis daugiau informacijos kol turi jos pakankamai, kad galėtum tinkamai pasirengti sėkmingajam bandymui.
# Techniniai dalykai
Su šitais būnu gan bjaurus ir mažai paslaugus 😉
Kiekvienas pastrigimas yra ideali galimybė mokytis. Ne tik reikalo, dėl kurio pastrigom, bet ir mokytis paties atstrigimo. Jei žinau atsakymą, galiu nebent patarti kuria linkme galvoti, bet tiesioginio atsakymo duoti vengiu.
Mano didžiausias nušvitimas nutiko bandant parašyti pirmą Stack Overflow klausimą. Esu įsitikinęs, kad rengdami kokybišką klausimą mes beveik visada rasim atsakymą savo pastrigimui.
Tai gali klausti manęs kodėl gauni RangeError
, bet nežinau ar gausi tenkinantį atsakymą.
# ***
Kažkaip tikiu, kad po šio posto gausiu mažiau emailų, o juos gauti tikrai mėgstu. Vis tiek kviečiu rašyti, klausti ir sužinoti dalykus.
Gal dar pabandom kitokį reikalą. Jei ką nors praleidau, rašyk čia komentaruose. Visiems bus įdomu sužinoti atsakymus, kartu labai tikėtina gauti daugiau atsakymų nei vien mano.