Kde začať pracovať ako programátor. Učenie sa programovania od nuly – návod pre začiatočníkov krok za krokom

Možno ste sa z nejakého dôvodu zrazu chceli stať programátorom. Dobrou správou je, že keď pochopíte systém, môžete sa naučiť, ako zvládnuť pohovory a prežiť prvých pár mesiacov v práci.

Zlou správou je, že ešte stále niet úniku z ABC programovania, a aby ste sa vo svojej novej pozícii cítili pohodlne, budete sa musieť rýchlo naučiť všetko, čo by ste už mali vedieť ako vlastnú dlaň.

Samozrejme, tento článok bude hovoriť výlučne o mojom osobná skúsenosť, čo mi umožnilo získať rozhovory aj pre špičkové spoločnosti ako Luxoft.

Ako som sa stal programátorom

Prvýkrát som sa zoznámil s počítačom vo veku 6 rokov. V 13 rokoch som už mal svoju osobnú stránku. V škole aj na univerzite som mal zlý prospech. V druhom ročníku si môj priateľ našiel prácu ako programátor Java a dôrazne mi odporučil, aby som urobil to isté. Tá myšlienka ma zaujala. Bol potrebný plán.

Prvý krok - pokračovanie

Prvým a hlavným problémom, s ktorým sa začiatočníci stretávajú, je ich životopis. Bez adekvátneho, pútavého životopisu vás nepozvú na pohovory. Ale čo tí, ktorí nemajú vôbec žiadne pracovné skúsenosti? Aby som nešiel do HR naprázdno, do životopisu sme si s kamarátom napísali celý rok skúseností s prácou na jeho projekte, na ktorom sme vraj pracovali spolu.

Platová politika

Ďalšie dôležitý bod v životopise po žiadaných technológiách a v angličtine bol požadovaný plat. Bez toho, aby sme dvakrát premýšľali, sme sa s priateľom rozhodli hrať vo veľkom a napísali sme na tú dobu prehnanú sumu tisíc dolárov, ktorá mala vyhubiť „nečestné spoločnosti“.

Hanba a hanba

Prvé rozhovory boli neúspešné. Doslova sa mi smiali. Hneď na prvom technickom pohovore, kde som dostal pár problémov na papieri, mi to hneď došlo. Niekto dokonca dal otcovské odporúčanie na knihu Thinking in Java.

Prvá práca

Nakoniec som bol pozvaný na pohovor do pobočky jednej dánskej firmy, kde som odpovedal na zásadné otázky a všetkých milo prekvapil svojou angličtinou. Prijali ma ako Junior Java vývojára s jedinou podmienkou – prvé tri mesiace budem absolvovať kurz SCJP (Sun Certified Java Programmer), ktorý by zaplnil moje medzery a urobil zo mňa pripravenejšieho špecialistu. Čo môže byť lepšie ako platená stáž bez toho, aby ste museli pracovať (prezradiť svoju neschopnosť)? V tejto spoločnosti som pracoval šesť mesiacov, aby som po niekoľkých mesiacoch mohol postúpiť do väčšej spoločnosti.

