Kde začít pracovat jako programátor. Učit se programování od nuly – průvodce krok za krokem pro začátečníky

Možná jste se z nějakého důvodu najednou chtěli stát programátorem. Dobrou zprávou je, že jakmile pochopíte systém, můžete se naučit, jak zvládat pohovory a přežít prvních pár měsíců v práci.

Špatnou zprávou je, že stále není úniku z ABC programování, a abyste se ve své nové pozici cítili dobře, budete se muset urychleně doučit vše, co byste už měli znát jako své boty.

Tento článek bude samozřejmě mluvit výhradně o mém osobní zkušenost, což mi umožnilo získat rozhovory i pro špičkové společnosti jako je Luxoft.

Jak jsem se stal programátorem

S počítačem jsem se poprvé seznámil v 6 letech. Už ve 13 letech jsem měl svůj osobní web. Ve škole i na univerzitě jsem si vedl špatně. Ve druhém ročníku si můj přítel našel práci jako Java programátor a důrazně mi doporučil, abych udělal totéž. Ta myšlenka mě zaujala. Byl potřeba plán.

První krok – pokračování

Prvním a hlavním problémem, se kterým se začátečníci potýkají, je jejich životopis. Bez adekvátního, poutavého životopisu nebudete zváni na pohovory. Ale co ti, kteří nemají vůbec žádné pracovní zkušenosti? Abychom nešli do HR s prázdnou, napsali jsme si s přítelem do životopisu celý rok zkušeností s prací na jeho projektu, na kterém jsme prý pracovali společně.

Platová politika

další důležitý bod v životopise po poptávaných technologiích a v angličtině byl požadovaný plat. Bez přemýšlení jsme se s přítelem rozhodli hrát ve velkém a napsali jsme tehdy přemrštěnou částku tisíc dolarů, která měla vymýtit „darebácké společnosti“.

Hanba a hanba

První rozhovory byly neúspěšné. Doslova se mi smáli. Hned na prvním technickém pohovoru, kde jsem dostal pár problémů na papíře, jsem byl během chvilky vyřešen. Někdo dal dokonce otcovské doporučení na knihu Thinking in Java.

První práce

Nakonec jsem byl pozván na pohovor do pobočky jedné dánské firmy, kde jsem odpověděl na zásadní otázky a všechny mile překvapil svou angličtinou. Byl jsem přijat jako Junior Java developer s jedinou podmínkou – první tři měsíce bych absolvoval kurz SCJP (Sun Certified Java Programmer), který by zaplnil mé mezery a udělal ze mě připravenějšího specialistu. Co může být lepšího než placená stáž bez nutnosti pracovat (prozradit svou neschopnost)? V této společnosti jsem pracoval šest měsíců, abych po pár měsících mohl povýšit do větší společnosti.

