Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Recenzije
  • Koje znanje je potrebno programeru. Što bi svaki programer trebao znati

Koje znanje je potrebno programeru. Što bi svaki programer trebao znati

10. ožujka 2016. u 09:56

Što programer mora znati da bi dobio posao u financijama?

  • ITI Capital Blog,
  • Izrada web stranica

U našem blogu na Habréu pišemo puno o tehnologijama koje se koriste u području financija. Burze danas koriste najnapredniji softver i hardver - kako za izgradnju same trgovačke infrastrukture tako i za kreiranje sustava za online trgovanje.

Danas su ovdje traženi matematičari, fizičari i programeri. Ljudi koji su sposobni kreirati algoritme trgovanja i na temelju njih napraviti visokokvalitetan softver. Mnogi programeri, pak, željeli bi se okušati u financijskoj industriji - ona može ponuditi atraktivnu kombinaciju zanimljivih zadataka i visokih plaća.

Danas ćemo govoriti o tome koje vještine trebate imati da biste dobili posao u HFT tvrtki, investicijskoj banci, hedge fondu ili brokerskoj tvrtki. Prilikom pripreme teme korišteni su materijali sa stranica i quantstart.com.

Jezici

C je već dugi niz godina jedan od najpopularnijih programskih jezika u financijama. Morate ga poznavati ne samo da biste podržali naslijeđeni kod, već i da biste organizirali rad s API-jima u sustavima elektroničkog trgovanja i razmjenjivali podatke s pružateljima usluga.

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

Kao rezultat toga, C++ programeri su vrlo traženi u tvrtkama financijskog sektora, uključujući i same burze. I takva će se situacija nastaviti još dugi niz godina - netko treba održavati postojeću infrastrukturu.

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

C ++ i čisti C vrlo su prikladni za ove zadatke. Također se događa da se brzi roboti stvaraju gotovo u asembleru - ovdje je vrijedno spomenuti mehanizme za izravno čitanje i pisanje 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 s 5-7 godina iskustva u C++-u može zaraditi 500-700 funti dnevno u Londonu. Stručnjaci za C++ također su vrlo traženi u ruskim tvrtkama. Osim toga, ove programere često privlače profesionalni trgovci koji mogu kreirati uspješnu strategiju trgovanja, ali trebaju pomoć nekoga tko bi je mogao programirati.

C# i Javu također već neko vrijeme koriste razne financijske institucije. Uglavnom, velike banke za njihovu trgovačku infrastrukturu. Ovi jezici se koriste za stvaranje front-end sučelja i obradu podataka.

Na ruskom financijskom tržištu visoko su cijenjeni stručnjaci koji poznaju C ++ i C # - na našem blogu smo prethodno rekli da je zahvaljujući tim alatima uspio pronaći posao u financijskim tvrtkama, a zatim je počeo stvarati vlastite sustave trgovanja . Evo što je junak materijala savjetovao da studira za programere koji bi u budućnosti željeli dobiti posao u području financija:

Za one koji započinju svoj put u trgovanju ili su na neki način zainteresirani za ovo područje, savjetovao bih da skrenete pažnju na platforme i jezike visoke razine kao što su .NET i Java. Potonji je vrlo popularan na zapadnim burzama, za sada imamo manje, ali postoje dobri izgledi za šire širenje ovog jezika. To znači da će Java programeri biti traženi u financijskim tvrtkama, fondovima i brokerima. Ipak, .NET je prilično zatvorena platforma, koja također ima niz ograničenja. Nije dobro prikladan za trgovanje s malim kašnjenjem i HFT.

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


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

Kvantni trgovci i programeri financijskih aplikacija često kodiraju svoje prototipove u skriptnim jezicima. Te prototipove zatim programeri koji su specijalizirani za to opisuju na bržim jezicima poput C++.

Sustavi klijent-poslužitelj

Sustavi trgovanja su, po definiciji, distribuirani. Gotovo sve tvrtke, od malih tvrtki do velikih investicijskih banaka, grade svoje sustave koristeći TCP i UDP protokole - ponekad je u trgovanju brzina važnija od jamčenja dostave podataka.

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

Osim toga, za programere financijskog softvera, plus je poznavanje protokola prijenosa podataka koji se koriste u ovom području, kao što su,.

potoci

