Sto se tice preduslova za buduceg programera, mislim da bi to bili poznavanje engleskog jezika, makar na tom nivou da se mogu pratiti neki pocetni tutoriali i knjige. Od licnih osobina svakako pomaze posjedovanje interesovanja za to kako stvari rade, neke prirodne radoznalosti, sklonosti ka prirodnim naukama i matematici.
Korak 1:
Programiranje bi trebalo poceti sa nekim jezikom koji ne prezentuje mnogo detalja u pocetku, vec ima veci nivo apstrakcije. Ja sam pocinjao sa Pascalom koji je u tu svrhu i razvijen, danas vidim da ljudi preporucuju Python.
Korak 2:
Nakon razumijevanja osnovnih koncepata (petlji, kontrolnih struktura, pojmova varijabli, nizova, matrica), pisanja konzolnih programcica tipa vjesala, te nakon sto se buduci programer osjeca lagodno i osjeti prvu navalu samopouzdanja, trebalo bi preci na C i ponoviti to sve. Paralelno sa prelaskom na C, prelaziti poznatije algoritme i strukture podataka, te naravno sve to implementirati u C-u. Ucestvovanje na takmicenjima iz informatike (formalnim ili on-line) je odlican nacin za motivaciju ka ovakvom pristupu.
Korak 3:
Nakon C-a, preci na C++ sa naglaskom na OOP. Preci razne OOP koncepte i upotrijebiti ih na konkretnim primjerima. Napisati par konkretnijih programa i mozda poceti koristiti neke dodatne biblioteke da se razbije monotonija komandne linije. Npr. SDL + programiranje nekih jednostavnijih igrica moze biti zadovoljavajuca motivacija.
Korak 4:
Nema razloga za prestanak usavrsavanja na polju C++ i pratecih biblioteka (QT, itd) koje ce dati dodatne mogucnosti nasem buducem programeru, ali dobro je prosiriti opseg znanja i u ovom koraku mozda preci na Javu. Zbog mnostva biblioteka, a uz vec savladane OOP koncepte, ubrzo ce biti moguce napraviti i neke kompleksnije programe, koji mogu imati i konkretnu upotrebu. To daje novu dimenziju programiranju kojim se do sada bavilo cisto akademski. Svakako obraditi GUI / event driven, klijent server koncepte itd.
Dalje nema smisla govoriti u koracima, jer zavisi od sklonosti osobe sta joj se vise svidja i sta ce prvo poceti da radi. Ono sto bi svakako trebalo da se zna su:
- Dublje poznavanje arhitekture racunara, uz kraci izlet u ASM
- Relacione baze podataka, projektovanje baza i informacionih sistema generalno, SQL sintaksa
- Web programiranje i razna suma tehnologija koja se tu koristi, klijent side (HTML, CSS, JS, Ajax), te neki od server side jezika (PHP ili JSP)
- Koncepti Unix like sistema, permisije, rad s korisnicima, fajl sistemi, itd
- Osnovne stvari iz matematike koje bi mogle da budu cesce koristene, kao sto su grafovi, statistika, diskretna i numericka matematika
Vjerovatno sam dosta stvari i propustio.
Nakon sto se sve ovo predje, vjerovatno ce osoba da identifikuje sta joj je zanimljivo i nastavi dalje u tom pravcu. Prednost fakulteta je sto se sve gore navedeno (i mnogo vise) upravo ovako sistematicno i radi. Sve je naravno moguce postici i u sopstvenoj reziji, ali za to je potrebno dosta discipline i samopozrtvovanosti. Fakultet vec to sve ima sazvakano.
Dobitna kombinacija je vjerovatno fakultet iz podrucja IT-a + aktivan rad mimo fakulteta, da li kao part time posao, ili kao angazovanje na nekim svojim projektima.