Na základě své trpké, ale přesto neocenitelné zkušenosti uvedu seznam doporučení, která pomohou kolegům dobrodruhům poměrně rychle najít práci programátora.

  1. Souhrn. Musí být správně naformátován a napsán výhradně v angličtině. Pokud nemáte dostatek zkušeností, můžete (a měli byste) to vymyslet, ale měli byste se připravit na to, že budete zodpovědní za každé slovo napsané ve vašem životopise. Pokud tam máte například napsáno JMS (Java Message Service), měli byste si projít alespoň jeden tutoriál a pohrát si s JMS, udělat nějaké příklady, i když je to banální „Ahoj, světe!“ Nyní bude pohodlnější se předvést, opravdu jste „pracovali s JMS“.
  • Naučte se ABC programování. Pokud si stále můžete dovolit „plavat“ v hlubokých úrovních některých složitých technologií, jako jsou Struts a Spring, pak vám nebudou nikdy odpuštěny nesprávné odpovědi na základní otázky. Pokud vás v noci vzbudím, měli byste být schopni mluvit o OOP, dědičnosti, zapouzdření, polymorfismu a dalších základních pojmech a také umět vše vysvětlit na příkladech.
  • Praxe. Programovat se můžete naučit pouze programováním. To je bolestivé a nepříjemné (pokud nejste programátor), ale není jiné cesty. Jediný způsob, jak se přestat bát problémů s pohovory, je vyřešit je doma sami.
  • Čtěte knihy a provádějte výukové programy v Javě pouze v angličtině Naprosto všechny programátorské termíny jsou snáze srozumitelné v původním jazyce, tedy v angličtině. Číst technickou literaturu o Javě v ruštině je neúcta k sobě samému. Proč? Protože pochopit něco ve smyslu „...modul tabulky je v mnoha ohledech přechodnou možností, kompromisem s ohledem na scénář transakce a model předmětová oblast“, musíte být skutečně génius, což pravděpodobně nebudete.
  • Naučte se konečně anglicky! V první řadě se to týká mluvené angličtiny. Těžko se to počítá velké množství inteligentní programátoři, kteří, pokud si pamatuji, byli odmítnuti z jediného důvodu – nevyhovující úroveň mluvené angličtiny. Ne, pokud se samozřejmě chystáte pracovat jako programátor někde v tuzemské firmě, tak vaše jazyková úroveň nebude hrát důležitou roli. Ale pokud chcete získat práci v mezinárodní společnosti, pak vám sám Bůh nařídil, abyste se naučili jazyk. Vaše úroveň angličtiny se promítne do stovek dolarů navíc ve zvýšení platu.
  • Poznejte trh. Hledejte volná místa, přečtěte si požadavky, zeptejte se svých kamarádů programátorů, kolik vydělávají. Využijte služby, které vám umožní získat ucelenější obrázek o trhu IT. Divili byste se, jak velký je počet talentovaných programátorů, kteří vydělávají o polovinu méně, než by mohli, a to jednoduše kvůli své lenosti a neochotě držet nos před větrem.
  • Smlouvat. Smlouvání o platu není nic špatného. Vaším argumentem ve sporu může být buď dobrá angličtina, nebo nabídka práce v jiné společnosti. Zvláště dobře funguje poslední argument: „Ano, ale Luxoft mi nabízí o 300 dolarů více, proč bych měl souhlasit s vašimi podmínkami? Možná bychom našli kompromis?" Najednou se mi párkrát podařilo vyjednat sto dolarů navíc k platu a po roce mi těchto sto dolarů z ničeho nic dalo dalších 1800 dolarů v příjmu. Musíte pochopit, že i pro malé zahraniční IT společnosti je sto babek navíc jako kapka v kýblu.
  • Najděte si mentora. Je dobré, když máte zkušenějšího přítele, který dokáže poradit a odpovědět i na ty nejhloupější otázky. Díky jeho zkušenostem a morální podpoře budete v programování postupovat rychleji než sami. Pokud nemáte mentora, pak je dobré absolvovat nějaké kurzy programování, které nejenže poskytnou ucelenější obrázek o tom, co programátor dělá, ale také vám umožní setkat se se zkušenějšími lidmi. Kdo ví, možná se jeden z nich bude chtít stát vaším mentorem.
  • Spusťte svůj projekt. I když je to příklad těch nejhorších kódovacích praktik a nikdy to nedokončíte, alespoň budete mít co dělat, díky čemuž budete chtít porozumět programování a naučit se nové technologie. Navíc budete mít další téma pro intimní rozhovory během rozhovorů.
  • Hledejte práci v létě. Zaprvé, když jsou všichni na dovolené, je pravděpodobnější, že společnosti budou mít nedostatek zaměstnanců a je pravděpodobnější, že budou pozvány na pohovor. Zadruhé, protože vaši konkurenti-uchazeči jsou také na dovolené, vaše šance, že si vás personalisté opět všimnou, se zvýší.
  • Nikdy se nevzdávej. I když máte pocit, že se vám na pohovoru nedaří, je důležité vytrvat a neustále se snažit problém vyřešit, bez ohledu na to, jak složitý se může zdát. Kdo ví, možná jste právě v tuto chvíli zkoušeni z pečlivosti ve své práci!
  • Vyhněte se úkolům na počítači. Neexistuje způsob, jak prokouknout neprofesionála rychleji, než ho okamžitě vrhnout do programátorského žáru. Vaším úkolem je pokusit se přeložit všechny konverzace do vysoká úroveň, kde jsou diskutovány obecné přístupy a koncepty, nikoli však konkrétní implementace při řešení konkrétního problému. Pokud dostanete papír a pero a požádáte o zapsání řešení, požádejte o možnost nakreslit jej schematicky. Odklonem od syntaxe konkrétního jazyka se tedy nejen ušetříte některých nepříjemných chyb, ale také ukážete, že jste schopni myslet abstraktně, aniž byste zacházeli do tolika detailů.
  • Buďte první, kdo promluví. Vyhněte se situacím, kdy je ve vzduchu pauza, během níž se tazateli může v hlavě rodit další zákeřná otázka. Jakmile se objeví nějaký zádrhel, začněte vyprávět něco, co dobře znáte. Pokuste se vnutit tazateli svou hru.
  • Zkuste říct pravdu. Pokud jste nikdy nepsali PL/SQL procedury, pak je lepší to říci přímo. Může to být pro vás nevýhoda, ale ušetříte si nutnost sejít si z vlastní cesty tím, že odpovíte na otázku, které nic nerozumíte. Zkušený tazatel vycítí mezery ve vašich znalostech na míle daleko.
  • Pozor na malé firmy. Malé společnosti mívají malé týmy. Čím méně lidí v týmu, tím rychleji na vás přijdou. Vaším cílem je velká a nemotorná korporace, kde si můžete koupit nějaký čas.
  • Dodržujte dress code. Pokud se dostavíte na pohovor na pozici programátora v chytrém obleku, vzbudí to větší podezření, než když se objevíte v šortkách nebo obnošeném svetru. Bylo by také dobré si nasadit brýle se slovy: "Jsem takový knihomol."
  • Samozřejmě, někdo znalý by mohl podotknout, že výše uvedený recept je spíše způsob, jak se stát kodérem než programátorem, a někde by měl pravdu. Jde však o to, že nikdy nenajdete volné místo s názvem „Hledá se špatný kodér“. Každý potřebuje programátory. Nejlépe senior. Ti, kteří mají více než pět let zkušeností s prací na firemních projektech a kteří stejně plynule ovládají několik programovacích jazyků, zároveň dokonale rozumí DBMS, umí psát bash skripty, uložené procedury, ovládají Linux, TCP/IP , mají vůdčí schopnosti a odolnost vůči stresu, komunikační dovednosti a řadu dalších dovedností, „bez kterých to nejde“.

    Takoví lidé existují, sám jsem je viděl. Je jich ale příliš málo na to, aby plně pokryly potřeby neustále hladového trhu IT specialistů. A to znamená, že vždy máte šanci, takový dobrodruh jste.

Nestudoval jsem proto, abych se stal programátorem, i když jsem se jím vždycky chtěl stát. Nejprve jsem obecně vstoupil do specializace související s počítačovým hardwarem, ale ukázalo se, že to není příliš zajímavé, a tak jsem přešel na optoelektroniku.

Studie se týkala zpracování obrazu: toto není vůbec programování, ale stále se blíží tomu, co jsem chtěl. Jedná se o specializaci související s počítačem.

Vždy jsem měl na paměti, že budu pracovat jako programátor. To se nakonec stalo.

Našel jsem pracovní inzerát v

Práci Java programátora jsem začal aktivně hledat v pátém ročníku, ale nejprve jsem se rozhodl pro stáž v nějaké firmě. Na veřejné stránce MAI na VK jsem viděl inzerát na stáž. Abych byl upřímný, bylo to poprvé, co jsem slyšel o Jet Infosystems. Na internetu jsem našel informace o firmě, vše se mi zdálo zajímavé a nechal jsem na jejich stránkách poptávku.

Jak se ukázalo, uchazečů bylo mnoho – sto a půl uchazečů. Jejich výběr trval poměrně dlouho. Nejprve jsme byli pozváni na valnou hromadu, poté jsme složili teoretický test a splnili několik praktických úkolů.

Poté, pro ty, kteří to zvládli úspěšně, byl domluven další rozhovor. Teprve poté jsme se všichni dostali do tréninkové skupiny a poté jsem dostal pozvání pracovat jako Java developer. Ale to je, jak se říká, úplně jiný příběh, a to vám nechci říct.