Stvaranje klijent-poslužitelj sustava i višenitnog programiranja u financijskom sektoru idu ruku pod ruku. Sve to podrazumijeva, na primjer, pisanje standardnog TCP poslužitelja, poslužitelja za balansiranje opterećenja, poslužitelja visokih performansi - programer koji želi kreirati softver u financijskoj tvrtki trebao bi to moći. Također je dobro razumjeti pthreads(), fork(), mutexes klase i ideju semafora općenito. U slučaju Jave, također morate razumjeti metode sinkronizacije koje postoje za ovaj jezik.

Baza podataka

Financijski sustavi temelje se na bazama podataka, pa je programerima potrebno duboko poznavanje SQL-a. Poznavanje jednostavnih operatora odabira neće biti dovoljno - često ćete se tijekom rada morati petljati oko kreiranja procedura pohrane, rada s indeksima itd. Osim toga, morate razumjeti razliku između zaključavanja na razini tablice, na razini stranice i na razini retka.

UNIX
Sustavi za trgovanje obično koriste UNIX platformu (često Solaris i Linux). Za Windows se u pravilu izrađuju terminali za trgovanje s grafičkim sučeljima, dok se UNIX koristi za razvoj “motora” softvera za trgovanje.

To znači da programeri jednostavno trebaju razumjeti što su naredbe tail, sed, grep, awk, tr i top. Još bolje, ako stručnjak zna raditi s vi, vim ili emacs i ne boji se problema uzrokovanih pogrešnom konfiguracijom $LD_LIBRARY_PATH.

Vještine otklanjanja pogrešaka

U karijeri programera u financijskim institucijama, korisna je sposobnost analize osnovnih datoteka pomoću dbx-a ili gdb-a. Takva se potreba javlja rijetko, ali ako se dogodi, bolje je moći sve sami.

Zaključak

Burza je izrazito visokotehnološka industrija koja se aktivno razvija, što rad u ovom području čini vrlo atraktivnim za IT stručnjake koji žele razvijati svoje vještine. Istodobno, da bi sudjelovao u zanimljivim projektima, inženjer uopće ne mora ići u inozemstvo - nove tehnologije aktivno se uvode na rusko tržište dionica. U jednom od naših prethodnih materijala govorili smo o stvaranju SmartX terminala i Matrix brokerskog trgovačkog sustava, u čijem razvoju možete sudjelovati.

Zaključno, još jedan savjet: nemojte se previše brinuti o poznavanju interne "kuhinje" procesa trgovanja i koncepata iz područja financija. Naravno, to može biti dodatna prednost, ali nedostatak ekonomije i znanja vjerojatno neće spriječiti dobrog programera da pronađe posao u financijskoj tvrtki.

P. S. Razvojnom timu ITinvesta za rad na projektu

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

  • Što je programiranje?
  • Je li teško postati dobar programer?
  • Što početnik treba znati?
  • Gdje biste trebali početi studirati?

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

Programiranje(s engleskog. programiranje) je proces stvaranja računalnih programa.

Da biste mogli komunicirati s računalom i stvarati programe, morate znati jedan ili više programskih jezika. Zahvaljujući programskim jezicima, čovjek dobiva mogućnost pisanja programa i postavljanja specifičnih zadataka za računalo koje naknadno rješava u skladu sa zadanim uvjetima.

Trenutno je broj programskih jezika odavno premašio sto! Međutim, to se ne treba bojati, 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 moderni programski jezik, moći ćete bez problema svladati bilo koji drugi jezik koji vam je potreban u budućnosti.

Istodobno, 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 bit će puno lakše ljudima povezanim s matematikom, jer je u programiranju vrlo važno znati dobro razmišljati i logično razmišljati. Osim toga, dobrodošli su poznavanje engleskog jezika, opća sposobnost ispravnog pisanja, kao i strpljenje i ustrajnost.

