Kako postati developer?

U proteklih 4-5 godina imao sam priliku programiranju podučavati uglavnom studente, ali i ljude različitog stupnja obrazovanja i s višegodišnjim iskustvom u drugim strukama (turizam, hoteljerstvo, ugostiteljstvo itd), koji bi me uvijek pitali: „Kako naučiti programirati?

Prva prepreka kod učenja programiranja je naučiti kako učiti.

Danas je učenje “kako učiti?” tema kojoj se posvećuje mnogo vremena i istraživanja. Ljudi troše ogromne resurse i novčana sredstva pokušavajući smisliti optimalan način za brzo učenje, zadržavanje i primjenu znanja kako bi bili konkurentniji na tržištu zapošljavanja.

Učenje samo po sebi nije ništa drugo već navika poput vježbanja ili trčanja; ukoliko ju dovedete do toga da „zahrđa“, bit će teže kad pokušate ponovno upogoniti svoje moždane ćelije da upijaju znanje.

Posao developera je takve prirode da ste osuđeni na doživotno učenje, usvajanje novih znanja i vještina ukoliko mislite o(p)stati i uhvatiti korak s trendovima u IT svijetu, koji se mijenjaju velikom brzinom.

Ovo su savjeti i trikovi koje ja koristim kod učenja novih stvari.

Odlučite što želite (učiti)

Činjenica je da mnogo ljudi uopće ne zna što želi u životu. Nakon što čvrsto odlučite da želite naučiti programirati, postavlja se pitanje – odakle početi, koji programski jezik odabrati? Što  je trenutno na tržištu najbolje plaćeno? Najpopularnije?

Sve ovo su pitanja na koja nije moguće dati točan odgovor jer ovise o mnoštvu parametara, npr. koja domena IT struke vas zanima? Jesu li to mreže, web development, mobilne aplikacije ili nešto treće?

U slučaju da nikada niste napisali liniju programskog koda, usvajanje nekih osnovnih koncepata u programiranju (poput grananja, petlji, funkcija, tipova i struktura podataka itd.) bit će vam korisnije od učenja same sintakse nekog programskog jezika, budući da se navedeni koncepti javljaju gotovo u svim programskim jezicima.

Danas, kad su nam dostupni bezbrojni besplatni alati za online učenje, u zadnje vrijeme najčešće kod studenata primjećujem  da preskaču temelje i idu na učenje nečeg apstraktnijeg, a da ne posjeduju znanje temeljnih programskih koncepata. Primjerice, od prijatelja čuju da je React super popularan pa se odluče učiti React bez da znaju osnove JavaScripta. Metaforički rečeno, isto bi bilo kad biste išli pisati esej, a još niste naučili dobro pisati ni slova. Nemojte to raditi!

Općenito govoreći, ne možete pogriješiti odabirom bilo kojeg popularnijeg programskog jezika, ali za osobu koja tek kreće u svijet programiranja, recimo da imate vrlo dobre temelje ukoliko dobro poznajete JavaScript i SQL.

Nametnite sebi obavezu

Prošli sam tjedan čuo od kolega kako im je sad bolje u teretani jer je puno manje gužve zbog toga što su napokon odustali svi oni „new year – new me“ ljudi. Znate li razliku između onih koji 1. siječnja idu u teretanu i koji zapravo postižu svoje fitness ciljeve u odnosu na one koji su odustali već u prva 2 tjedna? Razlika je u tome što redovito posvećuju vrijeme svom cilju, i to obično svakog dana istu količinu vremena.

Kod ovakvih stvari, osobno se vodim japanskim konceptom koji se zove „Kaizen“. Sama riječ sadrži dva korijena – ‘kai’ (promjena) i ‘zen’ (mudrost). Smislio ga je Masaaki Imai, koji vjeruje da se ta filozofija može jednako uspješno primijeniti u svijetu poslovanja i u osobnom životu.

