Saveti za (buduće) programere

Marko Kažić
Zamphyr
Published in
6 min readMay 23, 2016

Svakim danom sve više ljudi prepoznaje da je Zamphyr ideja nove škole stvorena da nauči ljude digitalnim veštinama u digitalnom okruženju. Isto tako, svakog dana broj poziva, mailova i pitanja o tome kako se postaje programer i “da li je to za mene” postaje sve veći i veći. Digitalizujemo naše živote i potražnja za ovim veštinama je već danas neverovatna. Ako uspemo da ne uništimo sami sebe do 2050. godine programiranje će sigurno biti jedno od dve najbitnije veštine koje možete imati. Zato ljudi sve više pitaju “Mogu li ja to?

Iskreno, to pitanje sam čuo nebrojeno puta. Ipak, kada ljudi čuju da radiš na novoj generaciji škole za računarske nauke, počinju da se okreću ka tebi kao dobrom savetodavcu. Razloga za pokretanje Zamphyr-a je mnogo, a dobrih saveta za ljude preko telefona, maila ili slično nedovoljno. Ne daju mi dovoljno vremena da se setim šta i kako bi trebalo raditi. Zato danas i pišem savete za (buduće) programere, da otklone sumnje, misterije ove profesije i pomognu da i naše karijere i naša zajednica budu berićetne i napredne.

1. Budite stvaralac

Larry Wall, tvorac Perl jezika je rekao da su tri najveće vrline sjajnog programera lenjost, nestrpljivost i oholost. Lenjost jer se trudi da smanji potrošnju energije za ispunjene zadatka, nestrpljivost jer ne želi da čeka na sporo izvršavanje što ga tera da piše brža rešenja i oholost jer neće dozvoliti da drugi govore loše o njegovom radu. Iako se ovo pokazalo mnogo puta kao tačno, ono što je još bitnije je da kognitivno, karakterno i emotivno vi kao (budući) programer budete stvaralac.

Da bi bili stvaralac i dobar programer morate biti konstruktivni, neko ko traži rešenja a ne izgovore. Najbolji programeri su uvek oni koji imaju glad za pravljenjem nečeg novog i boljeg. Moj svaki slobodan trenutak prolazi u agoniji koju izaziva protok vremena bez stvaranja. Ako ste neko ko razmišlja o tome kako stvari rade iznutra i kako mogu da postanu bolje, na pravom ste putu.

2. Programiranje je način razmišljanja

Najčudnija prepreka na koju nailazim sa ljudima koji počinju da razmišljaju o programiranju je njihov strah da su već izgubili. Realno, programiranje je zapravo ograničavanje razmišljanja u jedan skup mogućnosti kojim računar raspolaže. Sintaksa koda je nešto što možete da pretražite, ali način razmišljanja je to što je vaša potreba dok učite i ono za čime tragate kroz učenje.

Računar je obična mašina koju smo naučili da zna samo delić onoga što mi znamo i da taj delić radi mnogo brže od nas. Programiranje je prevazilaženje vaših intelektualnih granica, jer morate da naučite ograničenu stvar, računar, da uradi nešto efikasnije i korisnije od bilo koga dosad. Malo ljudi će reći da su nesposobni za vožnju automobila, ali će zato mnogo njih reći da nisu za programera. Suštinski nema velike razlike, računar jeste kompleksniji, ali je daleko bezbedniji i interakcija sa njim je bolje apstrakovana.

Tajna dobrog programera je da zna i shvata šablone u tom ograničenom umu računara i jeziku između njega i nas. Ništa ne učite napamet. Kako budete učili programiranje postajaće vam sve jasnije da se koncepti i šabloni ponavljaju i da je programiranje lako jer koristite ograničen skup načina da dobijete neograničen skup mogućnosti.

3. Ostavite ego kod kuće

Ne smem da počnem da pričam o tome koliko su štetni strah, egoizam, gordost i sujeta u vašem procesu učenja. Najbolji način da učite, uvećate znanje i poboljšate kvalitet jeste da ostavite ego kod kuće. Kada to kažem ne mislim to samo kao floskulu: Jerry Weinberg u knjizi The Psychology of Computer Programming predstavlja “programiranje bez ega”. Svedite na minimum strah, egoizam, gordost i sujetu, delite kod sa vršnjacima dok učite, pokazujte svoj kod drugima i zajedno radite na podizanju kvaliteta. Iako ovaj metod ima svoje mane u produkciji, pokazao se kao sjajan za učenje, i jedan je od okosnica Zamphyr praktičnih programa.

Fail fast so you can succeed sooner.

Pitajte sve. Ako pokažete svoj kod nekome, sigurno ćete naučiti nešto novo. Svaka greška koju napravite praviće štetu dok je ne otklonite, bolje da to bude što pre. Fail fast, so you can succeed sooner. Gledajte to ovako: Što manje znanja imate manji je ego koji štitite od udaraca. Pitajte sve.

Pročitajte 10 zapovesti programiranja bez ega od Jeff Atwood-a.

4. Naučite da pretražujete i reciklirate

