Jau pasakojau būdą kuriuo pats gavau pirmą darbą. Tiesiog pramokau CSS/HTML, sukarpiau kelis dizainus, vienam pajungiau WP ir siuntinėjau CV + portfolio + laišką kur pasakojau kaip labai noriu programeriu būti.

Papasakosiu ką daryčiau jei šiandien iš naujo mokyčiausi programuoti. Į ką susitelkčiau, kad greičau gaučiau gerą pirmą programuotojo darbą. Nes let's face it, dizainų karpytojas karpytojas nėra visai jau programuotojas. Toks labiau tarpelis tarp dizainerių ir programuotojų.

Už tai yra būdas pagauti pilnavertiškesnį pirmą progmerio darbą. Tokį kur būni tikru programuotoju ir darai dalykus. Šiandien apie tą būdą.

# Egsistuojančio websaito klonas

Pastaruoju metu šitą visiems rekomenduoju. Esu visiškai įsitikinęs, kad šitas būdas yra beveik idealus mokymosi projektui.

Pirma ir svarbiausia yra tai, kad sukodinęs kokį Twitterį ar Jutūbą išmoksi tikrai daug ir tikrai pakankamai, kad būtum laukiamas darbuotojas arba freelanceris.

Antra, turėsi labai gerą savo sugebėjimų įrodymą ir puikų portfolio item'ą. Tik pagalvok, jei kelis sukarpyti dizainai yra pakankama pirmam darbui, tai koks kietas (ar kieta) būsi turėdamas kokį Airbnb kopiją savo Githube...

Galiausia, darydamas kloną išvengsi daugybės visokių klausimų ir dvejonių. Nereikės spręsti koks turėtų būti funkcionalumas ar kaip turėtų atrodyti tavo saitas. Nebus ir klientų, visą kodą galėsi laisvai dalintis Githube. Realiai būsit tik judu su kodu.

# Pirmas žingsnis: Planas

Bent jau man, tai visada norisi tiesiog sėsti ir rašyti kodą. Kažkaip gaila švaistyti laiką visokiems planams ir norisi kuo greičau išvysti rezultatą.

Iš tikro tai kiekviena minutė praleista planuojant sutaupys krūvą minučių darbo ir tikrai pagreitins procesą. Taigi.

# Koks tavo tikslas?

Kuo nori patapti? Ką norėsi programuoti dirbdamas? Labai didelė tikimybė, kad jau gavęs darbą darysi panašius dalykus, ką darei mokydamasis [captain obvious].

Antra, norėdamas patapti frontenderiu tikriausia rinksiesi visai kitokį saitą, nei ketindamas išmokti Python'ą. Gerai būtų įvertinti ir savo galimybes, turimą laiką, etc.

# Kurį saitą programuosi?

Tarkim esu visiškai žalias, tik šiek tiek pramokęs HTML ir CSS. Galbūt nereikėtų imtis kopijuoti Soundcloud'ą. Rinkis BBC News. Neatrodo per daug sudėtingas, tačiau galėsi pramokti tiek frontendo tiek backendo.

Tiek, kam įdomu tik frontendas, tikriausia turėtų pasirinkti AJAX'o pilną websaitą. Kur didžioji dalis veiksmo vyksta frontende, o duomenys parsiunčiami JavaScriptu per REST ar kaip nors panašiai. Siūlau pasidomėti Firebase ir panašiais backendo sprendimais.

Galiausia, nesvarbu ką pasirinksi. Negaišk per daug laiko ieškojimams. Svarbiausia veiksmas. Tiks BBC 😃

# Kokį funkcionalumą įgyvendinsi? Kokio ne?

Tie klonuotini saitai tikrai dideli. Tiesiog neįmanoma atkartoti visko. Turi pasirinkti ką kodinsi ir ko ne. Kitaip tavo klonas bus pusiau veikiantis, bet visiškai sulūžęs griuvena.

Toks kako gabalas tau jokių durų neatidarys ir į bilieto programerių gretas neišduos.

# Kaip turėtų atrodyti tavo MVP?

Pasirenki ką darai ir atlieki tai 100%. Geriau mažiau, bet veikia idealiai. Rekomenduoju kuo mažiau.

Nusprendi kas bus tavo minimum viable product. Tarkim BBC saitui aš daryčiau pagrindinį landing page'ą su naujienų sąrašu. Gal net ne visą, tik kelias sekcijas. Ir vienos naujienos puslapį. Twitter'iui užtektų accounto su nuotrauka ir vardu, naujienų feed'o ir tagų.

Visokie papildomi puslapiai ir pagerinimai šiame etape man ne itin įdomūs. Juos galėsiu įgyvendinti vėliau.

# Antras žingsnis: HTML ir CSS

Pradedam kodinti nuo lengviausios dalies. Tiesiog pasidarai statišką programuojamo puslapio kopiją. Jokių JS, jokio backendo. Išvaizda ir tiek.

Labai gerai darbų pradžiai, nes CSS/HTML yra lengviausia dalis, geras būdas įsivažiuoti. Be to vis tiek reikės padaryti ir pramokti.

Net jei būsi backenderis, vis tiek teks kartkartėmis pakrapštyti frontendą. Jei dar pramoksi Bootstrapą, gyvenimas pataps išvis gražus.

Tiek to antro žingsnio. Devil is in the detail arba dar kartais išlenda toks posakis pixel perfect. Stenkis atkartoti puslapį idealiai.

# Trečias: JavaScriptai

Priklausomai nuo tikslo ir nuo to ar taikysi į frontendą priklausys kaip daug JavaScripto tavo saitas turės.

Galbūt teks panaudoti kurį nors JS frameworką, gal užteks tik įdiegti kokį slaiderį ar šiaip nedidelį pluginą.