U japanskoj kulturi praksa Kaizena uključuje ideju načela 1 minute za samopoboljšanje. Ideja je da osoba treba vježbati ili raditi nešto u trajanju od jedne minute, svaki dan u isto vrijeme. Jasno je da ne bi trebalo biti nikakvih problema da apsolutno bilo tko (čak i lijena osoba), izvrši neki mali zadatak u tako kratkom vremenu.

Cilj ove metode nametanje je obveze samom sebi – ulagati 5 minuta dnevno u nešto što će nam pomoći ostvarivanju dugoročnog cilja. Izvorna ideja jedne minute u ovom slučaju ponešto je modificirana kako bi se zapravo i stigao obaviti neki manji smislen zadatak.

Na kraju dana ostaje zadovoljstvo da smo i tim malim korakom i dalje na putu ostvarivanja svog cilja. Tih mi se 5 minuta u 70% slučajeva pretvori u minimalno 20-ak minuta rada i učenja, a nekad su to i sati. Postoje i vrlo naporni dani, kad jedva čekam otići u krevet i kad imam uključen tajmer na mobitelu na 5 minuta, samo da odradim zacrtano, ali i tada se natjeram i odradim to, koliko god mi to bilo mučno.

Otkrijte svoj najefikasniji način učenja

Ne učimo svi na isti način. Netko voli učiti iz knjiga, netko preko interneta, netko gledajući YouTube, netko pod nadzorom mentora.

Ja preferiram Udemy za učenje novih stvari vezanih uz programiranje. Za 10 EUR tamo možete pronaći vrlo kvalitetne video materijale napravljene od strane stručnjaka, koje možete pogledati koliko god puta želite, po brzini koja vama odgovara (ja gledam na 1.5 brzini) i uz dodatne materijale koji se nude. Nakon što pogledam nešto, pokušam napraviti isto i sam, ali na svoj način, a ne samo prepisujući ono što sam vidio.

Ono na što još pazim je vođenje dokumentacije i evidencije o napretku. Tu koristim Trello, koji je zapravo odličan alat temeljen na japanskoj Kanban metodologiji menadžmenta i vođenja procesa rada.

Ideja se temelji na 3 liste: TO DO, DOING i DONE, gdje  svaka od njih može sadržavati više malih zadataka. Kad kažem male zadatke, onda stvarno mislim na male. Sitne pobjede vode do velikih pobjeda, a mali zadaci lakše su „probavljivi“ i  pomoći će vam da se ne obeshrabrite i ostanete na putu prema svom cilju.

“TO DO” lista obuhvaća zadatke koje morate obaviti, ali još nisu započeti. Meni često ta lista služi da osiguram i otkrijem sve moguće potrebe i resurse za početak rada na zadatku i sačuvam ih na jednom mjestu (korisni linkovi, stranice, videa, itd). Zatim pojedini task iz „TO DO“ premještam u „DOING“ listu, koja je obično najkraća i sadržava jedan do maksimalno 2-3 zadatka na kojima se trenutno radi. Nakon završetka, zadatak se premješta u „DONE“ listu i eventualno se dodaju neke bilješke uz obavljeno.

Ukoliko započnete raditi na nekom zadatku, projektu, gledati video materijal, čitati knjigu – dovršite to!  Osobno sam također imao običaj  započinjati neki novi hobi projekt, ne dovršiti ga, a već početi raditi  na drugom. Na kraju nisam završio ni jedan od njih. Još uvijek se borim s tim.

Ako skačete s jednog zadatka na drugi, osjećat ćete se zauzetima, ali u stvarnosti ćete samo gubiti vrijeme. Ljudi su loši multitaskeri, što dokazuje činjenica da ljudski mozak u podsvijesti razmišlja o rješenju i mogućim ishodima za prethodno započeti nedovršeni zadatak tijekom rada na novom zadatku.