Přečetl jsem jen jednu knihu o programování

Dá se říct, že jsem samouk.

Jsem si jistý, že programování je oblast, které porozumíte sami bez dlouhých teoretických přednášek na univerzitě.

Než jsem se začal vážně učit programovat v Javě, přečetl jsem pouze jednu knihu o programování. Byl to kurz „C++ za 21 dní“.

Nebudu říkat, že se mi to nelíbilo nebo že se mi všechno zdálo příliš složité a zbytečné, ale přesto jsem se usadil na Javě. Mimochodem, teď v práci musím programovat nejen v Javě, ale také v „plus“, takže nejsou zbytečné znalosti.

Proč jsem si vybral Javu?

  • Java je podle mě snad jediný programovací jazyk, který od začátku naučení až po získání finálního produktu nezabere moc času. Možná jsem ten typ člověka, který chce rychle „ohmatat“ výsledek. Čistá teorie mě moc neláká.
  • Měl jsem před sebou konkrétní cíl. Pochopil jsem, že pro mě bude nesmírně těžké získat práci programátora, na budoucím pohovoru budu muset alespoň něco ukázat a říct: „Nemám žádné pracovní zkušenosti, diplom není přesně to, co potřebuji, ale Mám tohle - podívej." Ale naštěstí jsem se dostal k práci přes stáž.
  • Nyní existuje obrovské množství různých příruček pro vývoj aplikací pro OS. Takže zde pro mě vše doslova odpovídalo: bylo dostatek materiálů pro školení a byla zde možnost poměrně rychle získat snadno hmatatelný výsledek.

Stručně řečeno, po krátkém kurzu C++ jsem se chopil nějakého Java tutoriálu pro začátečníky. Nepamatuji si, jak se to jmenovalo, pamatuji si jen, že jsem to přestal číst, než jsem se dostal doprostřed. Chtěl jsem "utéct" co nejrychleji.

Pak jsem viděl spoustu návodů pro začátečníky a s jistotou můžu říct: není mezi nimi žádný zásadní rozdíl. Jsou přibližně stejné. Chcete-li něco najít, stačí do dotazu napsat „book for java starter“ a můžete vyrazit.

V tomto telegramovém kanálu jsem našel mnoho odpovědí na své otázky.

Na internetu je málo zdrojů programování v ruském jazyce. Smiř se s tím

Ano a ještě jedna důležitá věc. Musíte se smířit se skutečností, že v ruskojazyčném segmentu sítě existuje poměrně málo knih a zdrojů o programování ve srovnání s počtem zdrojů v angličtině.

Samozřejmě v programování bez znalosti angličtiny na dobré úrovni prostě není cesta. Takže pro ty, kteří jsou obeznámeni s angličtinou na úrovni Google Translator, mohu poradit pouze jednu věc: nejprve se zdokonalte v angličtině. Všechno ostatní přijde později.

Samozřejmě, ne všechno je tak smutné: v ruštině existují „nástroje pro vývojáře Google“. Ale v žádném případě zde není třeba začínat.

Vím, že existují různé online kurzy programování – placené i bezplatné – ale ukázalo se, že se bez nich obejdu. Což opět mluví ve prospěch mého původního argumentu, že programování se dá naučit i bez cizí pomoci.

Kde jsem začal "selhávat"

Když jsem trochu porozuměl Javě pro Android, začal jsem postupně s typickými příklady aplikací – od jednoduchých po složitější. V té době už jsem věděl, jakou aplikaci chci nakonec vytvořit.

Pomohl mi kamarád, který navrhl napsat vzdělávací aplikaci pro školáky. Dlouho jsem tu myšlenku přemýšlel a živil. Prohlédl jsem si seznam existujících a ujistil se, že podobných aplikací je málo, načež jsem je začal vyvíjet.

Asi nejtěžší pro mě bylo najít dobré téma pro celý projekt. Nevím, jestli je to nevýhoda nebo ne, ale jsem postavená tak, že když je téma dobré, když se mi nápad líbí a jsem z něj nadšený, nemám problémy s motivací . Neexistují žádné problémy s motivací – neexistují vůbec žádné nepřekonatelné obtíže.

Jaké zdroje mohou pomoci začátečníkovi?

  • stackoverflow.com.

Tam s pravděpodobností až 90% můžete získat vyčerpávající odpověď na otázku, se kterou se ve vývoji setkáte.

  • Úložiště se zdroji Github.com.

Opravdu mi pomohl učit se z příkladů jiných lidí.

  • Youtube

Existuje mnoho screencastů, které vám velmi rychle umožní pochopit konkrétní technologii.

Svou první aplikaci jsem vyvinul za měsíc

Stručně řečeno, aplikaci jsem udělal doslova za měsíc. Nejužitečnějšími zdroji znalostí byly Developer.android.com a stejný Stackoverflow.com. Nejzajímavější je, že rutinní proces nahrávání aplikace do Google Play trvalo celé dva měsíce. I když možná všechno trvalo tak dlouho, protože po vývoji moje vášeň trochu ochladla. O něco později jsem po přečtení knihy Beginning Java EE 7 vyvinul webovou verzi aplikace.

Nerad bych svůj příběh zakončil nějakou banální frází o tom, že „všechno je v našich rukou“ a „stačí chtít“. Samozřejmě, že ne všichni a chápu, že jsem díky štěstí stále získal práci programátora: co by se stalo, kdybych na tento příspěvek nenarazil na VK?

Navíc tím nechci nijak snižovat význam vysokoškolského vzdělání a říkat: „Proč je to všechno nutné? Podívejte, všechno dopadlo přesně tak." Potřebovat. Univerzita vám toho dá opravdu hodně, a co je možná nejdůležitější, vštípí vám návyk učit se.

A přesto: můžete se naučit programovat sami. Teď to vím jistě.

Tento článek není výukovým programem pro kódování. A ne příspěvek o tom, „který programovací jazyk si vybrat“. Pokud chcete pochopit, jak moc vás zajímá poznávání světa kódu, pak je důležitější otázka: co je programování? Jak vypadá programování zevnitř? Jsou já a programování kompatibilní?

