Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Koje znanje je potrebno programeru. Šta svaki programer treba da zna

Koje znanje je potrebno programeru. Šta svaki programer treba da zna

10. mart 2016. u 09:56

Šta programer treba da zna da bi dobio posao u finansijama?

  • ITI Capital Blog,
  • Izrada web stranica

U našem blogu na Habréu pišemo mnogo o tehnologijama koje se koriste u oblasti finansija. Berze danas koriste najnapredniji softver i hardver - kako za izgradnju same trgovačke infrastrukture, tako i za kreiranje sistema za online trgovanje.

Danas su ovdje traženi matematičari, fizičari i programeri. Ljudi koji su u stanju da kreiraju algoritme trgovanja i na osnovu njih naprave visokokvalitetan softver. Mnogi programeri bi se zauzvrat željeli okušati u finansijskoj industriji - ona može ponuditi atraktivnu kombinaciju zanimljivih zadataka i visokih plaća.

Danas ćemo razgovarati o tome koje vještine trebate imati da biste dobili posao u HFT firmi, investicionoj banci, hedž fondu ili brokerskoj kompaniji. Prilikom pripreme teme korišćeni su materijali sa sajtova i quantstart.com.

Jezici

C je već dugi niz godina jedan od najpopularnijih programskih jezika u finansijama. Morate ga znati ne samo da biste podržali naslijeđeni kod, već i da biste organizirali rad sa API-jima u elektronskim sistemima trgovanja i razmjenjivali podatke sa provajderima.

C++ se često naziva "primarni jezik Wall Streeta" jer je najvažnija stvar za sisteme trgovanja brzina. Bez obzira na to koliko je program za trgovanje dobro osmišljen i otklonjen, ako u nekom trenutku potroši dodatne milisekunde na "prikupljanje smeća", onda to može dovesti do ozbiljnih gubitaka. Isto se odnosi i na infrastrukturu za razmjenu - sve vrste gatewaya za prijenos podataka i "konektora" na različite sisteme.

Kao rezultat toga, C++ programeri su veoma traženi u kompanijama finansijskog sektora, uključujući i same berze. I ovakva situacija će se nastaviti još mnogo godina - neko treba da održava postojeću infrastrukturu.

Za jedan od naših prethodnih članaka razgovarali smo sa ruskim stručnjakom za kreiranje sistema trgovanja, koji u situacijama kada je potrebna maksimalna brzina koristi sledeće tehnologije:

C ++ i čisti C su vrlo pogodni za ove zadatke. Također se dešava da se brzi roboti kreiraju gotovo u asembleru - ovdje je vrijedno spomenuti mehanizme za direktno čitanje i upisivanje podataka u memoriju mrežne kartice, zaobilazeći standard mehanizme za rad kroz drajvere, kao i rad sa "super brzim programabilnim hardverom" poput FPGA.

Prema tvorcu QuantStart resursa i profesionalnom trgovcu Michaelu Hulls-Mooreu, danas stariji programer sa 5-7 godina C++ iskustva može zaraditi 500-700 funti dnevno u Londonu. Stručnjaci za C++ su takođe veoma traženi u ruskim kompanijama. Osim toga, ove programere često privlače profesionalni trgovci koji mogu kreirati uspješnu strategiju trgovanja, ali im je potrebna pomoć nekoga ko bi je mogao programirati.

C# i Java su takođe koristile razne finansijske institucije već duže vreme. U osnovi, velike banke za njihovu trgovačku infrastrukturu. Ovi jezici se koriste za kreiranje front-end interfejsa i obradu podataka.

Na ruskom finansijskom tržištu visoko su cijenjeni stručnjaci koji poznaju C ++ i C # - na našem blogu smo ranije rekli da je, zahvaljujući ovim alatima, uspio pronaći posao u finansijskim kompanijama, a zatim je počeo stvarati vlastite sisteme trgovanja . Evo šta je junak materijala savjetovao da studiraju za programere koji bi u budućnosti željeli da se zaposle u oblasti finansija:

Za one koji započinju svoj put u trgovanju ili su na neki način zainteresovani za ovu oblast, savetovao bih vam da skrenete pažnju na platforme i jezike visokog nivoa kao što su .NET i Java. Ovaj drugi je veoma popularan na zapadnim berzama, za sada imamo manje, ali postoje dobri izgledi za šire širenje ovog jezika. To znači da će Java programeri biti traženi u finansijskim kompanijama, fondovima i brokerima. Ipak, .NET je prilično zatvorena platforma, koja također ima niz ograničenja. Nije pogodan za trgovanje sa malim kašnjenjem i HFT trgovanjem.

Ali i u .NET-u i u Javi, možete brzo kreirati kompletne softverske proizvode. Glavni nedostatak je što nisu najbrži (ako se broji u mikrosekundama).