Čak i ako mislite da ste jedna od rijetkih osoba koja je dobra u tome, ukoliko se usredotočite na jednu stvar i dovršite je, postajete učinkovitiji i imate dublje iskustvo učenja. Osjećat ćete i ponos zbog izvršenog zadatka. Primjerice, ako ste jedan od rijetkih ljudi u svom društvu koji je pročitao „Clean Code“ knjigu do kraja, to će vam povećati samopouzdanje i motivirati vas da privedete i druge zadatke kraju.

Okružite se osobama sličnih interesa

Učenje novih stvari može biti teško, ali raditi to sam može biti još gore. Svi to znamo još od srednje škole – lakše je kad se skupi ekipa pa se vježba matematika. Svatko zna ponešto, tu i tamo ubaci se neka šala i sve je lakše.

Slično je i s programiranjem. Vlastita motivacija i disciplina mogu vas odvesti do određene točke, ali ponekad vam treba dodatni vjetar u leđa da biste ostvarili zacrtani cilj. Dobar način da to ostvarite je da postanete dio ekipe koja će vas redovno pitati o vašem napretku i s kojom možete razgovarati o problemima na koje ste naišli tijekom rada.

Primjerice, na web stranicama poput FreeCodeCamp-a možete rješavati zadatke i razgovarati s ljudima koji rade iste zadatke, pitati ih za pomoć ili čak pomoći drugima koji su zapeli na nekom zadatku.

Na društvenim mrežama poput Facebooka možete pronaći FB grupe čiji su članovi ljudi koje zanima isti programski jezik kao i vas i koji svakodnevno dijele korisne savjete. Na Instagramu postoji puno developera koji dijele edukativno korisne objave i organiziraju akcije poput #100DaysOfCode, što je izvrstan način za dokumentiranje malih pobjeda svakodnevno te primanje pozitivnih povratnih informacija za nastavak i stvaranje navike. Mentor u disciplini koja vas zanima može doslovno prepoloviti količinu vremena koja vam treba da postignete svoj cilj.

Ukoliko se odlučite baviti programiranjem, budite spremni na odricanje, velik trud, napor, ponekad i otpornost na stres, kako biste vidjeli plodove svog rada.

Usporedio bih programiranje s igranjem video igre poznate franšize „Dark Souls“. Svatko tko je igrao ili pokušao igrati neku „Dark Souls“ igru i sam zna da se i najmanja greška brutalno kažnjava te da je iznimno teško proći neke protivnike. Slično  je i s programiranjem. Ili je sve u redu i program savršeno radi ili – ne radi. Ne postoji između. Jedan pogrešan znak u vašem programskom kodu može označavati razliku između prvog i drugog.

Ipak, nakon što u „Dark Souls“-u shvatite predložak kretanja protivnika, njegove poteze, iznenadne pokrete, što najčešće dolazi nakon nekoliko sati pokušavanja, umiranja i trpljenja ponižavanja na sve moguće načine, vaš protivnik postaje obično zabavno čudovište kojeg ste „pročitali“ i znate sve njegove poteze, kretnje i udarce.

Njegove pokušaje udaraca vješto izbjegavate, vaše kretnje u borbi su umjetničke, djeluju poput plesa, protivnik izgleda smiješno dok se svim silama trudi okončati vam život. Točno znate kad će napraviti nagli okret od 180 stupnjeva s ciljem da vam skine glavu s ramena, a koji ćete vješto izbjeći jednim izmicanjem i side-stepom. Muka postaje zabava. Igra postaje uživanje.

Nakon određenog perioda muke, učenja i  pokušavanja otkrivanja uzroka greške i odgovora zašto program ne radi, programiranje također postaje vrlo zabavno. Što više problema doživite (i riješite), postajete bogatiji za novo iskustvo i sljedeći put ćete sigurno prepoznati taj problem te ga riješiti za tren, što vas čini boljim svaki dan.

P.S. Ne igrajte Dark Souls!

Podijeli

O autoru

Mensur Duraković