Na základe mojich trpkých, no stále neoceniteľných skúseností uvediem zoznam odporúčaní, ktoré pomôžu kolegom dobrodruhom relatívne rýchlo nájsť prácu programátora.

  1. Zhrnutie. Musí byť správne naformátovaný a napísaný výlučne v angličtine. Ak nemáte dostatok skúseností, môžete (a mali by ste) to vymyslieť, ale mali by ste sa pripraviť na zodpovednosť za každé slovo napísané vo svojom životopise. Napríklad, ak tam máte napísané JMS (Java Message Service), mali by ste si prejsť aspoň jeden tutoriál a pohrať sa s JMS, urobiť nejaké príklady, aj keď je to banálne „Ahoj, svet!“ Teraz bude pohodlnejšie predviesť sa, naozaj ste „pracovali s JMS“.
  • Naučte sa ABC programovania. Ak si stále môžete dovoliť „plávať“ na hlbokých úrovniach niektorých zložitých technológií, ako sú Struts a Spring, nesprávne odpovede na základné otázky vám nikdy nebudú odpustené. Ak vás v noci zobudím, mali by ste vedieť rozprávať o OOP, dedičnosti, zapuzdrení, polymorfizme a iných základných pojmoch a tiež vedieť všetko vysvetliť na príkladoch.
  • Prax. Programovať sa dá naučiť iba programovaním. Je to bolestivé a nepríjemné (ak nie ste programátor), ale inak to nejde. Jediný spôsob, ako sa prestať báť problémov na pohovoroch, je vyriešiť si ich doma sami.
  • Čítajte knihy a robte návody na Java iba v angličtine Absolútne všetky programátorské termíny sú ľahšie pochopiteľné v pôvodnom jazyku, teda v angličtine. Čítanie technickej literatúry o Jave v ruštine je nerešpektovaním seba samého. prečo? Pretože pochopiť niečo v zmysle „...tabuľkový modul je v mnohých ohľadoch prechodnou možnosťou, kompromisom vzhľadom na scenár transakcie a model predmetná oblasť“, musíte byť skutočne génius, ktorým pravdepodobne nebudete.
  • Naučte sa konečne angličtinu! V prvom rade sa to týka hovorenej angličtiny. Ťažko sa to ráta veľké množstvo inteligentných programátorov, ktorých, pokiaľ si pamätám, odmietli z jediného dôvodu – neuspokojivá úroveň hovorovej angličtiny. Nie, ak sa, samozrejme, chystáte pracovať ako programátor niekde v domácej firme, tak vaša jazyková úroveň nebude hrať dôležitú rolu. Ale ak sa chcete zamestnať v medzinárodnej spoločnosti, potom vám sám Boh prikázal naučiť sa jazyk. Vaša úroveň angličtiny sa premietne do stoviek dolárov navyše vo zvýšení platu.
  • Poznať trh. Poobzerajte sa po voľných pozíciách, prečítajte si požiadavky, spýtajte sa kamarátov programátorov, koľko zarábajú. Využívajte služby, ktoré vám umožnia získať ucelenejší obraz o trhu IT. Boli by ste prekvapení, aký veľký je počet talentovaných programátorov, ktorí zarábajú o polovicu menej, ako by mohli, jednoducho kvôli svojej lenivosti a neochote držať nos pred vetrom.
  • Vyjednávať. Na handrkovaní o plat nie je nič zlé. Váš argument v spore môže byť buď dobrá angličtina, alebo ponuka práce v inej spoločnosti. Posledný argument funguje obzvlášť dobre: ​​„Áno, ale Luxoft mi ponúka o 300 dolárov viac, prečo by som mal súhlasiť s vašimi podmienkami? Možno by sme našli kompromis?" Svojho času sa mi niekoľkokrát podarilo vyjednať ďalších sto dolárov k platu a po roku mi týchto sto dolárov z ničoho nič prinieslo ďalších 1 800 dolárov. Musíte pochopiť, že aj pre malé zahraničné IT spoločnosti je sto dolárov navyše ako kvapka vo vedre.
  • Nájdite si mentora. Je dobré, ak máte skúsenejšieho priateľa, ktorý vie poradiť a odpovedať aj na tie najhlúpejšie otázky. Vďaka jeho skúsenostiam a morálnej podpore budete v programovaní napredovať rýchlejšie ako sami. Ak nemáte mentora, je dobré absolvovať niekoľko kurzov programovania, ktoré nielenže poskytnú ucelenejší obraz o tom, čo programátor robí, ale tiež vám umožnia stretnúť sa so skúsenejšími ľuďmi. Ktovie, možno sa jeden z nich bude chcieť stať vaším mentorom.
  • Začnite svoj projekt. Aj keď je to príklad najhorších praktík kódovania a nikdy to nedokončíte, aspoň budete mať čo robiť, vďaka čomu budete chcieť porozumieť programovaniu a naučiť sa nové technológie. Okrem toho budete mať dodatočnú tému na intímne rozhovory počas rozhovorov.
  • Hľadajte si prácu v lete. Po prvé, keď sú všetci na dovolenke, je pravdepodobnejšie, že spoločnosti budú mať nedostatok zamestnancov a je pravdepodobnejšie, že ich pozvú na pohovor. Po druhé, keďže sú na dovolenke aj vaši konkurenti-uchádzači, vaša šanca, že si vás personalista opäť všimne, sa zvyšuje.
  • Nikdy sa nevzdávaj. Aj keď máte pocit, že sa vám na pohovore nedarí, je dôležité vydržať a neustále sa snažiť problém vyriešiť, bez ohľadu na to, aký ťažký sa môže zdať. Ktovie, možno práve v tejto chvíli ste skúšaní z pracovitosti vo svojej práci!
  • Vyhnite sa úlohám na počítači. Neexistuje spôsob, ako prehliadnuť neprofesionála rýchlejšie, ako ho okamžite vrhnúť do programátorského tepla. Vašou úlohou je pokúsiť sa preložiť všetky konverzácie do vysoký stupeň, kde sa diskutuje o všeobecných prístupoch a konceptoch, ale nie o konkrétnej implementácii pri riešení konkrétneho problému. Ak dostanete papier a pero a požiadate o zapísanie riešenia, požiadajte o možnosť nakresliť ho schematicky. Odchodom od syntaxe konkrétneho jazyka sa teda nielen ušetríte od niektorých nepríjemných chýb, ale tiež ukážete, že ste schopní myslieť abstraktne bez toho, aby ste zachádzali do toľkých detailov.
  • Buďte prvý, kto prehovorí. Vyhnite sa situáciám, keď je vo vzduchu pauza, počas ktorej sa môže v mysli anketára vynárať ďalšia zákerná otázka. Hneď ako sa vyskytne nejaký problém, začnite rozprávať niečo, čo dobre poznáte. Pokúste sa vnútiť anketárovi svoju hru.
  • Skúste povedať pravdu. Ak ste nikdy nepísali PL/SQL procedúry, potom je lepšie to povedať priamo. Môže to byť pre vás nevýhoda, ale ušetríte si zísť z vlastnej cesty odpoveďou na otázku, ktorej nič nerozumiete. Skúsený anketár vycíti vaše vedomostné medzery na míle ďaleko.
  • Pozor na malé firmy. Malé spoločnosti majú tendenciu mať malé tímy. Čím menej ľudí v tíme, tým rýchlejšie na vás prídu. Vaším cieľom je veľká a nemotorná korporácia, kde si môžete kúpiť nejaký čas.
  • Dodržujte dress code. Ak sa na pohovore na pozíciu programátora dostavíte v šikovnom obleku, vzbudí to väčšie podozrenie, ako keby ste sa ukázali v šortkách alebo ošúchanom svetri. Tiež by bolo dobré nasadiť si okuliare so slovami: "Som taký knihomoľ."
  • Samozrejme, niekto znalý by mohol poukázať na to, že vyššie uvedený recept je skôr spôsob, ako sa stať kodérom ako programátorom, a niekde by mal pravdu. Ide však o to, že nikdy nenájdete voľné miesto s názvom „Hľadá sa zlý kóder“. Každý potrebuje programátorov. Najradšej senior. Tí, ktorí majú viac ako päťročné skúsenosti s prácou na firemných projektoch a ktorí rovnako plynule ovládajú viacero programovacích jazykov, zároveň dokonale rozumejú DBMS, vedia písať bash skripty, uložené procedúry, ovládajú Linux, TCP/IP , majú vodcovské kvality a odolnosť voči stresu, komunikačné zručnosti a množstvo ďalších zručností, „bez ktorých to nejde“.

    Takí ľudia existujú, sám som ich videl. Je ich ale príliš málo na to, aby plne pokryli potreby večne hladného trhu IT špecialistov. A to znamená, že vždy máte šancu, taký dobrodruh ste.