Skriptni jezici kao što su Python, MATLAB i R često se koriste za prototip kvantnih modela u hedž fondovima i "kvantnim" trgovačkim jedinicama u bankama.

Kvantni trgovci i programeri finansijskih aplikacija često kodiraju svoje prototipove u skript jezicima. Ovi prototipovi su zatim opisani na bržim jezicima kao što je C++ od strane programera koji su specijalizovani za ovo.

Sistemi klijent-server

Sistemi trgovanja su, po definiciji, distribuirani. Skoro sve kompanije, od malih firmi do velikih investicionih banaka, grade svoje sisteme koristeći TCP i UDP protokole - ponekad je u trgovanju brzina važnija od garantovanja isporuke podataka.

Stoga, programeri trgovačkih aplikacija moraju dobro razumjeti klase socketa za C: socket(), bind(), poll() i select(). Gotovo nikad nije potrebno direktno raditi s njima, jer već postoje mnoge gotove biblioteke za to, ali jednostavno je potrebno razumjeti kako funkcionira interakcija s njima.

Osim toga, za programere finansijskog softvera, plus je poznavanje protokola za prijenos podataka koji se koriste u ovoj oblasti, kao što su,.

potoci

Kreiranje klijent-server sistema i višenitnog programiranja u finansijskom sektoru idu ruku pod ruku. Sve ovo podrazumeva, na primer, pisanje standardnog TCP servera, servera za balansiranje opterećenja, servera visokih performansi - programer koji želi da kreira softver u finansijskoj kompaniji trebalo bi da to može da uradi. Također je dobro razumjeti pthreads(), fork(), klase muteksa i ideju semafora općenito. U slučaju Jave, također morate razumjeti metode sinhronizacije koje postoje za ovaj jezik.

Baza podataka

Finansijski sistemi su bazirani na bazama podataka, tako da je programerima potrebno duboko poznavanje SQL-a. Poznavanje jednostavnih operatora odabira neće biti dovoljno - često ćete se u toku rada morati petljati oko kreiranja procedura za pohranu, bavljenja indeksima itd. Osim toga, morate razumjeti razliku između zaključavanja na nivou tabele, na nivou stranice i na nivou reda.

UNIX
Sistemi za trgovanje obično koriste UNIX platformu (često Solaris i Linux). Za Windows se po pravilu kreiraju terminali za trgovanje sa grafičkim interfejsom, dok se UNIX koristi za razvoj „motora“ softvera za trgovanje.

To znači da programeri jednostavno moraju razumjeti šta su tail, sed, grep, awk, tr i top komande. Još bolje, ako stručnjak zna kako da radi sa vi, vim ili emacs i ne boji se problema uzrokovanih pogrešnom konfiguracijom $LD_LIBRARY_PATH.

Vještine otklanjanja grešaka

U karijeri programera u finansijskim institucijama, sposobnost analiziranja osnovnih datoteka pomoću dbx ili gdb je korisna. Takva se potreba javlja rijetko, ali ako se dogodi, bolje je da sve možete sami.

Zaključak

Berza je izuzetno visokotehnološka industrija koja se aktivno razvija, što rad u ovoj oblasti čini veoma atraktivnim za IT stručnjake koji žele da razviju svoje veštine. Istovremeno, da bi učestvovao u zanimljivim projektima, inženjer uopće ne mora ići u inozemstvo - nove tehnologije se aktivno uvode na rusko tržište dionica. U jednom od naših prethodnih materijala govorili smo o kreiranju SmartX terminala i Matrix brokerskog trgovačkog sistema, u čijem razvoju možete sudjelovati.

U zaključku, još jedan savjet: nemojte previše brinuti o poznavanju interne "kuhinje" procesa trgovanja i koncepata iz oblasti finansija. Naravno, to može biti dodatna prednost, ali nedostatak ekonomije i znanja teško da će spriječiti dobrog programera da pronađe posao u finansijskoj kompaniji.

P. S. ITinvest razvojnom timu za rad na projektu

Čini se da svakog programera početnika zanimaju odgovori na sljedeća pitanja:

  • Šta je programiranje?
  • Da li je teško postati dobar programer?
  • Šta početnik treba da zna?
  • Gdje bi trebao početi studirati?

Ovaj dio našeg udžbenika posvećen je odgovorima na ova i neka druga pitanja. Dakle.

Programiranje(sa engleskog. programiranje) je proces kreiranja kompjuterskih programa.

Da biste mogli komunicirati sa računarom i kreirati programe, potrebno je da znate jedan ili više programskih jezika. Zahvaljujući programskim jezicima, osoba dobija mogućnost da piše programe i postavlja specifične zadatke za računar, koje naknadno rešava u skladu sa zadatim uslovima.

