Git yra įrankis versijuoti kodą, sekit jo pasikeitimus ir padėti komandoms kartu dirbti prie vieno projekto. Nors Git gali ir yra naudojamas daugybės profesijų atstovų, šiandien kalbėsime tik apie programuotojus. GitHub yra platforma, kuri besinaudodama git’u leidžia programuotojams dirbti komandose. GitHub yra bene populiariausia, ji ne tik naudojama privačioms kodo saugykloms laikyti, GitHub'e programuotojai dažniausia laiko Open Source projektus, kur prie jų kartu dirba.

Git’o pagalba, daug programuotojų gali dirbti prie vieno projekto vienu metu. Git’as ypatingai palengvina situacijas kai keli programuotojai keičia tą pačią kodo dalį, taip pat padeda atsekti pakeitimus, rasti kas juos atliko, leidžia keliauti per kodo versijas ir išsirinkti tik reikiamus pakeitimus. Taip pat labai svarbi darbo proceso su Git’u dalis yra programuotojų bendravimas, diskusija apie kodo pakeitimus, kodo peržiūros ir galimybė diegti tik jau patikrintus, tinkamus ir prižiūrėtojų patvirtintus pakeitimus.

GitHubas yra labai svarbus įrankis kiekvieno programuotojo asmeninio brando vystymui, mokymuisi programuoti ir dirbti kartu su kitais programuotojais.

Šiame įraše daugiausia dėmesio skirsim GitHub’o panaudojimui gauti pirmą darbą ir gerinti savo matomumą internetuose (web presence).

# Kodėl GitHub svarbu programuotojams ir kaip jį naudoti?

Turbūt svarbiausia naujiems programuotojams yra tai, kad GitHub’as leidžia lengvai parodyti savo kodą visiems norintiems į jį pažiūrėti, jau net nekalbant apie tai, kad pats Git’as leidžia grįžti į ankstesnes (stabilias) savo kodo versijas, išmėginti pakeitimus, nesugadinant pagrininio veikiančio kodo saugo tuos pakeitimus nuo netikėtų jų dingimų (sugedo hardas, netyčia ištryniau, suvalgė šuo).

Taigi, galime laikyti kodą viešame GitHub’o rep’e (code repository - kodo talpykla). Rodydami savo parašytą kodą, mes iš tikro rodome savo sugebėjimą programuoti. Ne tik tai. Kartu mes demonstruojame savo sugebėjimą naudotis Git’u, o tai irgi yra svarbu programuotojams. Net daugiau, naudodami GitHub’ą mes kartu sakome, kad bent šiek tiek suprantame kaip turi vykti programavimo procesas ir geros jo praktikos.

Man net sunku pagalvoti, kad programuotojai neturėtų arba nenaudotų GitHub’o, bet tokių pasitaiko. Labiau patyrę programuotojai gal ir turi savo priežasčių ir būdų išgyventi be GitHub’o, bet aš niekaip negaliu įsivaizduoti norinčio tapti programuotojo ir nepuoselėjančio savo GitHub’o paskyros. Tokiam žmogui būtų labai sunku gauti pirmą darbą, jei ne visai neįmanoma.

Github'as taip pat yra bendravimo tarp programuotojų platforma, vos ne socialinis tinklas. Sekant ten esančius kiekvienai saugyklai priklausančius forumėlius (Issues sekcija), kuriuose programuotojai kartu sprendžia iškilusias problemas, ieško bug’ų ir juos taiso, galima daug išmokti apie tą patį bendravimą, suprasti bendradarbiavimo etiketą, kokie programuotojai laikomi douchebag’ais, kas priimtina ir kas ne, kaip sprendžiamos problemos, kaip priimami sprendimai rašant softą.

Ne taip retai pasitaiko, kai bendravimas ir bendradarbiavimas GitHub’e virsta į kažką rimčiau - rekomendacijas darbui, pasiūlymus prisijungti prie startupų, freelancinimo pasiūlymus.

Reiktų nenuvertinti ir fakto, kad darbaviai (jų recruteriai) skenuoja GitHub’ą ieškodami jiems reikalingų programuotojų. Aktyviai ieškantys tiesiog peržiūrinėja pagal raktažodžius atrinktas paskyras, ieškodami jiems tinkančių, patyrusių programuotojų. Pasyviau į šį reikalą žiūrintieji (arba vėlesniuose rectrutinimo etapuose) peržiūrinėja jau atrinktų (arba atrininėjamų) kandidatų paskyras, tikrindami ar jie turi reikalingų sugebėjimų.

Nors aš neperšu side project’ų - darbo prie Open Source ir programavimo laisvalaikiu, manau, kad bent jau pradžioj, šie dalykai padės kuo greičiau pasiekti norimą formą, sugebėjimų lygį ir pirmo darbo gavimą. Už tai šiame įraše mes sutarsime, kad visi veikiame šiuos užklasinius darbus ir tie darbai yra mūsų GitHub’o turinys.

