Svaki programer, odnosno softverski inženjer se pita kako postati bolji u svom poslu. Mi vam donosimo hrpu savjeta kako da postanete bolji u svom poslu. Većina savjeta nemaju veze s trenutačnim stupnjem znanja, no neki i imaju, a to ćete vidjeti kada ih pročitate. Ako ste totalni početnik, vjerojatno najbolji savjet je da jednostavno uzmete jedan programski jezik i počnete ga učiti. Nedavno smo i napisali tekst o 10 programskih jezika koje možete naučiti u 2019. godini, pa ga pročitajte.
Ako imate određenog iskustva u programiranju, onda vjerojatno kontantno nalazite načine kako optimizirati vaš kod, kako povećati performanse, kako napisati modularni kod, kako pisati tekstove, kako smanjiti “tehnički dug” i slično. Mi smo u ovom tekstu popisali savjete koji se tiču različitih domena u programiranju, pa krenimo redom. Ako imate još kakve dodatne savjete za programere, rado bismo čuli vaše mišljenje u komentarima.
DOMENA, ARHITEKTURA I DIZAJN
1. Najbolji programeri današnjice mogu uzeti bilo koji kompleksni problem, “razbiti” ga na manje dijelove, riješiti te manje dijelove, te na kraju sve to spojiti kako bi riješili inicijalni problem
2. Softver je samo alat za rješavanje domenskih problema. Pošto su danas alati i programski jezici potrebni u svim domenama, razvijajte se u onoj koja vas zanima. Ako dobro poznajete domenu i uživate rješavati probleme baš za tu specifičnu domenu (npr. zdravstvo), bit ćete mnogo bolji i motiviraniji programer. Također, mnogo ćete više vrijediti u kompanijama koje se bave tom istom domenom, od ostalih programera koji nemaju domensko znanje.
3. Nemojte si dopustiti da vas jedna domena ili jedan način programiranja “stjeraju u kut”. Radite više stvari. Jedna stvar koja vas može odvesti na “krivi put” je mobilno programiranje. To je u globalu samo spajanje postojećih API-ja u jednu aplikaciju s malo front-enda. Naučite malo i backenda, baza podataka, radite drugačije aplikacije. Nemojte biti “one-trick pony”.
4. Planirajte vaš kod (softver) dalje od računala. To će vam pomoći da nacrtate čisti mentalni model prije nego što počnete kodirati. Koristite istu strategiju koju imate prije pitanja. Ako nemate dobre natuknice i okvir teksta, tekst postaje samo miks rečenica koje vam padnu na pamet. Ista stvar je i s kodiranjem.
5. Kada zapnete s nečime, uzmite olovku i papir. Stvarno. To je čak i praksa na programerskim natjecanjima jer se ne brinete o sintaksi i tehničkim detaljima, nego s problemom i kako ga riješiti. Na papiru napišite korake za rješavanje problema, smislite algoritam …
6. Zanimljive web aplikacije su one koje koriste vaše podatke na neuobičajen način ili rješavaju svakodnevne probleme. Zato naučite što više možete o pohrani podataka i kako ih koristiti u svojim aplikacijama.
7. Ako ste “Software architect”, ne možete imati slijepe točke u procesu. Morate naučiti što više možete o front-endu (UI), backendu, pohrani podataka, operativnom sustavu na kojem će se aplikacija koristiti, osnovama hardvera, mrežnih protokola … što više znate o okruženju u kojem se vrti vaša aplikacija, to bolje.
PROGRAMSKI JEZICI, ALATI, NAPREDOVANJE OD POČETNIKA DO NAPREDNOG PROGRAMERA
8. Sudjelujte u open-source projektima kako biste zatvorili rupu između početnika i naprednijeg programera. Gledajte što drugi rade, pričajte s njima, sudjelujte u meetup-ovima, pitajte ljude za savjet.
9. Nemojte dati da vam nešto uništi motivaciju koju imate kada krećete učiti programirati. Nekada će vas blokirati sve te knjige, video zapisi i blog postovi koje čitate. Imat ćete osjećaj da “niste spremni”. To nije istina. Uzmite jedan programski jezik (npr. Javu, C#, Python …) i samo počnite kodirati. Kad zapnete, tražite rješenje i nemojte odustati.
10. Učenje programskog jezika nije učenje programiranja. Fokusirajte se na programske tehnike, rješavanje problema, analitičke vještine, design patterne … Nemojte se fokusirati da naučite 10 programskih jezika u 5 godina.
11. Naučite više programskih paradigmi. Nemojte se “zatvoriti” u svijet objektno-orijentiranog programiranja. Osim OOP-a, naučite funkcionalno programiranje, reflektivnog programiranje itd. Što više paradigmi znate, problem koji imate ćete moći sagledati iz više perspektiva i postat ćete bolji programer. Uvijek postoje alternative koje mi ne vidimo odmah.
12. Kad god je moguće, uzmite za učenje jednostavan programski jezik. Kompleksniji jezici (npr. Scala, Erlang, Haskell, C++ …), povećavaju kognitivno opterećenje mozga što može jako demotivirati početnike. Jednostavniji jezici su lakši za naučiti, a i s njima možete napraviti gotovo sve što poželite. To što su jednostavniji, ne znače da su lošiji.
13. Početnici nauče alat (IDE) u kojem programiraju onoliko koliko im treba. Da biste postali mnogo bolji programer, naučite alat do kraja. Naučite sve mogućnosti, menije, sub-menije. Naučite i kratice kako biste što manje koristili miša. Nađite sve “tips and tricks” članke o alatu kojeg koristite i naučite ga u potpunosti.
14. Kada uzmete tehnologiju, naučite ju “što dublje možete” kako se ne biste dovodili u situaciju da ponovno “izumljujete kotač”. Peter Nixey je dao dobar primjer: “Ako ste Ruby programer uzmite vremena i naučite što sve jezik i njegovi libraryji mogu napraviti. Ako se Node programer, naučite koju arhitekturu Node koristi, metode koje ima i način na koji je stvoren. Ako ste Angular programer, proučite logiku na kojoj je jezik nastao”. Možda to što želite napraviti, jezik može napraviti za vas. Pitajte prije nego što počnete raditi nešto kompleksnije.
15. Isto vrijedi i za jezik koji koristite. Naučite one najvažnije libraryje koji dolaze uz jezik. Što više libraryja/klasa znate, to ćete lakše riješiti problem kad naletite na njega, jer ćete znati da već postoji klasa koja to rješava.
16. Kad god možete, koristite programske jezike koji će eliminirati klase koje bi mogle dovesti do run-time errora. Da biste to postigli koristite jezike koji imaju strong typing, static typing, managed memory, immutable data …
17. Ne bojte se zakopati malo dublje u framework koji koristite, klasu koju ste našli i slično. Nije problem ako ne uspijete iz prve shvatiti što se nalazi “ispod haube”, ali generalno biste trebali čitati source kod onog što importate u projekt i što koristite. Tako ćete bolje shvatiti što vam aplikacija radi i kada se pojavi problem, lakše ćete ga ukloniti jer ćete znati gdje treba gledati i tražiti. Nemojte samo koristiti “gotove” stvari bez njihovog razumijevanja.
18. Kada čitate tuđi (kvalitetan) kod, često ćete doći u napast da tražite main() metodu i da počnete od “početka programa”. Tako ćete samo potrošiti jako puno vremena. Ne morate shvatiti cijelu aplikaciju koju gledate, sve njene ulaze i izlaze. Nađite onaj dio koji vas zanima i njega proučite, analizirajte i shvatite. Ostalo ćete naučiti kada vam bude trebalo.
19. Sami napravite alat koji vam treba za svoje interne potrebe. Ako ga planirate pustiti u “produkciju”, budite sigurni da tako nešto već ne postoji. Ali za svoje potrebe, napravite nešto. Pa makar to bila super “todo” lista koja ima mogućnosti koje vama trebaju.
20. Napravite aplikacije koje ste i sami koristili, ali sa svojim alatima i programskim jezicima. Ako je netko prije vas mogao napraviti kalkulator, text editor, paint, Tetris ili Ping-pong, onda možete i vi. Pokušajte, a ako zapnete, pogledajte kako ih je netko drugi napisao. Naučite nešto od toga.
21. Razvijte “dobar ukus” za kod. Čitajte popularne open-source kodove alata koje i sami koristite, pogledajte kako su napisati, kako su komentirani, kako su dokumentirani. Nije svrha programiranja samo napisati nešto da radi. Cilj je da netko iza vas može lako pročitati kod, shvatiti kako radi i izmijeniti ga po potrebi. Naučite i te “neke druge” vještine.
ČITLJIVOST KODA I ODRŽAVANJE
22. Ne tražite dozvolu da nešto refactorirate, testirate, dokumentirate i slično. Sve je to dio programerskog posla. Ne trebate dozvolu da radite svoj posao.
23. Popravite ono što i nije potrgano. Uzmite projekt na kojem radite i prođite sav kod. Probajte shvatiti svaki dio koda što radi. Ako postoje petlje, sortiranja i silno što nije dobro, popravite to. Maknite hardkodirani HTML i zamijenite ga s “templating” sustavom, maknite CRUD iz baze podataka i zamijenite ga parametriziranim upitom, nadogradite sve “message boxeve” s odgovarajućim logiranjem, refactorirajte kod koji nije dobar ili je predugačak, formatirajte stringove na bolji način … obrišite sve “smeće” koje ne treba biti u projektu.
24. U programerskom svijetu postoji jedna rečenica koja kaže: “Always write code as if the person who ends up maintaining it will be a violent psychopath who knows where you live”. To znači da biste trebali pisati čitljiv kod koji će moći razumjeti i osoba koja će na projekt doći godinu dana iza vas i u “žurbi” moći izmijeniti kod ako za to ima potrebe. A ne da osoba mora shvatiti cijeli projekt i vaše razmišljanje kako bi nešto mogla na brzinu napraviti i popraviti.
25. Imenujte varijable što bolje možete, a ne koristeći kratice kao “w”, “xy”, “a” … To je vještina koju biste trebali razvijati svaki dan.
Piše: B.P.