Neštudoval som za programátora, hoci som sa ním vždy chcel stať. Najprv som vo všeobecnosti vstúpil do špecializácie súvisiacej s počítačovým hardvérom, ale ukázalo sa, že to nie je veľmi zaujímavé, a tak som prešiel na optoelektroniku.

Štúdia sa týkala spracovania obrazu: toto vôbec nie je programovanie, ale stále bližšie k tomu, čo som chcel. Toto je špecializácia súvisiaca s počítačom.

Vždy som mal na pamäti, že budem pracovať ako programátor. To sa nakoniec aj stalo.

Našiel som pracovný inzerát v

Aktívne som si začal hľadať prácu Java programátora v piatom ročníku, no najprv som sa rozhodol pre stáž v nejakej firme. Videl som inzerát na stáž na verejnej stránke MAI na VK. Aby som bol úprimný, toto bolo prvýkrát, čo som počul o Jet Infosystems. Na internete som si našiel informácie o firme, všetko sa mi zdalo zaujímavé a nechal som na ich stránke požiadavku.

Ako sa ukázalo, záujemcov bolo veľa — sto a pol záujemcov. Ich výber trval pomerne dlho. Najprv sme boli pozvaní na valné zhromaždenie, potom sme absolvovali teoretickú skúšku a splnili niekoľko praktických úloh.

