Kako postati programer?

Učenici koji razmišljaju da postanu programeri često su u nedoumici, jer postoji mnogo različitih puteva ka toj profesiji, mnoštvo programskih jezika i resursa za učenje. Kako bismo dobili više informacija, pitali smo bivše gimnazijalce, sadašnje programere za savjet.
Svima smo postavili ista tri pitanja:

  1. Koji je najbolji način za ulazak u svijet programiranja?
  2. Koje lične osobine je potrebno imati ili razviti da bi se uspjelo u softverskoj industriji?
  3. Koja knjiga ti je pomogla da bolje programiraš? Pored knjige, može i neka druga preporuka ili savjet.

Olivera Blagojević
Software Engineer, Synechron
Novi Sad

1) Ukoliko vas pisanje kôda odmara, a rješavanje programskih zadataka drži budnim dok ne nađete rješenje – već ste ušli u svijet programiranja. Počnite sa programskim jezikom koji vas trenutno najviše zanima, a istraživanjem i konstantnim učenjem ćete sami otkriti framework-e koji vam odgovaraju, knjige, kurseve i čitave nove oblasti IT-a za koje prije niste znali.

2) Strpljenje, mnogo strpljenja. 🙂 Taktičnost, dobra komunikacija sa članovima tima – jako je bitno naučiti procijeniti kad i na koji način nešto reći, a kad prećutati. Ego ostaviti po strani – u programiranju uvijek neko nešto zna bolje od vas, tako da je reći „ne znam“ i pitati za pomoć potpuno u redu.

3) Navešću posljednju koji sam pročitala: Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin

Martina Marković
Junior Software Engineer, RT-RK
Beograd

1) Stalno se postavlja pitanje koji programski jezik treba prvo naučiti. Smatram da ne postoji jedan tačan odgovor za sve na to pitanje. Moja preporuka bi bila istraživanje mogućnosti koje nudi vještina programiranja na Google/Youtube platformi. Vidjećete da se iza programiranja krije raskošna računarska nauka, a njeno razumijevanje će vam dati priliku da rješavate izazovne probleme i radite na inovativnim projektima.
CS50 je kurs koji predstavlja jedan od najboljih uvoda u računarsku nauku.

2) Predanost, upornost i pouzdanost su osobine za koje smatram da su potrebne, kao i sposobnost prilagođavanja i vještina komunikacije koja je potrebna jer ćete vrlo vjerovatno raditi u timu.

3) Učenje o algoritmima i strukturama podataka mi je pomoglo da rješavam izazovne probleme. Programski prevodioci su mi pomogli da razumijem šta se to u pozadini dešava kada napišem svoj kod, a onda i kako da ga poboljšam.
Milo Tomašević je napisao knjigu “Algoritmi i strukture podataka” koju bih rado preporučila. Najveći broj literature je dostupan na engleskom jeziku, tako da bi moj savjet bio da usavršavate i poznavanje engleskog jezika koji će vam sigurno biti potreban u budućnosti.
Za kraj, učenje računarske nauke i fundamentalnih principa je jedini pouzdan način za ostati konkurentan u softverskoj industriji koja se veoma brzo mijenja i napreduje. Budite radoznali i uporni. Samo je nebo granica!

Jasenko Raković
Backend Developer, AM2 Studio

1) Upoznavanje osnove rada računara kako hardverski tako i softverski. Pošto sam u PHP svijetu, njega sigurno mogu preporučiti, ali ne u smislu da je najbolji. Sve zavisi u kom smjeru se želi ići. Ako se želi ići u web onda je preporuka: JS ili PHP. Sa JS-om možete pokriti i backend i frontend. Ako je to Android ili iOS, možda Flutter. Postaje sve bolji. Sa njim možete pokriti čak i web sada, ,,All in one” rješenje. Dosta istraživanja sa razumjevanjem i na kraju odluka bude donesena sama.

2) Istrajnost i ljubav prema programiranju.

3) Nije knjiga, ali Google sve zna. 🙂

Vanja Đurđević
Software developer, Ergon

1) Svaki jezik ili tehnologija je obično praćen nekom kultnom knjigom. Za početak je dobro uzeti takvu knjigu i steći opšte informacije o tehnologiji koju planirate koristiti. Prateći takvu knjigu kao referencu mozete početi neki jednostavniji projekat. Svaki put kada naiđete na nešto što vas koči dobro je koristiti pretrazivač jer većina problema se može otkloniti jednostavnom pretragom. To je neki generalni ,,flow” koji bih savjetovao nekom ko hoće da nauči da programira. Nezavisno od jezika ili tehnologije koju koristite dobro je se upoznati s tim kako računar i operativni sistemi rade.
https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X – To je svojevrsna ‘biblija’ u svijetu računara i daje dobru podlogu za razumijevanje računara i softvera.