Trenutno je broj programskih jezika odavno prešao sto! Međutim, to se ne treba plašiti, jer, unatoč činjenici da se jezici mogu uvelike razlikovati u svom opsegu, svi oni u osnovi imaju istu logičku osnovu i često vrlo sličnu sintaksu. Stoga, nakon što ste dobro proučili bilo koji savremeni programski jezik, moći ćete bez problema savladati bilo koji drugi jezik koji vam je potreban u budućnosti.

Istovremeno, treba imati na umu da proučavanje bilo kojeg predmeta podrazumijeva ne samo želju za učenjem, već i određenu predispoziciju za područje koje se proučava. Što se programiranja tiče, njegovo proučavanje će biti mnogo lakše za ljude koji se bave matematikom, jer je u programiranju veoma važno biti u stanju dobro razmišljati i logično razmišljati. Osim toga, dobrodošli su poznavanje engleskog jezika, opšta sposobnost pravilnog pisanja, kao i strpljenje i upornost.

Jasno je da svi ljudi imaju ove kvalitete i sposobnosti razvijene na različite načine. Stoga je prilično teško nedvosmisleno odgovoriti na pitanje da li je teško postati dobar programer. Neko će moći samostalno da savlada programiranje bez napuštanja kuće, a neko bez pomoći spolja neće moći uopće započeti proces učenja, čak i ako ima sve udžbenike. U svakom slučaju, morate zapamtiti da se dobri programeri ne rađaju - oni se stvaraju. U isto vrijeme, ne morate misliti da postati najbolji programer znači diplomirati s počastima na odgovarajućem univerzitetu. Ima dosta primjera gdje svrsishodni samouki ljudi nadmašuju maturante na mnogo načina. To je zbog činjenice da samouki učenici sa velikom željom proučavaju oblast interesovanja i, u slučaju poteškoća, ne trče kod svojih nastavnika ili nastavnika, već pokušavaju sami da prebrode problem, tvrdoglavo razmatrajući razne mogućnosti i rješenja, listanje stranica udžbenika ili surfanje internetom u potrazi za odgovorima na specijalizovanim stranicama i forumima. Inače, prema istraživanju osiguravajuće kuće GoCompare, gotovo četvrtina najbogatijih ljudi na planeti, prema magazinu Forbes, u proteklih 20 godina ili nije uopće studirala na fakultetu, ili ga je napustila prije nego što je dobila diploma. Štaviše, većina njih su samo predstavnici IT oblasti! Evo samo nekoliko primjera imena takvih ljudi: Bill Gates - Microsoft, Mark Zuckerberg - Facebook, Steve Jobs - Apple, Michael Dell - Dell Computer Corporation, Larry Alison - Oracle Corporation, Jan Koum - WhatsApp.

Postoji mnogo programskih jezika i nisu svi dovoljno laki za učenje. Na internetu možete pronaći dosta različitih ocjena za složenost jezika i njihovu popularnost. U svakom slučaju, preporučljivo je započeti s prilično uobičajenim i popularnim programskim jezikom, koji, prema brojnim recenzijama, nije teško naučiti, a ima i puno tutorijala na ruskom jeziku, knjiga problema, video tutorijala, primjera koda i programe. Jedan takav jezik je JavaScript, čije su osnove predmet ovog tutorijala.

Međutim, samo čitanje nije dovoljno za učenje programskog jezika. Najviše vremena treba posvetiti kucanju koda i praktičnom rješavanju raznih problema. Morate razviti što više programa, od najjednostavnijih do najsloženijih algoritama, posvećujući tome 85-90% svog vremena učenja. I općenito, dobri programeri uvijek imaju malo znanja u oblasti programiranja za koju su specijalisti. Stoga su u stalnoj potrazi za nečim novim ne samo u svom području, već iu srodnim oblastima, čime se kontinuirano usavršavaju i proširuju svoje vidike. Zato budite strpljivi, pokušajte, napravite korak unazad, ali ne odustajte i napravite dva koraka naprijed, i tada ćete sigurno uspjeti!

Brzi skok na druge stranice

  • Šta bi programer početnik trebao znati?