Potom, pre tých, ktorí to urobili úspešne, bol dohodnutý ďalší rozhovor. Až potom sme sa všetci dostali do tréningovej skupiny a potom som dostal pozvanie pracovať ako Java developer. Ale to je, ako sa hovorí, úplne iný príbeh, a to vám nechcem povedať.

Prečítal som len jednu knihu o programovaní

Dá sa povedať, že som samouk.

Som si istý, že programovanie je oblasť, ktorej porozumiete aj sami bez dlhých teoretických prednášok na univerzite.

Predtým, ako som sa začal vážne učiť programovať v Jave, som čítal iba jednu knihu o programovaní. Bol to kurz „C++ za 21 dní“.

Nebudem hovoriť, že sa mi to nepáčilo alebo že sa mi všetko zdalo príliš komplikované a zbytočné, ale stále som sa usadil na Jave. Mimochodom, teraz v práci musím programovať nielen v Jave, ale aj v „pluse“, takže nie sú zbytočné znalosti.

Prečo som si vybral Javu?

  • Java je podľa mňa snáď jediný programovací jazyk, ktorý od začiatku naučenia až po získanie finálneho produktu nezaberie veľa času. Možno som typ človeka, ktorý chce rýchlo „cítiť“ výsledok. Čistá teória ma veľmi neláka.
  • Mal som pred sebou konkrétny cieľ. Pochopil som, že bude pre mňa mimoriadne ťažké získať prácu programátora, na budúcom pohovore budem musieť ukázať aspoň niečo a povedať: „Nemám žiadne pracovné skúsenosti, diplom nie je presne to, čo potrebujem, ale Mám toto - pozri." Ale našťastie som sa zamestnal cez stáž.
  • Teraz existuje veľké množstvo rôznych sprievodcov pre vývoj aplikácií pre OS. Takže tu pre mňa všetko doslova zodpovedalo: bolo dostatok materiálov na školenie a bola tu možnosť pomerne rýchlo dosiahnuť ľahko hmatateľný výsledok.

Stručne povedané, po krátkom kurze C++ som sa chopil nejakého Java tutoriálu pre začiatočníkov. Nepamätám si, ako sa to volalo, pamätám si len, že som to prestal čítať skôr, ako som sa dostal do stredu. Chcel som sa čo najrýchlejšie dostať preč.

Potom som videl veľa návodov pre začiatočníkov a s istotou môžem povedať: nie je medzi nimi žiadny zásadný rozdiel. Sú približne rovnaké. Ak chcete niečo nájsť, stačí do dopytu napísať „book for java starter“ a môžete ísť.

V tomto telegramovom kanáli som našiel veľa odpovedí na svoje otázky.

Na internete je málo zdrojov programovania v ruskom jazyku. Zmier sa s tým

Áno a ešte jedna dôležitá vec. Musíte sa vyrovnať so skutočnosťou, že v ruskojazyčnom segmente siete existuje pomerne málo kníh a zdrojov o programovaní v porovnaní s počtom zdrojov v anglickom jazyku.