2) Pošto se skoro uvijek radi u timu osobine koje je vrijedno razvijati su pouzdanost, jednostavna, direktna i iskrena komunikacija, tako da svi znaju sta se dešava na projektu (pogotovo nadrednjeni). Druga stvar koju bih savjetovao je naučiti cijeniti svoj rad i dobro se upoznati s cijenama rada u određenom polju ili s određenom tehnologijom. Generalni savjeti: raditi manje ‘hobi’ projekte, pri čemu imate potpunu slobodu koje tehnologije koristite i to vam omogućava da se izvještite s nekom novom aktuelnom tehnologijom kao i da usavršite one koje već znate. Nerijetko takvi hobi projekti mogu služiti i kao pasivni priliv novca.

Nemanja Đekić
Software Engineer, Continental
Novi Sad

1) Iz dosadašnjeg iskustva, svima koji bi htjeli da uđu u svijet programiranja, preporučio bih Harvardov kurs CS50 (https://cs50.harvard.edu/college/2021/fall/), profesora David J. Malana. Ovaj kurs pokriva osnove i daje uvod u razne podoblasti programiranja, što dalje dovodi do lakšeg izbora usmjerenja (Web Programiranje, Game Development, …). Još jedna od korisnih stvari je i sub-reddit https://www.reddit.com/r/learnprogramming/. Početnicima bih preporučio da izbjegavaju korišćenje framework-a, sve dok dobro ne savladaju materiju. U prilog tome dodajem i ovaj članak: https://unixsheikh.com/articles/how-to-write-software-than-will-keep-working-for-decades.html

2) Što se tiče same industrije i napredovanja u istoj, preporučio bih sljedeće:
– izbacite ego iz jednačine; ne postoji najpametnija osoba
– budi otvoren/a i iskren u komunikaciji sa kolegama
– testiraj svoj kod!
– dokumentuj nove procese; sad ćeš znati svaki korak, ali za 2-3 mjeseca ćeš zaboraviti i kad bude trebalo opet da se uradi isto, izgubiće se mnogo vremena.
– poštuj rokove; potrudi se da klijentima dostaviš proizvod u dogovorenim rokovima. Realnost je da se rokovi probiju u većini slučajeva, ali to ne treba da vas zaustavi da date sve od sebe.
– upoznaj se sa raznim tehnologijama razvoja software-a, kao što su scrum, kanban, SAFe i sl. Svaki projekat ima svoj način razvoja i dostavljanja software-a.

3) Na ovu temu bih preporučio knjigu: Scrum – Džef Saterland. (https://dereta.rs/a/30b03e99-871e-4cf1-ac4d-b73c2d6e4e9f/Dzef-Saterland.aspx)

Buduće kolege, srećno!

Milan Petrović
Software Developer, Vega IT
Novi Sad

1) Smatram da je potrebno opredijeliti se za jedan programski jezik, naučiti njegove osnove i što prije početi na izradi nekog hobi projekta. Iz mog iskustva, rad na hobi projektima mi je pomogao da stečeno znanje primjenim, proširim i susretnem se sa mogućim izazovima koji se dešavaju svakodnevno u radu na komercijalnim projektima. Kada se nauče osnove i koncepti programiranja u jednom programskom jeziku, dosta je lako prebaciti se na rad i u nekom drugom jeziku i prepoznati i primjeniti naučene koncepte. Ja sam trenutno dosta zainteresovan za izradu mobilnih aplikacija u Flutter-u gdje se koristi programski jezik Dart. Trenutno raste potražnja i zainteresovanost za Flutter i od nedavno je moguce raditi i web aplikacije upotrebom Flutter-a, tako da to vidim kao idealnu priliku za oprobati se i u programiranju web i mobilnih aplikacija i uočiti razlike i prednosti jednog i drugog razvoja. Dosta korisnih tutoriala vezanih za Flutter mogu da se pronađu na YouTube kanalu ResoCoder.

2) Vještine komunikacije, strpljenje, posvećenost ka detaljima, kao i gledati ,,širu sliku” i sagledati probleme/izazove iz različitih uglova.