Jasno je da svi ljudi imaju te kvalitete i sposobnosti razvijene na različite načine. Stoga je prilično teško jednoznačno odgovoriti na pitanje je li teško postati dobar programer. Netko će moći samostalno svladati programiranje bez odlaska od kuće, a netko bez vanjske pomoći uopće neće moći pokrenuti 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. Istodobno, ne morate misliti da postati najbolji programer znači diplomirati s počastima na odgovarajućem sveučilištu. Ima dosta primjera gdje svrhovito samouki ljudi u mnogočemu nadmašuju maturante. To je zbog činjenice da samouki učenici s velikom željom proučavaju područje interesa i u slučaju poteškoća ne trče do svojih učitelja ili učitelja, već pokušavaju sami prevladati problem, tvrdoglavo razmatrajući razne mogućnosti i rješenja, listanje stranica udžbenika ili surfanje internetom u potrazi za odgovorima na specijaliziranim stranicama i forumima. Inače, prema istraživanju osiguravajuće kuće GoCompare, gotovo četvrtina najbogatijih ljudi na planetu, prema časopisu Forbes, tijekom proteklih 20 godina ili uopće nije studirala na sveučilištu, ili ga je napustila prije nego što su diploma. Štoviše, većina njih su samo predstavnici IT područja! 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 vodiča.

Međutim, samo čitanje nije dovoljno za učenje programskog jezika. Najviše vremena treba posvetiti tipkanju 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 području programiranja u kojem su stručnjaci. Stoga su u stalnoj potrazi za nečim novim ne samo u svom području, već iu srodnim područjima, čime se kontinuirano usavršavaju i proširuju svoje vidike. Zato budite strpljivi, pokušajte, napravite korak unatrag, ali ne odustajte i napravite dva koraka naprijed i tada ćete sigurno uspjeti!

Brzi skok na druge stranice

  • Što bi programer početnik trebao znati?

Moj popis uključuje sljedeće jezike:

  1. C++. Mnoge od sljedećih platformi (JVM, CLR, Node i druge) napisane su 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 takvog 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 tog vremena do danas. Mi, odnosno programeri koji ga koriste, smo ti koji smo se stvarno promijenili.
  6. SQL. Potreban za rad s relacijskim bazama podataka.
  7. Lisp. Da Lisp. Ili, točnije, "jedna od inkarnacija ovog jezika". Clojure, Lisp, Scheme, Nu ili nešto slično će poslužiti. Morate znati što je homoikonički jezik i razumjeti kako linije između koda i podataka nestaju kada se koriste pravi alati.
  8. čavrljanje. Da. Svaki GUI okvir izgrađen na izvornom hardveru (Windows, macOS, OS/2, X/Windows, Android, iOS, itd.) koristi iste osnovne principe koji su formulirani i utjelovljeni u Smalltalku još 60-ih godina.
  9. Ruby ili Python. Morate znati barem jedan dinamički programski jezik. Javascript je također prikladan ovdje, ali samo ako prvo naučite sam jezik, bez ikakvih DOM modela koji mogu značajno iskriviti 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 puno lakše razumjeti JavaScript.
  10. AspektJ. Upoznavanje s aspektno orijentiranim programiranjem u potpunosti će 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. Budući da ne treba svaki problem ili zadatak u programiranju riješiti pomoću punopravne aplikacije.
  13. F#, Scala, Clojure ili bilo koji drugi objekt/funkcija hibridni programski jezik. Jer nakon što shvatite osnove i savladate temeljni skup prvih 11 programskih jezika na ovom popisu, bit ć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 funkcije. Nakon što ih proučite, bit ćete spremni za rad na mobilnim aplikacijama.
  15. x86 ili ARM asembler. Mogućnost čitanja asemblerskog jezika omogućit će vam ispravljanje pogrešaka 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 poznavati 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 sustav upravljanja relacijskim bazama podataka (RDBMS). Ovo će biti dovoljno.

Međutim, učenje svih ostalih jezika je upravo ono što će vam omogućiti da prijeđete od "običnog" do "vodećeg" programera, a zatim dosegnete maksimalnu razinu znanja i vještina.


Nishan Panta, računalni inženjer, jezični programerPiton

Ja sam takozvani jezični agnostik, pa ako me netko pod strahom od smrti natjera da napravim takav popis, to bi izgledalo ovako:

1. Python. Zato što je iznimno zgodan i jednostavan za prototip, a također 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. Izvrstan za lagane zadatke.

3. C++. Također 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 svladate, uz njegovu pomoć ćete provoditi sve procese automatizacije.

5 . Scala. Koristi se kao hibrid funkcionalnog i imperativnog programskog jezika. S njim možete učiniti nevjerojatne stvari.

6. javascript. Najmoćniji jezik za web razvoj. Osobno 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 frameworka.

8 . Haskell. Svaki programer bi trebao poznavati paradigme funkcionalnog programiranja.

9 . PHP. Ako trebate raditi nešto vezano uz web razvoj. Po mom mišljenju, ovaj jezik definitivno nije simbol praktičnosti i jednostavnosti.