Princip „logiky, ne matematiky“

Jednou z největších mylných představ nových programátorů je, že programování je plné matematiky. Pokud si myslíte, že díky programování si vzpomenete na školní znalosti z trigonometrie, algebry atd., tak se mýlíte. Tento druh matematiky je v programování vzácný.

Ze zkušenosti mezi „čistě matematické“ věci patří například pořadí operací ve výrazu a souřadnicový systém. Nic moc složitého. Naopak je v tom spousta logiky. Potřeba myslet dopředu, rozumět tomu, v jakém pořadí dělat věci a jak tento tok řídit, prostupuje každý aspekt programování. Pokud máte smysl pro logiku, pak pro vás bude snadné začít zvládat programovací úlohy.

Princip „chycení padající hvězdy“

Na programování lze pohlížet jako na spouštění mnoha „procesů“ – jako byste nutili počítač „dělat práci za vás“ – a tyto procesy řídit. V programování proces často produkuje výsledek. Výsledkem může být soubor, ale může to být i něco jednoduššího, například řetězec nebo číslo.

Problém práce s procesy je ten, že pokud s jejich výsledky nic neuděláte, jednoduše se rozpustí. Literárně řečeno, „odcházejí do zapomnění“, nejsou nikdy znovu vytvořeny, velmi podobné hvězdám, které se třpytí na obloze a mizí. Jinými slovy, musíte je „chytit“.

Pokud něco vytvoříte pomocí procesu, musíte to uchopit, jinak o to přijdete. Zde vstupují do hry proměnné – jako způsob, jak „zachytit“ výsledky procesu. Tento princip velmi pomáhá pochopit, co je programování v raných fázích učení. A pokud to chytíte brzy, zjistíte, že je to velmi užitečné.

Princip "slovníku".

V programování je mnoho "typů". Přemýšlejte o typech jako o stavebních kamenech programovacího jazyka. Jedním typem je řetězec nebo sbírka znaků uvnitř uvozovek. "Jablko" i "pomeranč" jsou řetězce. Mohou být například kombinovány a vyrobeny „jablečně-oranžové“. Čísla jsou jiného typu. Čísla lze sčítat, odečítat, násobit (mimo jiné operace). Pak existují „pole“ - sada objektů v určitém pořadí. Například ["First", "goes", "before", "second"] je pole s prvním prvkem "First" a posledním prvkem "second".

Ale možná jedním z nejvýkonnějších typů je hash neboli pár klíč-hodnota. Hash má mnoho jmen. V Ruby je to "hash". V JavaScriptu se nazývá "objekt". Možná tomu Python dal lepší název: „slovník“. Pokud trochu přemýšlíte, slovník je sada klíčů (slov) označujících jejich význam.

Ale proč na tom záleží? Ukazuje se, že taková struktura je často potřebná pro ukládání dat. Informace o osobě můžete zabalit například takto:

("first_name" => "Jonathan", "last_name" => "Richards", "národnost" => "British" )

Existují klíče „first_name“ (křestní jméno), „last_name“ (příjmení) atd. Jsou to jako vlastnosti nebo atributy osoby. Můžete také přidat „hair_colour“ (barva vlasů), „age“ (věk) nebo „gender“ (gender). A každý z těchto klíčů má svůj význam. Významnou součástí programování je definování formátů datových struktur. A páry klíč-hodnota se stávají nejcennějšími zbraněmi ve vašem arzenálu, takže je užitečné co nejdříve pochopit, jak fungují.

Princip "matrjošky".

Programování je plné objektů, které jsou uvnitř objektů uvnitř jiných objektů. Při programování se často přistihnete, že se snažíte strukturovat data a často tyto struktury v sobě obsahují další struktury.

K předchozímu příkladu přidáme vlastnost „sourozenci“:

("first_name" => "Jonathan", "last_name" => "Richards", "národnost" => "Britové", "sourozenci" => ( "bratři" => , "sestry" => ["Fiona", "Mary"]))

Tento princip uvidíte v průběhu vašeho programování. V HTML obsahují některé prvky další prvky:

Ve výpočetní technice jsou objekty především programy nebo soubory. Toto je velmi užitečný princip. V programování často uslyšíte termíny „in“ a „out“ – vstup a výstup. Důvodem je, že úkolem je často přijímat vstup (vstup), zpracovávat jej (proces) a provádět změny (výstup). Zpracování je prováděno procesy (aktivními bity), které jsou řízeny vaším kódem. Pasivní bity jsou data, na kterých procesy fungují. Je to všechno jako udělat z mletého masa klobásu.

Princip „pes, kočka a ryba“.

(nebo princip příčiny a následku)

Představte si, že máte pokoj. V této místnosti je kočka a ryba v misce. Ryba se chová jako obvykle. V určitém okamžiku se stanou 2 věci: pes vstoupí do místnosti a kočka opustí místnost. Zároveň ryba začíná zpívat. Otázka: Co přimělo ryby zpívat?

Existuje mnoho možností, které je třeba zvážit. Můžeme předpokládat, že se to stalo, protože vstoupil pes. A můžeme předpokládat, že důvodem je to, že kočka vyšla ven. Nebo možná důvodem je kombinace obou událostí. Snad s tím obě události nemají nic společného. Faktem ale je, že 18:17 je čas, kdy se ryba mění v čarodějnici. Snad všechny ryby zpívají. Některé z těchto možností mohou být pravdivé.

Pro programátora je skutečně důležité umět izolovat příčiny změn. S podobnými situacemi se budete setkávat, dokud budete kódovat. V takových situacích bychom se mohli chtít zeptat sami sebe: můžeme simulovat příchod psa, aniž by vyšla kočka (to by mohlo mnohé objasnit); můžeme simulovat kočku odcházející bez vstupu psa; můžeme zcela replikovat prostředí (např. čas 18:17), abychom zjistili, zda ovlivňuje zpěv ryb, nezávisle na psech a kočkách? A tak dále. Je důležité použít metodologii k určení důvodů změny. Tato schopnost vám bude pomáhat znovu a znovu, pokud budete kódovat.