3) Clean Code autora Robert C. Martina. Savjetovao bih početnike da budu istrajni i uporni i da ne odustaju kada naiđu na izazove/probleme u radu. Za svaki problem postoji rješenje i velike su šanse da je taj problem već neko do sada riješio.

Hasan Turalić
Full-Stack developer, BauFi24
Minhen

1) Mislim da se najbrže uči samim programiranjem projekata. Naravno za to su potrebne osnove koje se mogu steći uz pomoć kurseva (npr. Udemy, Codeacademy) ali i Youtube tutoriala. Meni su najviše odgovarale interaktivne stranice poput W3Schools (https://www.w3schools.com/) za frontend (HTML, CSS, JavaScript) ili Kaggle (https://www.kaggle.com/learn) za Data Science i Machine Learning (Python).

2) Prije svega mislim da je bitna želja za znanjem. Danas se tehnologija jako brzo mijenja, da bi ostali u korak sa vremenom moramo biti spremni da otkrivamo i učimo nove stvari.

Nemanja Lukić
Software Developer, ProductDock,
Doboj

1) Najbolji nacin za ulazak u svijet programiranja je upis nekog od IT fakulteta. Dobije se osnovno, ali kompletno znanje o razvoju softvera. Preporuka za jezik Java.

2) Osobine koje je protrebno razviti su komunikacija, i način kako da se vlastito znanje predstavi poslodavcu i klijentu.

3) Biti uporan i strpljiv.

Stefan Njegomirović
Lead Web Developer, Starnet
Tuzla

1) Najbolji način je da se krene sa jednostavnim programskim jezikom i jednostavnim, a u isto vrijeme zanimljivim, zadacima koji će učiniti tvoj ulazak u svijet programiranja zabavnim. Moja preporuka je JS/TS sa HTML i CSS.

2) Upornost, fokus, logika, otvoren um, dobra organizacija vremena.

3) Clean code

Mladen Ristić
Senior Dotnet Developer, Starnet
Tuzla

1) Ulazak u programiranje: Python ili JavaScript za učenje samih osnova zbog brze i lake interakcije. Nakon toga je bitno shvatiti šta se želi i odabrati tehnologije najpogodnije za rad. Oko samih osnova (if, for, while) postoje i interaktivne igre namijenjene čak i za djecu tako da mogu biti od pomoći da se uđe u svijet programiranja.

2) Sposobnost snalaženja u novim situacijana, generalno vještina rješavanja problema, komunikacija, ona je od esencijalnog značaja prilikom rada u timu ili rada sa klijentom.

3) Priručnik jezika koji koristite (nipošto ispod 1000 stranica i bez preskakanja), Clean Code, Art of Unit Test, Domain Drive Design / Implementing Domain Driven Design.

Bojan Popović
Software Engineer, HTEC Group
Novi Sad

1) Smatram da je trenutno, za novopečene programere, najjednostavnije krenuti sa Web developmentom.
Bilo da se osoba opredijeli za frontend, backend ili fullstack, najvažnije je dobro naučiti osnove nekog jezika i generalno kako funkcioniše Web.
Što se tiče izvora učenja, mislim da ne postoji pravilo, jer svako od nas uči na drugačiji način i pronalazi neki svoj tempo.
Konkretno meni je uvijek bilo jednostavnije krenuti sa nekim kursom, jer mi je čitanje dokumentacije u početnoj fazi dosta suvoparno, iako je kasnije neizbježno kada se počnu rješavati kompleksniji problemi.

2) Programiranje je u suštini konstanto rješavanje problema, pa je jako korisno biti snalažljiv i naučiti kako se koristi Google, jer će vam on biti najbolji prijatelj tokom čitave karijere, bilo da ste junior ili senior.
U 99% slučajeva programeri rade u većim ili manjim timovima, pa je jako bitno imati dobru komunikaciju sa kolegama i klijentima, što znači da se otvorenost i iskrenost jako cijene.

3) The Pragmatic Programmer i The Clean Coder: A Code of Conduct for Professional Programmers bih preporučio svima koji se bave ovim poslom da pročitaju.
Preporuka je da budete strpljivi kada učite nove stvari i da dokumentujete to što trenutno radite inače vam za mjesec dana neće biti jasno šta ste uradili.
I ono što se podrazumijeva, naučite Engleski jezik jako dobro, jer ćete ga u nekim firmama koristiti više nego maternji.

Bonus galerija: Nemanja Lukić, Nemanja Đekić i Vanja Đurđević na takmičenju iz programiranja 2011. godine.