10. R. Za statističku analizu. Osobno nisam ni pokušao raditi s njim, budući da 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 što je napravljeno u backendu. U ovom slučaju poznavanje HTML-a je neophodno.

12 . Smanjenje. Jedan od najčešće korištenih jezika za označavanje. U pravilu ga koristim za neke bilješke, pisanje README datoteke i još mnogo toga.

13. VimL / vimscript. Pisao sam skripte koristeći VimL za stvaranje 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/ Oktava. S njim sam radila složene izračune. Međutim, sada sve to radim u Pythonu zahvaljujući NumPyju.

Esteban Fargas, razvijam aplikacije i sudjelujem na natjecanjima u programiranju

  1. Java: Oracle je sigurno platio vaše sveučilište dovoljno dobro da vas nauči ovom jeziku kao uvodu u objektno orijentirano programiranje. Također će biti korisno ako se želite prijaviti na natjecanja u programiranju.
  2. C/ C++: U principu, vrlo sličan gore navedenoj Javi. Inače, ova dva jezika još uvijek 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ćuje vam da izgledate lijepo za razne stvari na internetu. Također daleko od idealnog.
  6. JavaScript: Omogućuje vam izradu logičkih shema za Internet.
  7. Piton: Također je lijepo imati drugačiji programski jezik i skup paradigmi za pisanje pozadine za aplikaciju. Osim toga, trenutno je zajednički jezik za tehnologije strojnog učenja.
  8. rubin: Još jedan sjajan jezik za stvaranje pozadine. Proučavanje neće dugo trajati.
  9. golang: Skupio je sve lijepe značajke koje su u raznim jezicima ​​grupe C. Lijepo je. S njegovim kombiniranim modelom mogu se izvesti veliki projekti.
  10. Scala: Također vam omogućuje stvaranje stvarno izvrsnog profesionalnog softvera. Upoznavanje s funkcionalnom paradigmom može biti iznimno zanimljivo i izdašno s uzbudljivim zadacima.
  11. Haskell: Proučavanje funkcionalne paradigme na maksimalnoj razini.
  12. Lisp: Isti kao i gornji Haskell, samo u još neobičnijoj verziji koja se temelji na nezamislivo bizarnoj sintaksi.
  13. bash: Je li to uopće jezik ili nije? Na ovaj ili onaj način, bilo bi lijepo svladati ga kao jedan od prikladnih alata programera.
  14. SQL: Koristi se za rad s bazama podataka.
  15. PHP: Jezik korišten u prošlom stoljeću za stvaranje pozadine.

Programer se bavi pisanjem programa za razne vrste računala. Ovo uvelike kreativno zanimanje zahtijeva mnogo vještina, znanja i iskustva. Ali prva stvar koju programer treba znati je koje osobne kvalitete imaju predstavnici ovog okruženja. Područje informacijske tehnologije ne miruje i brzo se razvija. Pravi stručnjak uvijek treba biti svjestan svih promjena, što znači da mu je potrebno veliko zanimanje i sklonost samoobrazovanju.

Sljedeće što trebate znati je engleski. Svaki programer ga poznaje barem na tehničkoj razini, jer će uz njegovu pomoć biti lakše razumjeti naredbe većine programskih jezika. Strane zemlje se najbrže razvijaju u području razvoja softvera. Stoga je engleski koristan za upoznavanje s najnovijim vijestima iz ovog područja.

Danas mnogi fakulteti visokih učilišta ne samo da detaljno objašnjavaju što je potrebno da se postane programer, već i odmah pripremaju stručnjake s potrebnim osnovnim vještinama iz područja matematike i fizike. Međutim, mnogi programeri tvrde da visoko obrazovanje u ovom području 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. Primjerice, za programera web stranica vrlo je važno i s grafičkim uređivačima, kao i poznavanje modernih jezika za izradu web stranica. Jedan od njih je PHP.

Ljudi koji o tome razmišljaju trebali bi shvatiti da samo osnovno poznavanje jezika neće biti sasvim dovoljno. Da biste dobili dobar posao i pristojnu plaću, morate razumjeti OOP, koji se koristi u pisanju popularnih okvira i CMS-a. Rad s njim je sljedeći korak u onome što PHP programer treba znati.