Abstrakce neboli princip „pizzy“.

Toto je jeden z nejzáludnějších principů. Představte si pizzerii. Každý den šéfkuchař připravuje pizzu s různými polevami. Každá pizza se připravuje v určitém pořadí: nejprve připravíte těsto, pak ho necháte, pak ho vložíte do pánve, přidáte rajčatovou omáčku, polevy, sýr a nakonec pečete.

Šéfkuchař ale přirozeně nepřipravuje každou pizzu od začátku ve zde popsaném pořadí. Trvalo by to roky. Místo toho si vše připraví předem, a když jde o neapolštinu, stačí vzít základ (který je již vytvořený), přidat rajčatovou omáčku, ančovičky a sýr a pak zapéct v troubě.

Zde je důležité pochopit, že kuchař potřebuje znát pouze ingredience pro každou konkrétní pizzu, ale jinak jsou si všechny pizzy podobné. Programování vypadá velmi podobně, k ukládání obecnějších dat (jako je kůrka pizzy) používáte „abstrakce“, zatímco je oddělujete od specifičtějších dat (polevy).

Přeměňme výrobu pizzy na kód. Nejprve to začněme dělat špatně. Udělejme metodu make_a_napoletana_pizza (udělejme neapolskou pizzu):

Make_a_napoletana_pizza

Bude to mít 5 kroků (udělat základ, přidat rajčatovou omáčku, přidat ančovičky, přidat sýr, zapéct):

Make_the_base add_the_tomato_sauce add_anchovy add_cheese bake

Skvělý. Ale co když chceme udělat salámovou pizzu? Budeme nuceni napsat zcela novou metodu make_a_salami_pizza (udělat salámovou pizzu), která bude mít se současnou metodou mnoho společného, ​​až na to, že místo ančovičky přidá salám. To je poněkud drahé. Programátorův přístup spočívá v „abstrakce“ běžných částí technik výroby pizzy a zohlednění různých, specifických přísad. Můžeme to udělat pomocí "argumentu", který je "předán" metodě.

To je to, co to znamená. Představme si, že naše metoda make_a_pizza je volána s argumentem „toppings“. Metoda bude vypadat nějak takto:

Make_a_pizza (polevy)

A bude to fungovat takto:

Make_the_base add_the_tomato_sauce add_toppings(toppings) add_cheese bake

V řádku 3 odebereme polevy definované dříve a přidáme je na pizzu.

Nyní, když jsme definovali obecnou metodu výroby pizzy, můžeme ji jednoduše zavolat a specifikovat požadované ingredience. Vše se děje automaticky. Jinými slovy, zavoláme make_pizza(salám), a když metoda běží, salám se stane polevou a bude přidán do pizzy, když metoda dosáhne 3. řádku. Pouhou výměnou polevy můžete vytvořit 2 různé pizzy pomocí jedné metody. Je to stejně ekonomické, jako když číšnice na objednávkový formulář jednoduše napíše "1 x salám, 1 x vegetarián" a kuchař ví vše, co potřebuje. V programování se tomu říká "abstrakce".

Takže tady to máte: sedm principů, které se obvykle naučíte během prvních 3 let programování a které významně přispívají k pochopení umění kódování. Pokud začínáte svou cestu, tyto zásady mohou pomoci i vám.

Irina Davydová


Doba čtení: 13 minut

A A

Povolání „programátora“ si každý volí ze svého specifického důvodu. Jeden se rozhodl jednoduše změnit svou specializaci, druhý je nucen se naučit jinou profesi, třetí sám sobě nerozumí bez kódů a někdo jde do profese jednoduše ze zvědavosti.

Tak či onak, každý začíná od nuly. A než začnete od nuly, zeptejte se sami sebe, zda tuto profesi opravdu potřebujete?

Podstata práce programátora – hlavní specializace, klady a zápory práce

Podstata práce programátora závisí na specializaci a společnosti.

Někdy je však programátor zároveň „Švéd, sekačka a trumpetista“. To se však zpravidla vyskytuje v malých společnostech, jejichž šéfové šetří na specialistech.

Hlavní kategorie, do kterých lze všechny programátory zhruba rozdělit podle jejich činností:

  • Aplikační specialisté. Náplň práce: vývoj softwaru pro hry, editory, účetnictví/programy, instant messengery atd.; vývoj softwaru pro audio/video sledovací systémy, poplašné systémy atd.; přizpůsobování programů tak, aby vyhovovaly něčím specifickým potřebám.
  • Systémoví specialisté. Náplň práce: vývoj operačních systémů, tvorba rozhraní k databázím, správa počítačového systému, práce se sítěmi, sledování provozu vytvořených systémů atd. Tito specialisté vydělávají více než kdokoli jiný ve svém oboru, vzhledem k vzácnosti a specifičnosti povolání.
  • Weboví specialisté. Náplň práce: práce s internetem, tvorba webových stránek a webových stránek, vývoj webových rozhraní.

Mezi výhody profese patří následující výhody:

  1. Velmi slušný plat.
  2. Vysoká poptávka po dobrých specialistech.
  3. Možnost získat prestižní práci bez vzdělání.
  4. Možnost vydělávat peníze na dálku sedět doma na gauči.
  5. Možnost pracovat na dálku pro zahraniční společnosti.
  6. Kreativní profese (kreativa však často závisí na přání zákazníka).
  7. Komfortní podmínky, které velké společnosti poskytují svým specialistům (nápoje/housky zdarma, speciální místa pro rekreaci a sport atd.).
  8. Možnost získání „opce“. Tedy balík akcií společnosti. Pravda, až po odsloužení určité doby ve firmě.
  9. Rozšíření obzorů. Jak se ve své profesi vyvíjíte, musíte se seznamovat s různými oblastmi života a pronikat do nejrůznějších systémů – od kancelářské práce a účetnictví atd.