# Tvarkinga GitHub paskyra

Jei iš viso šio posto atsiminsit tik vieną sakinį, prašau, atsiminkit šį: svarbiausia, kad jūsų projektai būtų užbaigti iki galo ir gerai veikiantys. Jokių "reikia tik užbaigti”, nevisai veikiančių arba nuo klaidų dūstančių saugyklų. Taip, darbo procese gali būti, kad kodas neveikia, tačiau reiktų kuo greičiau paversti jį bent minimaliai stabiliai veikiančiu softu, o kol taip neatsitiko, apie šitai pranešti readme.

Iliustracijai pasitelkim dažnai minimą Twitter’io klono pavyzdį. Klonas turintis tik gerai veikiantį naujų tik tekstinių žinučių paskelbimą ir nieko daugiau, nei registracijos, jei prisijungimo, nei paveiksliukų įkėlimo, nieko yra daug geriau nei viską turintis klonas, kuriame dauguma dalykų veikia tik pusiau arba neveikia kaip turėtų.

Dažnai kartoju užbaigti projektus 100%, bet tai nebūtinai reiškia, kad reikia parašyti visą projektą 100% iškart ir dar ištaisyti visas klaidas. Užtenka tiesiog užbaigti tą feature’ą prie kurio dirbate, ištestuoti ir sutvarkyti, kad veiktų gerai. Šios taisyklės nesilaikymas gali labai realiai užtverti kelią į pirmą darbą.

Nesamdyčiau žmogaus rodančio neveikiantį kodą. Jei jau atsitiko, kad kažkas neveikia ir tai pastebėjo potencialus darbdavys (yra nutikę), kuo greičiau tvarkyk, testuok ir siųsk suremontuotą versiją. Klaidas daryti žmogiška, o adekvati reakcija gali ir papildomų taškų uždirbti.

Antras tvarkingos GitHub paskyros signalas yra aiški ir gerai parašyta dokumentacija. Niekas nenori knistis po jūsų kodą, ieškodami kas tai per daiktas, ką atlieka ir kaip veikia. Štai ką minimaliai privalo turėti tvarkinga saugyklos dokumentacija:

  • Koks šio projekto pavadinimas, aprašymas ir tikslas.
  • Nuoroda į patalpintą (pahostintą) ir viešai prieinamą veikiančią versiją.
  • Instrukcijos kaip pasileisti projektą savo programavimo aplinkoje. Tarkim git clone, npm install, npm start.
  • Jei tai biblioteka, reiktų bent minimalių instrukcijų kaip naudotis kodu.

Suprantu, kad pradedantiesiems programuotojams gali būti sunku šitai pasiekti, bet vis teik pridedu. Kodo kokybė yra svarbus reikalas jį rodant pasauliui. Pradžiai pasistenkim bent jau turėti gerą kodo stilių - vienodus tarpelius, tvarkingai atitrauktą nuo šono, uniforminį kodo rašymą (visur vienodai užrašyti tie patys dalykai). Mano galva, vien tvarkingumas gali palikti gero, kokybiško kodo įspūdį. Kiti kokybiško kodo atributai ateis su patirtimi, bet tvarkingumo mes galime pasiekti iškart, dar mokydamiesi programuoti.

# Ką dėti į GitHub’ą

Mokantis programuoti gali atrodyti, kad nėra ko į tą GitHub’ą dėti. Iš tikro kodo kiekis, saugyklos dydis ar populiarumas nėra taip svarbu. Svarbiausia, aukščiau aprašyti dalykai ir pats faktas, kad kodas yra dedamas, rodomas ir juo dalinamasi.

Pats akivaizdžiausias kandidatas į GitHub’ą yra jūsų portfolio websaitas. Portfolio yra vienas iš tų banginių, kartu su GitHub’o paskyra, nešančių jus į pirmą programavimo darbą. Apie šiuodu galima galvoti kaip apie viens kitą papildančius elementus. Portfolio yra tai kas veikia ir ką galima paliesti, GitHub’as laiko tų pavyzdžių kodą.

Viena smagesnių GitHub’o paslaugų yra GitHub Pages - nemokamas statiškų (be backendo) puslapių talpinimas. Mums tai ideali vieta pasidėti savo portfolio. Čia mano pirmas portfolio http://keligijus.github.io/, leidęs man gauti pirmą programuotojo darbą.

Atkreipkit dėmesį, kad puslapis yra itin paprastas ir tuščias su vos keliais pavyzdžiais, prastai sukonfiguruotu nuotraukų lazy load’u ir tie patys pavyzdžiai ne visai gerai veikia. Vis tiek palikau šį istorinį puslapį neliestą, manau jis puiki iliustracija, kad tikslui pasiekti nereikia kažko fancy ar itin sudėtingo.