Za sada će biti dovoljno upoznati se s radom najčešće baze podataka - MySQL. Pravi stručnjak također vjerojatno neće moći bez HTML i CSS jezika izgleda. Unatoč činjenici da je PHP jezik poslužitelja, povezan je 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 te moderne alate uz pomoć brojnih blogova i online tečajeva.

Poznavajući što je potrebno za programiranje, kao i posjedovanjem toga, možete birati različita područja djelovanja - pisanje programa za automatizaciju poslovanja tvrtki, razvoj i nadogradnju web stranica i aplikacija. Pritom uopće nije potrebno raditi na stalnom mjestu u bilo kojoj tvrtki. Moguće je samostalno pronaći interesne narudžbe bez napuštanja kuće ili organizirati vlastiti posao, što može biti pravi izvor uspjeha. Međutim, za takav će pothvat biti potrebna dodatna znanja iz područja ekonomije, upravljanja projektima i jurisprudencije.

Svatko bira zanimanje "programer" iz svog specifičnog razloga. Jedan je odlučio jednostavno promijeniti svoju specijalnost, drugi je prisiljen učiti drugo zanimanje, treći se ne razumije bez šifri, a netko ide u struku samo iz znatiželje.

Na ovaj ili onaj način, svatko počinje od nule. I prije nego što krenete od ove nule, zapitajte se treba li vam ovo zanimanje doista?

Bit rada programera - glavne specijalizacije, prednosti i nedostaci rada

Bit rada programera ovisi o specijalizaciji i tvrtki.

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

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

  • Primijenjeni specijalisti. Zadaci: razvoj softvera za igre, editore, računovodstvo/programe, instant messengere, itd.; razvoj softvera za audio/video nadzorne sustave, alarmne sustave itd.; prilagodba programa za nečije specifične potrebe.
  • Stručnjaci za sustav. Zadaci: razvoj operativnih sustava, izrada sučelja prema bazama podataka, upravljanje računalnim sustavom, rad s mrežama, praćenje rada stvorenih sustava itd. Ovi stručnjaci zarađuju više od svih u svom području, zbog rijetkosti i specifičnosti profesije.
  • Web stručnjaci. Zadaci: rad s internetom, izrada web stranica i web stranica, izrada web sučelja.

Prednosti profesije uključuju sljedeće prednosti:

  1. Vrlo pristojna plaća.
  2. Velika potražnja za dobrim stručnjacima.
  3. Mogućnost dobivanja 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 tvrtke.
  6. Kreativna profesija (iako često kreativnost ovisi o željama kupca).
  7. Udobni uvjeti koje velike tvrtke pružaju svojim stručnjacima (besplatna pića / lepinje, posebna mjesta za rekreaciju i sport, itd.).
  8. Mogućnost dobivanja "opcije". Odnosno, paket dionica društva. Istina, tek nakon odrađenog određenog razdoblja u tvrtki.
  9. Širenje horizonata. Kako se razvijate u struci, morate se upoznati s raznim područjima života i udubljivati ​​se u razne sustave – od uredskog rada i računovodstva pa nadalje.

minusi:

  • Raditi “dan i noć” uobičajena je stvar za ovu profesiju.
  • Ovaj će posao za mnoge ljude biti dosadan i monoton.
  • Interesi stručnjaka i kupca ne poklapaju se uvijek, a ono što je programeru očito u pravilu se uopće ne može objasniti klijentu. 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. U samo nekoliko godina programi postaju zastarjeli, a moraju se pisati novi.

Video: Kako postati programer?

Potrebne osobne i poslovne kvalitete, profesionalne vještine i sposobnosti za rad kao programer – što trebate znati i moći?

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 vrlo vrijedni, marljivi i strpljivi.
  4. Budite spremni na stalni rutinski rad.
  5. Biti sposoban raditi u timu.

Koja su znanja potrebna budućem programeru?

Počnite proučavanjem...

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

Programski jezik - odakle početi?

Također ćete morati proučiti…

  • 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#. Vrlo složeni jezici, možete ih ostaviti za kasnije.
  • rubin. Dobra opcija za drugi jezik.
  • Django. On će vas naučiti kako pravilno programirati. Po složenosti sličan Pythonu.

Mnogo ovisi o odabranom smjeru.

Na primjer…

  1. Web programer će imati koristi od znanja HTML-a, CSS-a i JavaScripta.
  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, tečajevi, učenje na daljinu, online učenje?