mínusy:

  • Práce „celý den“ je v této profesi běžná.
  • Tato práce bude pro mnoho lidí nudná a monotónní.
  • Ne vždy se zájmy specialisty a zákazníka shodují a to, co je programátorovi zřejmé, nelze klientovi zpravidla vůbec vysvětlit. To vede ke konfliktům a stresu.
  • Nouzové provozní režimy nejsou neobvyklé.
  • Potřeba neustále se rozvíjet, učit se nové věci a mít čas se vyvíjet s IT sférou. Během několika let se programy stanou zastaralými a je třeba psát nové.

Video: Jak se stát programátorem?

Nezbytné osobní a obchodní vlastnosti, odborné dovednosti a schopnosti pro práci programátora - co musíte umět a umět?

Hlavní vlastnosti dobrého programátora

Dobrý programátor by měl...

  1. Miluj svou práci. A nejen milovat – být z toho nemocný.
  2. Láska učit se a učit od nuly.
  3. Buďte velmi pracovití, pilní a trpěliví.
  4. Buďte připraveni na neustálou rutinní práci.
  5. Umět pracovat v týmu.

Jaké znalosti potřebuje budoucí programátor?

Měl bys začít studiem...

  • V angličtině.
  • Počítačová zařízení a fyzika všech procesů.
  • Programovací jazyky.
  • Metodika vývoje softwaru.
  • Metodika testování softwaru.
  • Systémy kontroly verzí.

Programovací jazyk – kterým začít?

Budete také muset studovat...

  • Jáva. Více populární než Python a dobrá volba pro začátečníky. Ale složitější než Python.
  • PHP. Navrženo pro web, ale bude užitečné pro každého začátečníka.
  • C a C#. Velmi složité jazyky, můžete je nechat na později.
  • Rubín. Dobrá volba pro druhý jazyk.
  • Django. Naučí vás, jak správně programovat. Složitostí je podobný Pythonu.

Hodně záleží na zvoleném směru.

Například…

  1. Webový programátor bude těžit ze znalosti HTML, CSS a JavaScriptu.
  2. Pro desktopové programátory - API a frameworky.
  3. Pro vývojáře mobilních aplikací - Android, iOS nebo Windows Phone.

Kde studovat, abyste se stali programátorem od nuly - vzdělávací instituce v Rusku, kurzy, dálkové studium, online vzdělávání?

Pokud nemáte přátele, kteří by vás mohli naučit profesi programátora od nuly, máte několik možností školení:

  • Sebevzdělávání. Nejtěžší cesta k programování, která spočívá ve studiu stránek, aplikací, knih atd.
  • Univerzita. Pokud jste právě dokončili školu a sníte o prestižní profesi programátora, zapište se na příslušnou fakultu. Základní znalosti stále získáte sebevzděláváním, ale „kůra“ vám pomůže rychleji se přiblížit k vašemu vytouženému cíli. Vyberte si technické univerzity s prostudováním vzdělávacích programů předem.
  • Osobní učitel . Pokud mezi programátory najdete mentora, samoučení bude rychlejší a efektivnější. Hledejte mentory na online fórech, na IT večírcích, tematických konferencích atd.
  • Kurzy. Mohou vás naučit ten či onen programovací jazyk v jednoduchých kurzech, které najdete i v malých městech. Například, " Vzdělávací IT portál GeekBrains", « Specialist“ ve společnosti MSTU Bauman, « Počítačová akademie STEP", MASPC.

Můžete získat vysokoškolské vzdělání jako programátor v…

  1. MEPhI.
  2. Ruská ekonomická univerzita Plechanov.
  3. Moskevská státní univerzita stavebního inženýrství.
  4. MSTU Bauman.
  5. Státní vysoká škola managementu.

Video: 7 chyb začínajících programátorů

Užitečné online zdroje a knihy pro výuku programátorů

  • habrahabr.ru (články o IT tématech, informace o různých tématech). Tento zdroj zná každý programátor.
  • rsdn.org (knihy, aktuální čísla, užitečné fórum, vyplňování mezer ve znalostech, materiály v ruštině).
  • sql.ru (vynikající pohodlné fórum, užitečná literatura a dokonce i pracovní nabídky).
  • theregister.co.uk (novinky z IT sektoru).
  • opennet.ru (zprávy, užitečné články, fórum atd.). Zdroj pro profesionály.
  • driver.ru (knihovna ovladačů). Užitečná stránka pro začátečníky.

Studijní zdroje:

  1. ocw.mit.edu/courses (přes 2000 kurzů na různá témata).
  2. coursera.org (více než 200 kurzů, zdarma).
  3. thecodeplayer.com (průvodci krok za krokem pro začátečníky).
  4. eloquentjavascript.net (zdroj pro úvod do Java Scriptu).
  5. rubykoans.com (pro každého, kdo se učí Ruby).
  6. learncodethehardway.org (naučte se Python, Ruby, C atd.).
  7. udemy.com (placené a bezplatné kurzy).
  8. teamtreehouse.com (přes 600 lekcí).
  9. webref.ru/layout/learn-html-css (pro zvládnutí HTML a CSS).
  10. getbootstrap.com (prozkoumání funkcí Bootstrap).
  11. learn.javascript.ru (výukové rozhraní a Javascript).
  12. backbonejs.org (pro front-end vývojáře).
  13. itman.in/uroki-django (pro výuku Djanga).

Bezplatné výukové stránky, které pomohou začátečníkům:

  • ru.hexlet.io (8 bezplatných kurzů v C a PHP, JavaScript a Bash).
  • htmlacademy.ru (18 bezplatných kurzů pro návrháře rozložení).
  • codecademy.com (populární kurzy o jazycích, nástrojích atd.).
  • codeschool.com (více než 60 kurzů (13 zdarma) na HTML/CSS a JavaScript, Ruby a Python, iOS a Git atd.).
  • checkio.org (pro výuku Pythonu a JavaScriptu).
  • codedingame.com (učení prostřednictvím videoher, 23 programovacích jazyků).
  • codecombat.com (naučte se JavaScript, Python atd.). Vzdělávací hra, která je přístupná i těm, kteří ještě neovládají angličtinu.
  • codehunt.com (školení k nalezení chyb v kódu).
  • codefights.com (tréninková platforma prostřednictvím turnajů, na kterých můžete získat pohovor ve slušné IT firmě).
  • bloc.io/ruby-warrior# (učení Ruby a umění/inteligence).
  • theaigames.com (rozvoj programátorských dovedností – vzrušující online herní simulátor pro programátora).
  • codewars.com (sbírka vzdělávacích interaktivních úkolů pro ty, kteří mají minimum znalostí).

