Citat:
djoka_l:
I ti si se uhvatio za moj DRUGI post. U provom sam napisao koje su to veštine koje su potrebne programeru (njih jedanaest, možda može samo da se izbaci projektovanje mikroprocesorskih sistema).
I meni je jasno da ima raznih programera. Pogledaj moj polušaljivi post o tri tipa programera koje sam sretao u praksi:
http://www.elitesecurity.org/t469661-1#3354846
Jedan interesantan sajt:
http://www.nand2tetris.org/
Ono o čemu sam pisao da je potrebno programeru u jednom kursu. Počinje od NAND gejta (bez elektronike koja stoji iza toga), preko logičkih i sekvencijalnih mreža, pravljenje golog metala od NANDa, pravljenje operativnog sistema za tako napravljen računar, pravljenje kompajlera, pa do pravljenja igrica...
Zapravo, da bi se danas postalo "programer" ne mora se znati nista od toga, dovoljno je znati elementarnu sintaksu i nekoliko osnovnih statement-a nekog od trenutno najpopularnijih programskog jezika (petlje, grananje, mozda osnovni OOP), malo korisnih f-ja od 3rd party biblioteka (upiti u bazu i sl.) i kako deploy-ovati napravljeno remek delo i... to bi bilo to, dobar deo napisanog koda spada u djubre napisano od takvih "strucnjaka".
Naravno, sa ovakvim bogatim znanjem ce rezultujuci kod verovatno biti pun rupa (ako je neki "low level" jezik poput C-a ili C++-a - to verovatno znaci buffer overflow-e, ako je neki high-level jezik verovatno "samo" eskalacije privilegija tipa injekcija SQL upita i sl.), o paralelnom kodu da ne pricamo (korupcija podataka / race condition-i, poll-ovanje ili prezauzimanje CPU-a sa busy-waitingom i sl.) i pateticnih performansi. O kojekakvim mogucim i nemogucim krahovima kada kod trci na drugom hardveru ili van testiranih (ako je ista testirano) situacija i da ne pricamo.
Ali, hej, sad ide najbolji deo: i sa svim tim manama, takvo djubre od koda "radi posao" u enormnom % slucajeva u praksi :( Ako se takav kod nakrpi da moze da izdrzi da ne pukne bar minimum vremena i hardverski upgrade resava problem performansi, tu se prica zavrsava.
To je dobra vest za gomilu ljudi koji zele da postanu "programeri" za 21 dan - to je zaista moguce, bar kada su lake stvari u pitanju.
Necu da navodim koje su stvari "lake" - da se ljudi iz nekog konkretnog domena ne bi uvredili. Zapravo, nije njihov domen "lak", vec ima tu nesrecu da je lako postati ovakav "programer" i prolaziti na trzistu, iako za mnoge teze zadatke takvi ljudi nisu adekvatni.
Neki domeni poput hardverskog dizajna, digitalne obrade signala, masivno paralelnih algoritama ili (srecom) pisanja WHQL/sertifikovanih kernel-mode drajvera imaju daleko vecu "precku" za pisanje "prolaznog" koda, pa je i % priucenih kvazi strucnjaka manji. Ova poslednja stavka je nekad bila losija ali je dominantnom PC OS vendoru do3.14zdelo da im se proizvod asocira sa plavim ekranom pa su postali stroziji u prihvatanju drajvera.
Na zalost, neki drugi domeni imaju gomilu dovoljno jednostavnih zadataka koji mogu obaviti i gore pomenuti "strucnjaci".
Ekonomski gledano, to je sasvim OK - ako neki posao moze da uradi trenirani golub, bilo bi besmisleno insistirati da ga radi postdoc. Na zalost, problem je sto jako cesto takvi "strucnjaci" vrlo brzo dobijaju komplikovanije zadatke koji su iznad njihovog praga znanja.
Rezultat toga je neodrzivo djubre od koda koje se svakodnevno u mnogim firmama raspisuje od nule, uz pomoc novih konsultanata, outsourcing firmi, novih 'eksperata' i sl.
Ali... dokle god je curana bice i podvarka, kaze izreka. Ako neko placa sve to i isplati mu se, sto da ne.
Time dolazimo do saveta za OP-a:
1. Ako zelis postati >pravi< programer koji ce moci da resava komplikovanije izazove i pise kvalitetan kod:
poslusaj sta kaze djoka_l. To ce kostati vremena, spremi se za mesece ucenja da bi uopste dosao do toga da pises nesto sto a) razumes i b) kako treba
ili
2. Ako te to ne zanima i zelis sto pre poceti da zaradjujes kintu, preskoci sve to i uzmi neki od programskih jezika koji "oprastaju" budalastine, pokupi nekoliko howto-a i popularnih biblioteka / skriptova, nauci da iskompajliras/deploy-ujes svoje remek delo, nastimuj svoju prezentaciju i... udri.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos:
http://www.digicortex.net/node/17 Gallery:
http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! -
https://github.com/psyq321/PowerMonkey