Ako nemate prijatelje koji bi vas mogli naučiti profesiji programera od nule, onda imate nekoliko mogućnosti obuke:

  • Samoobrazovanje. Najteži put do programiranja, koji leži kroz proučavanje web stranica, aplikacija, knjiga i tako dalje.
  • Sveučilište. Ako ste upravo završili srednju školu i sanjate o prestižnoj profesiji programera, upišite odgovarajući fakultet. I dalje ćete kroz samoobrazovanje dobivati ​​osnovna znanja, ali “kora” će vam pomoći da se brže približite svom cijenjenom cilju. Odaberite tehnička sveučilišta unaprijed proučavajući programe obuke.
  • Osobni učitelj . Ako među programerima možete pronaći mentora, samoučenje će biti brže i učinkovitije. Potražite mentore na online forumima, informatičkim zabavama, tematskim konferencijama i tako dalje.
  • Tečajevi. Moći će vas naučiti jednom ili drugom programskom jeziku na jednostavnim tečajevima koji se mogu naći čak i u malim gradovima. Na primjer, " Obrazovni IT portal GeekBrains, « Specijalist" na MSTU Bauman, « STEP Computer Academy», MASPK.

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

  1. MEPhI.
  2. Rusko ekonomsko sveučilište Plekhanov.
  3. Moskovsko državno građevinsko sveučilište.
  4. MSTU Bauman.
  5. Državno sveučilište za menadžment.

Video: 7 pogrešaka programera početnika

Korisni online resursi i knjige za učenje programiranja

  • habrahabr.ru (članci o IT temama, informacije o raznim temama). Ovaj resurs je poznat svakom programeru.
  • rsdn.org (knjige, aktualna pitanja, koristan forum, popunjavanje praznina u znanju, materijali na ruskom).
  • sql.ru (izvrstan prikladan 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 vozača). Korisna stranica za početnike.

Resursi za učenje:

  1. ocw.mit.edu/courses (preko 2000 tečajeva različitih tema).
  2. coursera.org (više od 200 tečajeva, 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 tečajevi).
  8. teamtreehouse.com (preko 600 lekcija).
  9. webref.ru/layout/learn-html-css (za svladavanje HTML-a i CSS-a).
  10. getbootstrap.com (istražuje značajke Bootstrapa).
  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 tečajeva C i PHP, JavaScript i Bash).
  • htmlacademy.ru (18 besplatnih tečajeva za slagače).
  • codecademy.com (popularni tečajevi o jezicima, alatima i još mnogo toga).
  • codeschool.com (preko 60 tečajeva (13 besplatnih) o HTML/CSS i JavaScriptu, Ruby i Python, iOS i Git, itd.).
  • checkio.org (za učenje Pythona i JavaScripta).
  • codeingame.com (učenje kroz video igre, 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 tvrtki).
  • 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 obrazovnih interaktivnih zadataka za one s minimalnim znanjem).

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 tvrtki.

Zato…

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

  • Obavezno napišite: svoje radno iskustvo, popis jezika i tehnologija koje govorite, obrazovanje i kontakte.
  • Ne trpamo cijeli popis 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 "gdje se vidim za 5 godina". Dovoljno je napisati što ste radili prije i što biste htjeli raditi sada.
  • Ne pišite o jezicima i tehnologijama koje poznajete samo po imenu. U životopis napišite samo one u kojima plivate kao riba u vodi. Za sve ostalo postoji čarobna fraza – „imao sam malo iskustva“.
  • Ako ste profesionalno vješti u Delphiju, ne zaboravite napomenuti da znate i C#, jave ili neki drugi jezik, jer "Delphi programer" zapravo nikome ne treba (Delphi je osnova s ​​kojom je poznat svaki diplomac).
  • Ne spominjite posao koji nije bio u specijalnosti. Ovo nikoga ne zanima. Također nikoga nije briga imate li vozačku dozvolu ili auto. Nećeš raditi kao kurir.

Izgledi za karijeru programera i plaća programera

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

Za Rusiju u cjelini - od 35 tisuća do 120 000.

Profesija je uvrštena na popis 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 voditelja IT odjela put nije tako dug, a plaća na samom vrhu može doseći i do 4000 dolara mjesečno. Pa, onda možete prijeći na vodstvo velikog projekta (napomena - razvoj softvera), a ovdje plaća već prelazi 5000 dolara.

Vrhunski povezani članci