Naučit se základy programování samostatně obvykle trvá šest až 12 měsíců.

Jak rychle najít práci programátora a začít vydělávat peníze - rady od zkušených lidí

Přirozeně, bez pracovních zkušeností prostě neseženete práci v normální firmě.

Proto…

  1. Čtěte knihy, studujte webové stránky a vzdělávejte se, ale nyní začněte psát úplně první řádky kódu.
  2. Vytvářejte a komplikujte své vlastní úkoly na základě látky, kterou jste probrali.
  3. Hledejte své první projekty, třeba i za „vtipné peníze“, zapište si to do svého „životopisu“.
  4. Hledejte práci na burzách na volné noze v ruštině (ru) a na burzách v anglickém jazyce (upwork.com) – tam je větší šance, že ji získáte.
  5. Začněte s malými projekty, které zvládnete.
  6. Nenechte si ujít možnost open source (takovým projektům vždy chybí lidé).
  7. Pomozte „za pěkný groš“ (nebo dokonce zdarma, na zkušenosti) programátorům, které znáte. Nechte je zadávat jednoduché úkoly.

  • Nezapomeňte napsat: své pracovní zkušenosti, seznam jazyků a technologií, kterými mluvíte, vzdělání a kontakty.
  • Do životopisu nenacpeme celý seznam našich kvalit a talentů. I když hrajete na knoflíkový akordeon mistrně, neměli byste o tom psát do životopisu.
  • Navrhněte svůj životopis tak, aby byl kreativní, ale relevantní.
  • Neměli byste vyplňovat položky jako „vaše cíle a ambice“ nebo „kde se vidím za 5 let“. Stačí napsat, co jste dělali předtím a co byste chtěli dělat nyní.
  • Nepište o jazycích a technologiích, které znáte pouze jménem. Do životopisu byste měli psát jen ty, ve kterých plavete jako ryba ve vodě. Na všechno ostatní existuje kouzelná fráze – „byl malý zážitek“.
  • Pokud jste zběhlí v Delphi, nezapomeňte zmínit, že umíte i C#, Jave nebo jiný jazyk, protože „programátora Delphi“ opravdu nikdo nepotřebuje (Delphi je základ, který zná každý absolvent).
  • Neuvádějte práci, která nebyla ve vaší specializaci. To nikoho nezajímá. Také nikoho nezajímá, jestli máte řidičák nebo auto. Nezískáte práci jako kurýr.

Profesní vyhlídky programátora a platy programátorů

Průměrný plat programátora ve velkých městech země je: od 50 000 do 200 000 rublů.

Pro Rusko jako celek - od 35 tisíc do 120 000.

Profese je na seznamu nejžádanějších - a nejhezčích placených. I skromný specialista si vydělá dost na to, aby si koupil chlebíček s kaviárem, ale profesionál rozhodně nebude potřebovat peníze.

Od stážisty po vedoucího IT oddělení není cesta tak dlouhá a plat na samém vrcholu může dosáhnout 4 000 $ měsíčně. No, pak se můžete přesunout do vedení velkého projektu (cca - vývoj softwaru) a zde plat již přesahuje 5 000 $.

Dnes je těžké si představit náš život bez takových věcí, které se již staly každodenními věcmi, jako jsou notebooky a osobní počítače, chytré telefony a konzole, terminály v supermarketech, automatizované bankovní systémy atd. V tomto výčtu by se dalo pokračovat ještě dlouho, ale jedno mají všechny společné – jsou to programátoři, kteří do těchto moderních chytrých zařízení vkládají „mozky“.

Před výběrem této profese však musíte jasně pochopit, kde začít, abyste dosáhli úspěchu v této obtížné oblasti.

Programátorem se může stát každý, kdo má základní dovednosti, znalosti a velkou touhu. Kromě toho se musíte rozhodnout, kterým směrem programování byste chtěli pracovat nejvíce. V tomto případě existují tři hlavní směry.

1. Weboví programátoři jsou tím nejjednodušším způsobem práce. Zahrnuje:

  • Návrhář rozložení vytvářející šablony (design webových stránek);
  • Serverový programátor vytvářející skript pro webové stránky.

2. Softwaroví programátoři (střední úroveň složitosti) se dělí na:

  • Vývojář softwaru;
  • Vývojář systémových programů.

3. Programátoři vyvíjející hry pro PC, mobilní telefony, konzole - nejobtížnější oblast práce.

Jak dlouho potřebujete studovat?

Vše závisí na touze a intenzitě získávání teoretických znalostí a praktických dovedností. Platí však nepsané pravidlo, že vše se dá naučit za jeden rok. Hlavní je mít chuť se učit a neustále získávat nové dovednosti. Co se týče věku, kdy člověk tuto profesi zvládne, je tu také otázka odhodlání. Někteří ve věku 18-20 let nemají žádnou touhu a životní energii, zatímco jiní, v důchodovém věku, snadno dosahují cílů, které si sami stanovili.

Jaké znalosti a vlastnosti jsou potřeba?

Mladí lidé, kteří chtějí ve školním věku propojit svůj život s programováním, by měli pochopit, že vzdělání, které se jim dostane v lavicích, jim výrazně usnadní zvládnutí této profese.