Taip pat į GitHub’ą gerai dėti nedidelius, savarankiškai atliktus projektus, kurie dažnai yra programavimo užduotys, pratimai ar gan standartiniai maži softo projektai. Jie neturi būti orginalūs, įmantrūs ar dideli. Užduotis freeCodeCamp'e (ar bet kur kitur) sukurti pomidorinį laikroduką, skaičiuotuvą, net įprastos fizzbuzz tipo užduotys puikiai tinka. Nepaisant to, kad jos neišpredžia kažkokių problemų ar nesukuria nieko naujo, veikiantys šie dalykai labai gerai parodo jūsų sugebėjimus rašyti kodą.

Svarbu atsiminti aiškiau išvardintus tvarkingos saugyklos reikalavimus ir jų laikytis. Aprašyti net visiškai akivaizdžius projektus, įkelti ir nukreipti į veikiančius pavyzdžius ir t.t.

Na ir paskutinė, galbūt pati įdomiausia galimų saugyklų rūšis yra naudingi įrankiai, bibliotekos, pluginai (papildiniai). Taip, naujokui gali būti sunku sukurti kažką įspūdingo, bet aš visad atsimenu Chrome papildinį "Siūlyk antraštę”. Ganėtinai nesudėtingas projektas, kuris realiai praskaidrino daugybės Chrome vartotojų patirtį*.

*Labai gaila, kad su projektu buvo susidorota. Mano galva tai buvo geras, naudingas įrankis, galėjęs stipriai pagerinti ne tik vartotojų patirtį, bet ir pačių naujienų portalų darbą, rezultatus ir santykius su savo vartotojais. Trumpariagiškumas, baimė ir nesugebėjimas inovuoti nugalėjo. Kaip tikriauisa pasakytų mano mylima anglų kalbos mokytoja - abydna.

Galima prisigalvoti visokiausių softo dalykėlių, čia tik fantazijos reikalas. Net jei tai naudoja nedaug vartotojų arba net jei tai naudoja jau sugalvotus dalykus, kurie pritaikomi šiek tiek kitai paskirčiai.

# Kvietimas veikti

Taigi, mes jau žinom kaip turėtų atrodyti mūsų GitHub’o paskyra, atėjo laikas veikti. Jei jau pramokai programuoti, pats laikas eiti susikurti paskyrą ir įkelti ten savo pirmą HTMLinį puslapį. Tada įkelti jį į GitHub Pages ir tada rodyti visiems tą puslapį savo feisbukuose.

Turintiems GitHub’ą, geriausia atlikti nedidelę savo turimų assetų apžiūrą. Ar visų saugyklų aprašymai tvarkingi, minimalų planelį užrašiau aukščiau. Ar visų saugyklų softas yra viešai prieinamas ir saugyklose yra nuoroda į demo? GitHub Pages jei tik frontendas, jei turi ir backendą, bandykit kažkur nemokamai patalpinti, kad ir kokiam Heroku.

Testuokit savo kodą, pahostinę bandykit ar veikia tinkamai, pabandykit pažiūrėti telefone. Pamatę, kad draugas turi kitokį telefoną nei jūs, imkit draugo telefoną ir bandykit pas draugą. Atsidarykit su Internet Exploreriu (grrr), su Safariu (mažiau, bet irgi grrr). Remontuokit kas neveikia. Rašykit naudingas commit žinutes.

GitHub’as yra vienas iš vertinimo kriterijų, apsprendžiančių jūsų galimybes tapti programuotoju. Dėl to su juo reikia elgtis pagarbiai ir atsakingai.




Labai tikiuosi, kad GitHub’e jūs praleidžiate daugiau laiko nei FB, IG ir visos kitos social medijos kartu sudėjus. Ši vieta visada išlieka svarbi lipdant savo programuotojo karjerą. Šįkart net neužsiminiau apie naudą prisidėti prie Open Source projektų. Parašiau apie visiškus pagrindus, manau bus įrašas šiek tiek labiau pažengusiems GitHub'o vartotojams.

Šis postas šiek tiek kitoks nei dauguma ansktesnių. Juo labiausia noriu pasidalinti praktiškais patarimais siekiant programuotojo darbo. Žinau, kad daug kas ateina paskaityti blogo dėl motyvacijos, padrąsinimo. Nuo šiol padrąsinimai, asmeniškumai ir motyvacija reguliariai keliaus emailu. Kviečiu užsiprenumeruoti naujienlaiškį.

  • Blogas turėtų tapti vieta su konkrečiais patarimais, kuriuos paskaičius galima ir reikia veikti.
  • Naujienlaiškis padrąsinimams.
  • Podkastas dar turi atrasti savo balsą. Labai norėčiau, kad tai taptų pokalbių su įkvėpiančiais, naudingos informacijos turinčiais žmonėmis ir kartais vieta garsiai pamąstyti apie programavimo dalykus 😃