djoka_l Beograd
Član broj: 56075 Poruke: 3569
Jabber: djoka_l
|
Više puta sam pisao na ovu temu, ali kako mi se čini da si ozbiljan, neće mi biti teško da napišem još jednom.
Prvo, postoji jak razlog zašto je programiranje dobro plaćen posao - ne može svako da bude programer, već je potrebno značajno obrazovanje. Nije to slučaj samo sa programiranjem, recimo kod tebe u CH su verovatno i lekari dobro plaćeni, pa ti ne pitaš kako da postaneš lekar za 6 meseci (ili dve godine). Nije nemoguće, ali je teško. Jedan moj poznanik, koji je bio uspešan programer, u jednom momentu je odlučio da postane advokat, završio pravni fakultet, dao pravosudni ispit i sada mlati pare kao advokat. Kao što vidiš, moguće je ali nema uspeha preko noći.
Zato je velika greška ako misliš da za posao programera postoji neka prečica i da se po tom pitanju razlikuje od neke druge struke koja zahteva univerzitetsko obrazovanje. Naravno, programiranje nije medicina, ali nije nešto što može da ti u kratkom roku donese rezultate.
Ja vidim neke četiri oblasti znanja koja su potrebna programeru:
1. Opšte znanje iz matematike. Matematika nije presudna, ali ljudi koji su dobri u matematici obično su i dobri u programiranju. Obe oblasti zahtevaju sličan način razmišljanja - sposobnost da se problem razloži na jednostavnije probleme (to je generalni inženjerijski pristup rešavanju svakog problema) i da se ti sitniji problemi reše na sistematski način.
2. Opšte znanje iz računarstva - algoritmi, strukture podataka, teorija informacija, računarske mreže, operativni sistemi, kompajleri, baze podataka
3. Programski jezici (da jezici, a ne jezik). Jezici su samo sredstvo da se ideje i algoritmi pretoče u kompjuterski kod.
4. Domensko znanje. Recimo, ako praviš sistem za knjigovodstvo, jako je poželjno da znaš kako knjigovodstvo funkcioniše, ako praviš sistem za on-line prodaju, lepo bi bilo da znaš malo o marketingu, kartičarskom poslovanju itd.
Pa sad, šta kupiti.
Za matematiku, postoje udžbenici koji obrađuju ono što je bitno za programera, oblasti kao što su binarna logika, kombinatorika i verovatnoća, brojni sistemi. Ozbiljni kursevi (na primer na Coursera.org) obavezno daju i neke linkove na literaturu iz matematike koja je potrebna u kursu.
Za opšte znanje iz računarstva biblija je The Art of Computer Programming - ne kažem da moraš da imaš, ali bolje knjige nećeš naći. Poenta nije da znaš sve moguće algoritme napamet, ali će pomoći da ne izmišljaš toplu vodu svaki put kada sedneš da nešto kodiraš.
Što se jezika tiče, za bilo koji ozbiljan projekat nećeš proći samo sa jednim jezikom. Recimo, da želiš da napraviš e-commerce sajt. Trebaće ti prvo da dobro savladaš HTML i CSS. Pa će ti onda biti potrebno da napraviš front-end. Za to će ti trebati poznavanje nekog frameworka, recimo Bootstrap 3, a možda će biti potrebno nešto drugo, recimo poznavanje JavaScript jezika i Polymer ili Angular. Polymer koristi JavaScript, dok Angular koristi TypeScript - što je u principu JavaScript koji liči na C#, pa bi bilo zgodno da znaš i C#. Pa će onda biti potrebno da se napiše serverski deo. A tu će možda biti Java. I to ne "gola" Java nego će se koristiti Spring Boot framework.
Naravno, u nekom momentu će ti biti potrebno da malo proučiš OAuth 2 protokol. Pa će komponente aplikacije da komuniciriaju preko AMQP. Naravno, JSON i YAML su obavezni. Pa onda SQL, ODBC ili JDBC. Možda ti neće trebati SQL ako koristiš neki ORM, ili recimo Linq.
Mogu ovako da ređam skraćenice do sutra. Poenta je da i ljudi koji su dugo u ovim vodama morajiu stalno da uče nove stvari i da ne postoji "univerzalni kit" znanja koji nekoga čini programerom.
|