Ve školních osnovách je třeba věnovat zvláštní pozornost těmto předmětům:

  1. Algebra pro pokročilé. Kromě schopnosti provádět běžné výpočty je to jeden z mála školních předmětů, který vás nutí přemýšlet, analyzovat, rozvíjet abstraktní myšlení a vytvářet osobní závěry. To jsou dovednosti, které by člověk měl mít;
  2. Anglický jazyk. V tomto případě je vyžadována alespoň „střední úroveň se slovníkem“. V ideálním případě to znamená dobrou znalost technického jazyka a schopnost překládat odborné texty. Koneckonců, z velké části budete muset studovat a používat dokumentaci, nakupovat různé programy a také jednat se zahraničními protistranami se sebevědomým ovládáním anglického jazyka;
  3. Informatika (teorie programování). Je nutné rozumět datovým typům a základům práce s databázemi, základním operátorům a programovacím jazykům (ve školních osnovách to jsou Pascal a C++) a také základům objektově orientovaného programování;
  4. Fyzika. Mnoho lidí se domnívá, že znalost tohoto předmětu je pro zvládnutí profese programátora naprosto k ničemu. Ale tento názor lze označit za chybný. Koneckonců, tato oblast práce může úzce souviset s fyzikou. Například vytvoření simulátoru vesmírné nebo námořní lodi a také počítačových her, které se co nejvíce přibližují realitě. Nezbytností mohou být znalosti o dopadu a lomu světla, vytváření skutečného pohybu a driftů automobilu za různých povětrnostních podmínek, realistické zobrazení vody, kouře nebo ohně atd.

Požadované vlastnosti pro práci:

  1. Mít mimořádné a logické myšlení;
  2. Matematické myšlení;
  3. Schopnost hospodařit s časem (nezapomínat na neustálé sebevzdělávání);
  4. Schopnost rozdělit jeden velký úkol na dílčí úkoly;
  5. Schopnost vybrat si správný cíl a mít touhu ho dosáhnout;
  6. Schopnost pracovat ve velkém týmu. Velké projekty nezvládnete sami a malé projekty nejsou nijak zvlášť žádané. Nevyjasněné záležitosti je nutné probrat se zkušenějšími kolegy a zaplnit mezery ve znalostech;
  7. Schopnost rychle se učit. Technologie nestojí na místě. Kromě stávající práce na svých projektech je tedy potřeba neustále sledovat a být si vědom nejnovějších změn v oblasti informačních technologií.

Minimální znalosti a dovednosti

Podle inženýrů a programátorů v Google musí mít každý sebeúctyhodný specialista v oblasti programování řadu minimálních znalostí a dovedností, aby se mohl v budoucnu stát profesionálem. A tak, co potřebujete vědět, abyste se stali specialistou na vysoké úrovni:

  • Naučte se základy počítačové gramotnosti pomocí kurzů dálkového studia od Coursera nebo Udacity;
  • Získejte znalosti programování alespoň v jednom jazyce (Python, C++, Java);
  • Naučte se další jazyky (PHP, Java Script, HTML, CSS);
  • Naučte se testovat kód;
  • Naučte se rozumět algoritmům a datovým strukturám;
  • Získat znalosti v diskrétní matematice;
  • Prostudujte si vlastnosti operačních systémů;
  • Získejte znalosti o umělé inteligenci;
  • Naučte se vytvářet kompilátory;
  • Získejte znalosti z kryptografie a paralelního programování.

Při zahájení praktické práce výše uvedení odborníci radí:

  • Vytvořte si vlastní web, server nebo robota;
  • Vyvinout část velkého systému, pochopit dokumentaci a kódy a odladit program;
  • Začněte pracovat na velkém projektu jako tým. To vám umožní učit se rychleji a zvyknout si na týmovou interakci;
  • Neustále zdokonalujte své znalosti a dovednosti;
  • Začněte učit ostatní.

Kde mohu získat potřebné znalosti?

Potřebné teoretické a praktické znalosti v oblasti programování můžete sami získat několika způsoby:

  1. Učení z knih a časopisů. Tuto možnost lze nazvat standardní a osvědčenou po mnoho let. Abyste však ušetřili na nákupu „papírových médií“, můžete si stáhnout nejdůležitější informace o problémech s programováním z internetových zdrojů. Mnoho odborníků z praxe tvrdí, že vnímání studovaného materiálu je lepší z papírových zdrojů. A potřeba ručně psát mnoho různých kódů vám umožní získat určité sebevědomí a zbavit se pasivního způsobu psaní programových kódů, jako je „kopírovat a vložit“;
  2. Školicí video kurzy. Jsou dobrou alternativou knih a časopisů. Knihy jsou většinou psány nudným a ne vždy srozumitelným jazykem, bez možnosti položit autorovi otázku zajímavosti. Pokud se podíváte na video lekce, vše je mnohem jednodušší. Hlavní věc, která je nutná, je opakovat všechny akce, které se zobrazují na monitoru. A pokud se vyskytnou potíže nebo nepochopitelné okamžiky, můžete vždy položit otázku autorovi na fóru. Dalším pozitivním aspektem takového školení je samostatné provádění řady akcí popsaných v lekci. Ano, k tomu dochází ve formě jasného opakování operací provedených ve videu. Ale právě tento postup postupně rozvíjí schopnost samostatné tvorby skriptů, aplikací a programů.

Po získání dostatečné úrovně znalostí můžete zhodnotit své síly a soutěžit na různých specializovaných stránkách pro programátory. Chcete-li získat nové a užitečné informace a komunikovat s „kolegy“, doporučujeme navštívit internetová fóra.

Závěr

Změny v IT technologiích, včetně programovacích jazyků, probíhají neustále. Je třeba snažit se jít s dobou, studovat různou literaturu věnovanou konkrétní oblasti práce. Neustálé hledání různých způsobů řešení problémů pomůže zlepšit odborné znalosti. Komunikace s kolegy nebo jednoduše lidmi souvisejícími s programováním vám umožní rychle najít ty správné způsoby plnění zadaných úkolů.

Není nic špatného na neustálém používání referenčních knih o programovacích jazycích, protože nemůžete mít vše v hlavě a jsou věci, které si uchovávat nemusíte. Vyplatí se přistupovat k řešení jakéhokoli problému (i toho nejjednoduššího na první pohled) důkladně a pomalu. Při prvním uplatnění získaných teoretických znalostí v praxi je potřeba se naučit vyvinout vlastní algoritmus řešení. Malé programátorské problémy je potřeba přebírat co nejčastěji a postupně pilovat své dovednosti. Později, s nabytými zkušenostmi, si programátor bude moci dovolit vedle hlavního zaměstnání vedení dalších placených seminářů a konzultací a také nábor studentů. Doufám, že vás takové potíže nevyděsily a budete i nadále směřovat ke svému cíli.

Publikace na dané téma