Moja lista uključuje sljedeće jezike:

  1. C++. Mnoge od sljedećih platformi (JVM, CLR, Node i druge) su napisane na ovom jeziku. Također vam olakšava razumijevanje kako ručno optimizirati memoriju.
  2. C# ili Java. Ne, ne morate znati oboje odjednom. Učenje jednog od ovih objektno orijentiranih jezika vrlo je slično učenju drugog.
  3. HTML. Ne smatram ga jednim od programskih jezika, ali drugi su ovog mišljenja, pa...
  4. css. Neophodan za bilo koju vrstu web razvoja.
  5. JavaScript. Njegova modernija i ugodnija verzija, a ne smeće koje smo koristili prije 20 godina. Imajte na umu da se sam jezik nije mnogo promijenio od tada do sada. Mi, odnosno programeri koji ga koriste, smo ti koji smo se zaista promijenili.
  6. SQL. Potreban za rad sa relacionim bazama podataka.
  7. Lisp. Yes Lisp. Ili, tačnije, "jedna od inkarnacija ovog jezika". Clojure, Lisp, Scheme, Nu, ili nešto slično će poslužiti. Morate znati šta je homoikonički jezik i razumjeti kako linije između koda i podataka nestaju kada se koriste pravi alati.
  8. mali razgovor. Da. Bilo koji GUI okvir izgrađen na izvornom hardveru (Windows, macOS, OS/2, X/Windows, Android, iOS, itd.) koristi iste osnovne principe koji su formulisani i oličeni u Smalltalku još 60-ih godina.
  9. Ruby ili Python. Morate znati barem jedan dinamički programski jezik. Javascript je takođe pogodan ovde, ali samo ako prvo naučite sam jezik, bez ikakvih DOM modela koji mogu značajno da iskrive početnu sliku (React, Angular, VueJS - svi oni sadrže ove iste „DOM modele“ o kojima govorimo.) Usput, kad jednom naučite Lisp, bit će vam mnogo lakše razumjeti JavaScript.
  10. AspectJ. Upoznavanje sa aspektno orijentiranim programiranjem će u potpunosti promijeniti način na koji razmišljate o objektima, i to je sjajno.
  11. Haskell, ML, Ocaml ili Miranda. Provedite neko vrijeme na funkcionalnim jezicima kojima nedostaju objekti.
  12. bash ili zsh ili drugu shell skriptu. Zato što ne treba svaki problem ili zadatak u programiranju riješiti korištenjem punopravne aplikacije.
  13. F#, Scala, Clojure ili bilo koji drugi objekt/funkcija hibridni programski jezik. Jer kada jednom savladate osnove i savladate osnovni set prvih 11 programskih jezika na ovoj listi, bićete spremni za nešto što neće biti lako naučiti.
  14. Swift i/ili Kotlin. Oba su varijeteti objektno orijentiranih jezika i imaju neke ugrađene funkcionalnosti. Nakon što ih proučite, bit ćete spremni za rad na mobilnim aplikacijama.
  15. x86 ili ARM asembler. Mogućnost čitanja asemblerskog jezika će vam omogućiti da otklanjate greške koda bez korištenja izvornog koda.

I da, znam sve gore navedene jezike. Čak i podučavam mnoge od njih.