Samozrejme, v programovaní bez znalosti angličtiny na dobrej úrovni to jednoducho nejde. Takže pre tých, ktorí sú oboznámení s angličtinou na úrovni Google Translator, môžem poradiť len jednu vec: najprv sa zdokonalte v angličtine. Všetko ostatné príde neskôr.

Samozrejme, nie všetko je také smutné: v ruštine sú „nástroje pre vývojárov Google“. Ale v každom prípade tu nie je potrebné začať.

Viem, že existujú rôzne online kurzy programovania – platené aj bezplatné – ale ukázalo sa, že sa bez nich zaobídem. Čo opäť hovorí v prospech môjho pôvodného argumentu, že programovanie sa dá naučiť aj bez cudzej pomoci.

Kde som začal "zlyhávať"

Keď som trochu pochopil Java pre Android, začal som postupne s typickými príkladmi aplikácií – od jednoduchých po zložitejšie. V tom čase som už vedel, akú aplikáciu chcem nakoniec vytvoriť.

Pomohol mi kamarát, ktorý navrhol napísať vzdelávaciu aplikáciu pre školákov. Dlho som premýšľal a živil túto myšlienku. Prezrel som si zoznam existujúcich a uistil som sa, že podobných aplikácií je málo, potom som ich začal vyvíjať.

Asi najťažšie pre mňa bolo nájsť dobrá téma pre celý projekt. Neviem, či je to nevýhoda alebo nie, ale ja som stavaný tak, že ak je téma dobrá, ak sa mi páči myšlienka a som z nej nadšený, nemám problémy s motiváciou. . Neexistujú žiadne problémy s motiváciou - neexistujú žiadne neprekonateľné ťažkosti.

Aké zdroje môžu pomôcť začiatočníkovi?

  • stackoverflow.com.

Tam s pravdepodobnosťou až 90% môžete získať komplexnú odpoveď na otázku, s ktorou sa pri vývoji stretávate.

  • Úložisko so zdrojmi Github.com.

Naozaj mi pomohol poučiť sa z príkladov iných ľudí.

  • YouTube

Existuje veľa screencastov, ktoré vám veľmi rýchlo umožnia pochopiť konkrétnu technológiu.

Prvú aplikáciu som vyvinul za mesiac

Stručne povedané, žiadosť som urobil doslova za mesiac. Najužitočnejšími zdrojmi vedomostí boli Developer.android.com a rovnaký Stackoverflow.com. Najzaujímavejšie je, že rutinný proces nahrávania aplikácie do Google Play trvalo celé dva mesiace. Aj keď možno všetko trvalo tak dlho, pretože po vývoji moja vášeň trochu ochladla. O niečo neskôr som po prečítaní knihy Beginning Java EE 7 vyvinul webovú verziu aplikácie.

Nerád by som svoj príbeh ukončil nejakou banálnou frázou o tom, že „všetko je v našich rukách“ a „stačí chcieť“. Samozrejme, nie všetci, a chápem, že som stále dostal prácu programátora vďaka šťastiu: čo by sa stalo, keby som nenarazil na tento príspevok na VK?

Navyše nechcem nijako znižovať dôležitosť vysokoškolského vzdelania a povedať: „Prečo je to všetko potrebné? Pozri, všetko dopadlo presne tak." Potrebovať. Univerzita vám skutočne veľa dáva a čo je možno najdôležitejšie, vštepuje vám návyk učiť sa.

A predsa: môžete sa naučiť programovať sami. Teraz to už viem naisto.

Tento článok nie je návodom na kódovanie. A nie príspevok o tom, „ktorý programovací jazyk si vybrať“. Ak chcete pochopiť, aký máte záujem o učenie sa o svete kódu, potom je dôležitejšia otázka: čo je programovanie? Ako vyzerá programovanie zvnútra? Sú ja a programovanie kompatibilné?

Princíp „logiky, nie matematiky“

Jednou z najväčších mylných predstáv nových programátorov je, že programovanie je plné matematiky. Ak si myslíte, že programovanie vás prinúti zapamätať si školské vedomosti z trigonometrie, algebry a pod., tak sa mýlite. Tento druh matematiky je v programovaní zriedkavý.