Patarimas jei naudosi AJAX'ą. Iš pradžių, verta susimuliuoti duomenų gavimą iš backendo. Vietoj to, kad kartu buildintum ir backendą, gali tiesog padaryti funkciją, kuri po neilgo setTimeout() grąžins tau reikiamus duomenis.

Jei neketini rašyti backendo, gali išmėginti Firebase ar kažką panašaus.

Nesvarbu naudoti ar nenaudoti jQuery. Su jQuery tikriausia darbus atliksi greičiau. Bet jei nori pramokti JS, geriau nenaudoti, gausi bonus taškus 😃 jQuery galėsi išmokti bet kada.

# Ketvirtas: Backendas

Maksimalių išbandymų metas. Vėl, tavo veiksmai priklausys nuo tikslo. Client ar server side kodą tau labiau norisi rašyti?

Kitas svarbus klausimas yra kokią kalbą ir framework'ą pasirinkti. Vieno gero atsakymo nežinau. Aš visada norėjau būti hipster JS devas, tai pasirinkimas buvo visiškai aiškus (beveik visiškai).

Manau turėtų būti aukso viduriukas tarp rinkos poreikio ir paties norų. Gal ROR ir yra smagus reikalas, bet jei niekam nereikia Ruby On Rails specialistų, tai ar verta jo mokytis? Gal užteks Laravelio, kuris atrodo tikrai populiarus?

# Backendas frontenderiui

Backendo pramokti verta net jei ketini būti pure frontenderis.

Labai realu, kad teks pačiam modifikuoti ar apsirašyti viewsus. Tas dalis kur backendas atvaizduoja duomenis, kitaip žinomus internetiniai puslapiais.

Taip pat, jei galvoji freelnacinti, vis tiek reiks bent šiek tiek backendo. Gi net pačią paprasčiausią svetainę klientas norės bent šiek tiek redaguoti. Tam pravers koksnors WordPressas. BBC svetainės klonas kuo puikiausia veiktų su WP. Net Twitterio kloną būtų įmanoma pritempti.

# Frameworkas ar tiesog plain PHP

Pirmam projektui visai pagalvočiau ir apie plain PHP. Vien dėl to, kad PHP nereikalauja daug pasiruošimo. Kodą gali rašyti tiesog kartu su HTML, o jau paruoštą tiesiai uploadini į FTP. Paprasčiau nebūna.

Rimtesnius frameworkus ir kalbas gali tekti ilgai ir sudėtingai setupinti. Spėju, kad visai realu pradžioj neribotam laikui pastrigti mėginant susisetupinti tinkamas Ruby versijas, kad pasileistum tai, ko tau reikia.

# Penktas žingsnis: Case Study

Iš pradžių gali atrodyti labiau pasirinktinas žingsnis, bet rekomenduoju jo nepraleisti. Tieisog fiksuok tai ką veiki ir kaip sekasi. Užsivedi Google Doc'ą ir kasdien vedi dienoraštėlį apie tai kaip sekasi ir kas vyksta.

Vėliau gali parašyti case study apie tai kaip tau sekėsi, kas buvo sunku, kaip išsprendei sunkumus, ką išmokai, ką ateinančiame projekte darysi kitaip ir kodėl. Geriausia aprašyti virsmą, kas pasikeitė nuo tada kai pradėjai projektą ir kai baigei.

Rašymas, tiek dienorščio, tiek case study, padės surikiuoti mintis ir aiškiau mąstyti. Primygtinai rekomenduoju.

Pridėtinė nauda yra tai, kad leisi kitiems, jų tarpe ir ateities darbdaviui ar klientui, pamatyti savo mąstymo procesą. Neretai tai yra svarbiau už dabartinius tavo sugebėjimus. Iš žmogaus mąstysenos galima nesunkiai pastebėti ar verta į jį/ją investuoti.

# Ar turėtum imtis tokio projekto?

Manau visi sutinkam, kad saito klonas yra labai geras mokymosi projektas. Pliusus jau išvardinau. Žinoma yra ir minusų. Manau turėtum praleisti šitokį projektą, jei:

# Turi labai aiškią savo idėją, kurią nori įgyvendinti

Taip tikriausia bus įdomiau ir smagiau. Reiktų atsiminti, kad tavo tikslas mokytis programuoti. Todėl svarbu neleisti visokiems svarstymams dėl funkcionalumo, dizaino ir t.t. sustabdyti tavo progresą.

# Turi kliento projektą

Tokį, kuris duos tau pakankamai laisvės mokytis. Daryti tiesiog savo susigalvotą darbą gali būti iššvaistyta galimybė gauti darbo su klientais, darbo su tikru projektu patirties ir užmokestį.

Reiktų atsiminti, kad toks darbas užtruks ilgiau ir gali būti sudėtingesnis. Taip pat, priklausomai nuo susitarimo, gali būti, kad negalėsi rodyti savo kodo kitiems. Again, tikslai, tikslai...

# Kaip turėtum imtis klonavimo projekto?

Mano galva reikia kantrybės ir susitelkimo į užduotį. Čia mokymosi projektas, tad jei teks pereiti kursą apie Laravel ir tą laiką nedirbti prie teisoginės užduoties, viskas okey.

Kol nenusiblaškai į šonus. Tada tiesiog grįžti ir tęsi toliau. Kaip visada, užbaigi 100% ir judi toliau.

# ***

Toks projektas tikrai leis išmokti dalykus, duos portfolio įrašą ir įneš aiškios struktūros į mokymosi procesą. Project based mokymasis padeda greičiau ir paprasšiau mokytis.

Aš pats sugalvojau pramokti React'ą (finally). Kaip manai kokiu būdu tai darysiu? 😃

Dideliai rekomenduoju tokį mokymosi būdą!