I ne, ne morate ih sve znati da biste bili razumno kompetentan programer. Ako želite biti samo dobar programer, morate znati jedan od glavnih jezika (HTML/CSS/Javascript) + jezik za backend programiranje (najčešće je to C#, Java, Python, Ruby ili NodeJS-Javascript ) + SQL ako koristite sistem upravljanja relacionim bazama podataka (RDBMS). Ovo će biti dovoljno.

Međutim, učenje svih ostalih jezika je upravo ono što će vam omogućiti da pređete od „običnog“ do „vodećeg“ programera, a zatim dostignete maksimalan nivo znanja i vještina.


Nišan Panta, računarski inženjer, programer jezikaPython

Ja sam takozvani jezički agnostik, pa ako me neko, pod pretnjom smrti, natera da napravim takvu listu, to bi izgledalo ovako:

1. Python. Zato što je izuzetno zgodan i lak za prototip, a takođe i zbog postojanja ogromnog broja open source okvira. Osim toga, bilo bi korisno spomenuti i široko razvijenu zajednicu.

2. C. Jer uz njegovu pomoć možete jasno razumjeti kako sve funkcionira. Odlično za lagane zadatke.

3. C++. Takođe za jednostavne zadatke. Pogodno za korištenje objektno orijentiranih paradigmi. Osim toga, može se koristiti za niz drugih zadataka.

4. bash. Na prvi pogled, rad s njim može izazvati zbunjenost, pa čak i poteškoće. Međutim, čim ga savladate, uz njegovu pomoć ćete provoditi sve procese automatizacije.

5 . Scala. Koristi se kao hibrid funkcionalnog i imperativnog programskog jezika. Sa njim možete raditi nevjerovatne stvari.

6. javascript. Najmoćniji jezik za web razvoj. Lično volim "čisti" JS (imajte na umu da web razvoj definitivno nije moja stvar).

7 . Java. Za obavljanje zadataka u objektno orijentiranom programiranju. I za korištenje Spring framework-a.

8 . Haskell. Svaki programer bi trebao znati funkcionalne paradigme programiranja.

9 . PHP. Ako trebate učiniti nešto vezano za web razvoj. Po mom mišljenju, ovaj jezik definitivno nije simbol pogodnosti i jednostavnosti.

10. R. Za statističku analizu. Lično, nisam ni pokušao da radim sa njim, pošto sam više nego dobar sa samim Pythonom.

11 . HTML. Kao što sam već rekao, obično se ne bavim web razvojem. Međutim, ponekad na poslu od mene se traži da pokažem šta je urađeno u backendu. U ovom slučaju, znanje HTML-a je neophodno.

12 . Markdown. Jedan od najčešće korišćenih markup jezika. Po pravilu ga koristim za neke bilješke, pisanje README fajla i još mnogo toga.

13. VimL / vimscript. Nekada sam pisao skripte koristeći VimL za kreiranje prilagođenih dodataka i konfiguracija za vim. Ovo je jedan od onih skriptnih jezika s kojima se mnogi ne usuđuju raditi.

14. CSS. Korištenje CSS-a s vremena na vrijeme neće uopće naštetiti vašem HTML-u.

15. matlab/ Octave. Radio sam složene proračune s njim. Međutim, sada sve ovo radim u Pythonu zahvaljujući NumPy-ju.

Esteban Fargas, razvijam aplikacije i učestvujem na takmičenjima u programiranju

  1. Java: Oracle je sigurno platio vaš univerzitet dovoljno dobro da vas nauči ovom jeziku kao uvodu u objektno orijentirano programiranje. Takođe će biti korisno ako želite da učestvujete na takmičenjima u programiranju.
  2. C/ C++: U principu, vrlo sličan gore navedenoj Javi. Inače, ova dva jezika i dalje doživljavam kao jedan.
  3. C#: Nije loš jezik, koji je rezultat mješavine dva gornja jezika.
  4. HTML: To je okosnica cijele mreže. Međutim, to još uvijek nije idealno.
  5. css: Omogućava vam da izgledate lijepo za razne stvari na internetu. Takođe daleko od idealnog.
  6. JavaScript: Omogućava vam da izgradite logičke šeme za Internet.
  7. Python: Također je lijepo imati drugačiji programski jezik i skup paradigmi za pisanje pozadine aplikacije. Osim toga, to je trenutno zajednički jezik za tehnologije mašinskog učenja.
  8. ruby: Još jedan sjajan jezik za kreiranje backenda. Proučavanje neće potrajati.
  9. golang: Sakupio je sve lepe karakteristike koje su na raznim jezicima ​​grupe C. Prelepo je. Sa njegovim kombinovanim modelom mogu se izvesti veliki projekti.
  10. Scala: Takođe vam omogućava da kreirate zaista odličan profesionalni softver. Upoznavanje funkcionalne paradigme može biti izuzetno zanimljivo i izdašno sa uzbudljivim zadacima.
  11. Haskell: Proučavanje funkcionalne paradigme na maksimalnom nivou.
  12. Lisp: Isti kao i gornji Haskell, samo u još neobičnijoj verziji zasnovanoj na nezamislivo bizarnoj sintaksi.
  13. bash: Da li je to uopšte jezik ili nije? Na ovaj ili onaj način, bilo bi lijepo savladati ga kao jedan od zgodnih alata programera.
  14. SQL: Koristi se za rad sa bazama podataka.
  15. PHP: Jezik koji se koristio u prošlom veku za kreiranje pozadine.

Programer se bavi pisanjem programa za različite vrste računara. Ovo uglavnom kreativno zanimanje zahtijeva mnogo vještina, znanja i iskustva. Ali prvo što programer treba da zna je kakve lične kvalitete imaju predstavnici ovog okruženja. Oblast informacionih tehnologija ne miruje i ubrzano se razvija. Pravi specijalista treba uvijek biti svjestan svih promjena, što znači da mu je potrebno veliko interesovanje i sklonost samoobrazovanju.

Sljedeće što trebate znati je engleski. Svaki programer to zna barem na tehničkom nivou, jer će uz njegovu pomoć biti lakše razumjeti komande većine programskih jezika. Strane zemlje se najbrže razvijaju u oblasti razvoja softvera. Stoga je engleski koristan za upoznavanje sa najnovijim vijestima iz ove oblasti.

Danas mnogi fakulteti visokoškolskih ustanova ne samo da detaljno objašnjavaju šta je potrebno da se postane programer, već i odmah pripremaju specijaliste sa neophodnim osnovnim vještinama iz oblasti matematike i fizike. Međutim, mnogi programeri tvrde da visoko obrazovanje u ovoj oblasti nije glavna stvar. Ovdje je važnije pronaći nestandardna i uspješna rješenja u procesu rada na zadacima.

Sljedeće stavke onoga što programer mora znati ovisit će o području rada stručnjaka. Na primjer, za programera web stranica je vrlo važno i sa grafičkim uređivačima, kao i sa poznavanjem savremenih jezika za web razvoj. Jedan od njih je PHP.

Ljudi koji razmišljaju o ovome treba da shvate da osnovno poznavanje samog jezika neće biti sasvim dovoljno. Da biste dobili dobar posao i pristojnu platu, morate razumjeti OOP, koji se koristi u pisanju popularnih okvira i CMS-a. Rad s njima je sljedeći korak u onome što PHP programer treba da zna.

Za sada će biti dovoljno da se upoznate sa radom najčešće baze podataka - MySQL. Pravi stručnjak također vjerovatno neće moći bez HTML i CSS jezika za izgled. Uprkos činjenici da je PHP serverski jezik, on je povezan sa sklapanjem web stranica napisanih u HTML-u. Također će vam trebati poznavanje JavaScript sintakse i razumijevanje rada uobičajenih okvira - JQuery ili ExtJS. Sada je lako savladati sve ove moderne alate uz pomoć brojnih blogova i online kurseva.

Poznavajući šta je potrebno da se postane programer, kao i posjedovanjem toga, možete birati različite oblasti djelovanja - pisanje programa za automatizaciju poslovanja kompanija, razvoj i nadogradnju web stranica i aplikacija. U isto vrijeme, uopće nije potrebno raditi na stalnom mjestu u bilo kojoj kompaniji. Moguće je samostalno pronaći porudžbine koje vas zanimaju bez napuštanja kuće ili organizirati vlastiti posao, što može biti pravi izvor uspjeha. Međutim, takav poduhvat će zahtijevati dodatna znanja iz oblasti ekonomije, upravljanja projektima i jurisprudencije.

Svako bira profesiju "programer" iz svog specifičnog razloga. Jedan je odlučio da jednostavno promijeni specijalnost, drugi je primoran da uči drugo zanimanje, treći se ne razumije bez šifri, a neko ide u struku samo iz radoznalosti.

Na ovaj ili onaj način, svi počinju od nule. I prije nego što krenete od samog početka, zapitajte se da li vam je zaista potrebna ova profesija?

Suština rada programera - glavne specijalizacije, prednosti i mane rada

Suština rada programera zavisi od specijalizacije i kompanije.

Međutim, ponekad je programer i „Švajcarac, žetelac i igrač na lulu“. Ali to je u pravilu u malim firmama, čiji šefovi štede na stručnjacima.

Glavne kategorije u koje se svi programeri mogu uvjetno podijeliti u skladu s njihovim aktivnostima:

  • Primijenjeni specijalisti. Poslovi: razvoj softvera za igre, editore, računovodstvo/programe, instant messengere, itd.; razvoj softvera za sisteme audio/video nadzora, alarmne sisteme i dr.; prilagođavanje programa za nečije specifične potrebe.
  • Stručnjaci za sistem. Poslovi i zadaci: razvoj operativnih sistema, kreiranje interfejsa za baze podataka, upravljanje računarskim sistemom, rad sa mrežama, praćenje rada kreiranih sistema itd. Ovi stručnjaci zarađuju više nego bilo ko drugi u svojoj oblasti, zbog retkosti i specifičnosti profesije.
  • Web stručnjaci. Zadaci: rad sa internetom, izrada sajtova i web stranica, razvoj web interfejsa.

Prednosti profesije uključuju sljedeće prednosti:

  1. Veoma pristojna plata.
  2. Velika potražnja za dobrim stručnjacima.
  3. Mogućnost dobijanja prestižnog posla bez obrazovanja.
  4. Mogućnost zarade na daljinu, sjedeći kod kuće na kauču.
  5. Mogućnost rada na daljinu za strane kompanije.
  6. Kreativna profesija (iako često kreativnost zavisi od želja kupca).
  7. Udobni uslovi koje velike kompanije pružaju svojim stručnjacima (besplatna pića / lepinje, posebna mjesta za rekreaciju i sport, itd.).
  8. Mogućnost dobijanja "opcije". Odnosno, paket dionica kompanije. Istina, tek nakon odrađenog određenog perioda u kompaniji.
  9. Proširivanje horizonata. Kako se razvijate u profesiji, morate se upoznati sa raznim oblastima života i udubljivati ​​se u razne sisteme - od kancelarijskog rada i računovodstva pa tako dalje.

minusi:

  • Rad "dan i noć" je uobičajena stvar za ovu profesiju.
  • Ovaj će posao za mnoge ljude biti dosadan i monoton.
  • Interesi stručnjaka i kupca se ne poklapaju uvijek, a ono što je programeru očigledno, po pravilu se klijentu uopće ne može objasniti. To dovodi do sukoba i stresa.
  • Nije neuobičajeno - hitni načini rada.
  • Potreba za stalnim razvojem, učenjem novih stvari, vremenom za razvoj nakon IT-sfere. Za samo nekoliko godina programi zastarevaju i moraju se pisati novi.

Video: Kako postati programer?

Neophodne lične i poslovne kvalitete, profesionalne vještine i sposobnosti za rad kao programer - šta trebate znati i umijeti?

Glavne osobine dobrog programera

Dobar programer bi trebao...

  1. Volite svoj posao. I ne samo ljubav - povrijedi je.
  2. Volite učiti i podučavati od nule.
  3. Budite veoma vrijedni, marljivi i strpljivi.
  4. Budite spremni za stalni rutinski rad.
  5. Biti sposoban raditi u timu.

Koje znanje je potrebno budućem programeru?

Počnite sa učenjem...

  • Na engleskom.
  • Računarski uređaji i fizika svih procesa.
  • programski jezici.
  • Metodologija razvoja softvera.
  • Metodologija testiranja softvera.
  • Sistemi kontrole verzija.

Programski jezik - odakle početi?

Takođe ćete morati da proučite…

  • Java. Popularniji od Pythona i dobar izbor za početnike. Ali složeniji od Pythona.
  • PHP. Izoštreno za "web", ali će biti korisno svakom početniku.
  • C i C#. Veoma složeni jezici, možete ih ostaviti za kasnije.
  • ruby. Dobra opcija za drugi jezik.
  • Django. On će vas naučiti kako pravilno programirati. Slično po složenosti kao i Python.

Mnogo ovisi o odabranom smjeru.

Na primjer…

  1. Web programer će imati koristi od znanja HTML-a, CSS-a i JavaScript-a.
  2. Za desktop programera - API i okviri.
  3. Za programere mobilnih aplikacija - Android, iOS ili Windows Phone.

Gdje studirati za programera od nule - obrazovne institucije u Rusiji, kursevi, učenje na daljinu, online učenje?

Ako nemate prijatelje koji bi vas mogli naučiti profesiji programera od nule, onda imate nekoliko opcija za obuku:

  • Samoobrazovanje. Najteži put do programiranja, koji leži kroz proučavanje sajtova, aplikacija, knjiga itd.
  • Univerzitet. Ako ste upravo završili srednju školu i sanjate da steknete prestižnu profesiju programera, upišite odgovarajući fakultet. I dalje ćete steći osnovna znanja kroz samoobrazovanje, ali će vam „kora“ pomoći da se brže približite željenom cilju. Odaberite tehničke univerzitete tako što ćete unaprijed proučiti programe obuke.
  • Lični učitelj . Ako možete pronaći mentora među programerima, samoučenje će biti brže i efikasnije. Potražite mentore na online forumima, IT zabavama, tematskim konferencijama i tako dalje.
  • Kursevi. Moći će vas naučiti jednom ili drugom programskom jeziku na jednostavnim kursevima koji se mogu naći čak i u malim gradovima. Na primjer, " Edukativni IT portal GeekBrains, « Specijalista" na MSTU Bauman, « STEP Computer Academy», MASPK.

Možete steći visoko obrazovanje u specijalnosti programera u ...

  1. MEPhI.
  2. Ruski ekonomski univerzitet Plekhanov.
  3. Moskovski državni građevinski univerzitet.
  4. MSTU Bauman.
  5. Državni univerzitet za menadžment.

Video: 7 grešaka programera početnika

Korisni online resursi i knjige za učenje kako biti programer

  • habrahabr.ru (članci o IT temama, informacije o raznim temama). Ovaj resurs je poznat svakom programeru.
  • rsdn.org (knjige, aktuelna pitanja, koristan forum, popunjavanje praznina u znanju, materijali na ruskom).
  • sql.ru (odličan zgodan forum, korisna literatura, pa čak i ponude za posao).
  • theregister.co.uk (IT vijesti).
  • opennet.ru (vijesti, korisni članci, forum, itd.). Resurs za profesionalce.
  • driver.ru (biblioteka drajvera). Korisna stranica za početnike.

Resursi za učenje:

  1. ocw.mit.edu/courses (preko 2000 kurseva na različite teme).
  2. coursera.org (više od 200 kurseva, besplatno).
  3. thecodeplayer.com (uputstva za početnike).
  4. eloquentjavascript.net (resurs za uvod u Java Script).
  5. rubykoans.com (za sve koji uče Ruby).
  6. learncodethehardway.org (učenje Pythona, Rubyja, C i više).
  7. udemy.com (plaćeni i besplatni kursevi).
  8. teamtreehouse.com (preko 600 lekcija).
  9. webref.ru/layout/learn-html-css (za savladavanje HTML-a i CSS-a).
  10. getbootstrap.com (istražuje Bootstrap funkcije).
  11. learn.javascript.ru (učenje frontenda i Javascripta).
  12. backbonejs.org (za front-end programere).
  13. itman.in/uroki-django (za učenje Djanga).

Besplatne stranice za učenje za pomoć početnicima:

  • en.hexlet.io (8 besplatnih kurseva C i PHP, JavaScript i Bash).
  • htmlacademy.ru (18 besplatnih kurseva za slagače).
  • codecademy.com (popularni kursevi o jezicima, alatima i još mnogo toga).
  • codeschool.com (preko 60 kurseva (13 besplatnih) za HTML/CSS i JavaScript, Ruby i Python, iOS i Git, itd.).
  • checkio.org (za učenje Pythona i JavaScripta).
  • codeingame.com (učenje kroz video igrice, 23 programska jezika).
  • codecombat.com (učenje JavaScripta, Pythona, itd.). Obrazovna igra, dostupna za one koji još ne govore engleski.
  • codehunt.com (učenje kako pronaći greške u kodu).
  • codefights.com (platforma za obuku kroz turnire na kojima možete "zveckati" za intervju u pristojnoj IT kompaniji).
  • bloc.io/ruby-warrior# (učenje Rubyja i umjetnosti/inteligencije).
  • theaigames.com (razvoj vještina programiranja - uzbudljiv simulator online igre za programera).
  • codewars.com (zbirka edukativnih interaktivnih zadataka za one sa minimumom znanja).

Za samostalno učenje osnova programiranja obično je potrebno od šest mjeseci do 12 mjeseci.

Kako brzo pronaći posao programera i početi zarađivati ​​- iskusni savjeti

Naravno, bez radnog iskustva jednostavno ne možete dobiti posao u normalnoj kompaniji.

Dakle…

  1. Čitajte knjige, proučavajte web stranice i obrazujte se, ali sada počnite pisati svoje prve linije koda.
  2. Kreirajte i komplikujte sebi zadatke na osnovu materijala koji ste preradili.
  3. Potražite svoje prve projekte, makar i za "smiješne pare", zapišite ih u "životopis".
  4. Potražite posao na burzama slobodnih zanimanja na ruskom jeziku (ru) i na burzama na engleskom jeziku (upwork.com) - ima više šansi da ga dobijete.
  5. Počnite s malim projektima koje možete podnijeti.
  6. Ne propustite i opciju otvorenog koda (na takvim projektima nikad nema dovoljno ljudi).
  7. Pomoć "za prilično peni" (ili čak besplatno, za iskustvo) poznatim programerima. Neka vam daju lake zadatke.

  • Obavezno napišite: Vaše radno iskustvo, listu jezika i tehnologija koje govorite, obrazovanje i kontakte.
  • Ne trpamo čitavu listu naših kvaliteta i talenata u životopis. Čak i ako virtuoz svirate harmoniku, ne biste trebali pisati o tome u svom životopisu.
  • Dizajnirajte svoj životopis imajući na umu kreativnost, ali relevantan.
  • Nemojte popunjavati stavke poput „vaši ciljevi i ambicije“ ili „gde se vidim za 5 godina“. Dovoljno je da napišete šta ste radili ranije i šta biste želeli da radite sada.
  • Nemojte pisati o jezicima i tehnologijama koje poznajete samo po imenu. U životopisu napišite samo one u kojima plivate kao riba u vodi. Za sve ostalo postoji magična fraza – „imao sam malo iskustva“.
  • Ako ste profesionalno vešti Delphi-jem, ne zaboravite da napomenete da znate i C#, jave ili neki drugi jezik, jer nikome nije potreban “Delphi programer” (Delphi su osnove sa kojima je svaki diplomac upoznat).
  • Ne spominjite posao koji nije bio u specijalnosti. Ovo nikoga ne zanima. Takođe nikoga nije briga da li imate vozačku dozvolu ili auto. Nećeš raditi kao kurir.

Izgledi za karijeru programera i plata programera

Prosječna plata programera u većim gradovima zemlje je od 50.000 do 200.000 rubalja.

Za Rusiju u celini - od 35 hiljada do 120 000.

Profesija je uvrštena na listu najtraženijih - i najsolidnije plaćenih. Čak i skromni stručnjak može zaraditi novac za sendvič s kavijarom, a već profesionalcu definitivno neće trebati novac.

Od pripravnika do šefa IT odjela put nije tako dug, a plata na samom vrhu može doseći i do 4.000 dolara mjesečno. Pa, onda možete prijeći na vođenje velikog projekta (napomena - razvoj softvera), a ovdje plata već prelazi 5.000 dolara.

Top Related Articles