Zo skúseností medzi „čisto matematické“ veci patrí napríklad poradie operácií vo výraze a súradnicový systém. Nič príliš zložité. Naopak, je tu veľa logiky. Potreba myslieť dopredu, pochopiť, v akom poradí robiť veci a ako kontrolovať tento tok, preniká do každého aspektu programovania. Ak máte zmysel pre logiku, bude pre vás ľahké začať zvládať programovacie úlohy.

Princíp „chytania padajúcej hviezdy“

Na programovanie sa dá pozerať ako na spustenie mnohých „procesov“ – ako keby ste nútili počítač „robiť prácu za vás“ – a tieto procesy riadili. Pri programovaní proces často vytvára výsledok. Výsledkom môže byť súbor, ale môže to byť aj niečo jednoduchšie, napríklad reťazec alebo číslo.

Problémom práce s procesmi je, že ak s ich výsledkami nič neurobíte, jednoducho sa rozplynú. Literárne povedané, „odídu do zabudnutia“, nikdy nie sú znovu vytvorené, veľmi podobné hviezdam, ktoré sa na oblohe lesknú a miznú. Inými slovami, musíte ich „chytiť“.

Ak niečo vytvoríte pomocou procesu, musíte to chytiť, inak to stratíte. Tu prichádzajú do hry premenné – ako spôsob „zachytenia“ výsledkov procesu. Tento princíp výrazne pomáha pochopiť, čo je programovanie v počiatočných fázach učenia. A ak to zachytíte skoro, zistíte, že je to veľmi užitočné.

Princíp „slovníka“.

V programovaní je veľa „typov“. Predstavte si typy ako stavebné kamene programovacieho jazyka. Jedným typom je reťazec alebo súbor znakov v úvodzovkách. "Jablko" aj "pomaranč" sú struny. Môžu sa napríklad kombinovať a urobiť „jablkovo-pomarančové“. Čísla sú iného typu. Čísla je možné sčítať, odčítať, násobiť (okrem iných operácií). Potom existujú „polia“ - súbor objektov v určitom poradí. ["First", "goes", "before", "second"] je napríklad pole s prvým prvkom "First" a posledným prvkom "second".

Ale možno jedným z najvýkonnejších typov je hash alebo pár kľúč-hodnota. Hash má veľa mien. V Ruby je to "hash". V JavaScripte sa nazýva "objekt". Možno mu Python dal lepší názov: „slovník“. Ak sa trochu zamyslíte, slovník je súbor kľúčov (slov) označujúcich ich význam.

Ale prečo na tom záleží? Ukazuje sa, že takáto štruktúra je často potrebná na ukladanie údajov. Informácie o osobe môžete zbaliť napríklad takto:

("first_name" => "Jonathan", "last_name" => "Richards", "národnosť" => "Britská" )

Existujú kľúče „first_name“ (krstné meno), „last_name“ (priezvisko) atď. Sú to ako vlastnosti alebo atribúty osoby. Môžete tiež pridať „hair_colour“ (farba vlasov), „age“ (vek) alebo „gender“ (pohlavie). A každý z týchto kľúčov má svoj význam. Významná časť programovania zahŕňa definovanie formátov dátových štruktúr. A páry kľúč-hodnota sa stávajú najcennejšími zbraňami vo vašom arzenáli, takže je užitočné čo najskôr pochopiť, ako fungujú.

Princíp matriošky

Programovanie je plné objektov, ktoré sú vo vnútri objektov vo vnútri iných objektov. Pri programovaní sa často pristihnete, že sa pokúšate štruktúrovať dáta a často tieto štruktúry v sebe obsahujú iné štruktúry.

Pridajme vlastnosť „súrodenci“ k predchádzajúcemu príkladu:

("first_name" => "Jonathan", "priezvisko" => "Richards", "národnosť" => "Britovia", "súrodenci" => ( "bratia" => , "sestry" => ["Fiona", "Mary"]))

Tento princíp uvidíte počas celého programovania. V HTML obsahujú niektoré prvky ďalšie prvky:

Publikácie na danú tému