Pomenuo sam ranije da je sintaksa nešto što se može naći, bitno je da znate šta tražite. Google vam neće dati logičko rešenje, dok 99.99% sintaktičkih problema rešava bez problema. Ne morate da znate kompletne biblioteke i sintakse jezika napamet, ali morate da znate šta i kako da logički sklopite kako bi rešili problem. Ako to znate, sintaksa vam je dostupna na klik. Dokumentacija vam je najbolji drug kada koristite tuđ kod i najgori neprijatelj kada pišete svoj.

Moderno komercijalno programiranje se često svodi na API programiranje. Uzećete gotovu biblioteku ugraditi je u svoj kod i koristiti, ili ćete koristiti API komercijalnog servisa kako ne bi izmišljali toplu vodu i to je sasvim u redu. Jedna od neminovnosti u programiranju je da je neko već imao isti ili makar sličan problem kao vi danas, i da ga je rešio. U duhu gorepomenutih osobina, vi morate na neki način biti arhitekta. Vi praktično planirate i izvršavate realizaciju boljih rešenja.

Programerska arhitektura je fina umetnost balansiranja. Podrazumeva umerenost, razumevanje problema, izbegavanje tehničkog duga i prihvatanje apstrakcije.

5. Tražite pomoć

Vođstvo i praksa su katalizatori bržeg uspeha kada učite programiranje. Prvo morate znati šta ne znate i kako to najbolje da naučite. Zato je neko ko će vas voditi kroz ceo proces učenja presudan za vaš uspeh. Danas imate ogromne mogućnosti na internetu: pristup resursima kao nikad pre, ali ako nemate nikog da sve to uobliči u celinu, pokaže vam kad i kako da se posvetite nekim temama, vaše učenje postaje znatno teže. Iako nije nemoguće da tako naučite da programirate, daleko brže ćete to uspeti sa školom kao što je Zamphyr, jer smo mi baš na tim principima napravili školu skrojenu da vodi do znanja.

Praksa — možda i najbitnija stvar kada učite je da primenite svoje znanje. Što češće pravite nešto novo, primenjujte i eksprimentišite sa znanjem koje imate. To ne samo da će pomoći da se znanje zalepi za vas, već će vam pomoći u karijeri i mnogo brže ćete napredovati. Veliki problem koji mi u Zamphyr-u vidimo je da prakse u učenju ima tek sporadično. Prosto je jako teško dizajnirati praktične probleme prilagođene svakom nivou znanja i zato često vidite da ljudi dobijaju diplome i sertifikate bez da su ikad napravili bilo šta korisno, što je na duge staze jako štetno. Uključite se u open source projekte, tražite nešto, bilo šta čemu možete konstruktivno da doprinesete. Ako budete učili u Zamphyr-u, to će svakako biti vaša svakodnevnica.

6. Ne komplikujte

Ne mogu dovoljno da naglasim: Ne komplikujte. Pošto nekim ljudima ni to nije dovoljno, reći ću to ovako: Dizajnirajte najjednostavnije rešenje za vaš problem. Koristite dobro taj praktični slovenski um i naučite nešto o Okamovoj britvi.

Najčešći problem koji vidim kod (budućih) programera je da previše vremena posvećuju sporednim stvarima kao što su alati koje koriste. Alati su samo sredstva koja pomažu da ostvarite cilj, ne gubite vreme na sitnice za koje mislite da ne možete da napravite ustupak. Možete. Nemojte da upadnete u zamku privida kompleksnosti; Samo zato što je nešto kompleksno ne znači da je pouzdano i stabilno, naprotiv. Ponoviću, ne gubite vreme, ostanite usredsređeni na cilj.

Ako hoćete da upropastite svoju produktivnost preporučujem vam da pročitate Priručnik za sabotiranje produktivnosti, koji je koristio Office of Strategic Services (prethodnik CIA), 1944. Ako već uništavate svoju produktivnost radite to kao profesionalac.

7. Uvek gledajte u budućnost

Sjajna osobina koja može mnogo da vam pomogne kada ste programer je da znate šta je to sledeće što dolazi. Ili, makar, da izbegavate ono što je davno prošlo. Mnogi ulaze u digitalnu industriju radi finansijske stabilnosti, tako da je presudno da, ako ste jedan od njih, znate šta će biti traženo na tržištu rada sutra. Zbog sigurnosti karijera Zamphyr dizajnira svoj sistem tako da škola pomaže u odabiru sigurnih smerova koji će biti relevantni u budućnosti za sigurnu karijeru. Suštinski vaš najteži zadatak, ali i najveći uspeh, će biti da uđete u taj krug gde cirkuliše znanje.

Ukoliko želite da budete deo platforme učenja budućnosti posetite Zamphyr i budite prvi pozvani u novu školu za programiranje. Ako ste na društvenim mrežama, pratite Facebook stranu Zamphyr-a ili @zamphyrhq Twitter nalog.

--

--

Marko Kažić
Zamphyr

Founder in Chief at Zamphyr, next-gen computer science school ˈkʰɑːʐit͡ɕ