Urobili sme krátky prepis s hlavnými myšlienkami z Python Junior Podcast: v ňom sme diskutovali o tom, kde začať a kam ísť ako začínajúci vývojár Pythonu. V poslednej dobe máme veľa obsahu pre stredných a starších, ale táto epizóda je určite pre juniorov.

Hlavné témy:
- Aké znalosti potrebuje začínajúci programátor na precvičenie
vývoj webových aplikácií? - Čo očakávajú zamestnávatelia od vývojárov?
- Čo robiť, aby ste si našli prácu bez skúseností?
- Ako sa môže vývojár Pythonu rozvíjať?
Python Junior Podcast je programovací podcast pre tých, ktorí chcú lepšie porozumieť Pythonu. Vysielania vedú komunitní evanjelisti a lektorov kurzov .
Účastníci konverzácie:
- Valentin Dombrovský,spoluzakladateľ MoscowPython
- Zlata Obukhovskaya, Vedenie tímu NVIDIA
- Grigorij Petrov, evanjelista MoskvaPython
- Alexey Shtyrnyaev, developer v spoločnosti FinEx, lektor kurzov Learn
Pytón
Prečo je Python dobrý na vývoj webu
Valentin Dombrovský: Prečo je Python vhodný na vývoj webových aplikácií? Prečo nie napríklad PHP alebo JavaScript?
Grigorij Petrov: Takže veľa na výber nie je. Napriek tomu, že v modernom webe môžete skutočne vytvoriť jednostránkovú aplikáciu alebo progresívnu webovú aplikáciu bez backendu - čisto pomocou front-end technológií, pomocou JavaScriptu - je to stále príliš komplikované, zle indexované a vyžaduje si skvelých vývojárov.
Ak chceme vytvoriť webovú stránku alebo službu, používame kombinovaný prístup: niektoré backendy implementujú logiku a vytvárajú webové stránky a niektoré frontend kreslí tieto webové stránky v prehliadači. A keď to potrebujeme na niečom rýchlo dať dokopy, vlastne nemáme na výber.
Pozrime sa na možné možnosti.
- C#. Microsoft je naozaj skvelý, urobili .NET Core a propagujú ho všetkými možnými spôsobmi. Ale po prvé, toto je nová multiplatformová technológia a tam ešte nie je všetko hladké. Po druhé, je to naozaj drahé, vývojárov C# je málo – jednoducho preto, že je to nepopulárne.
- Java. Je to komplikované. Vytvorenie normálnej webovej stránky v Jave nezaberie 10 riadkov kódu, ako v Pythone. Toto je veľa kódu, sú to rámce a musíte poznať špecifiká nastavenia serverov Java. Vo všeobecnosti nepretržitá bolesť a utrpenie.
- PHP. V najnovších verziách je to úžasné. Dokonca poviem toto: PHP 7.2 nie je horšie ako Python. Ale nemôžete len tak vyzdvihnúť a použiť PHP 7.2. Ak obyčajný, nie špičkový vývojár robí web v PHP, nebude písať len v 7.2: bude si musieť ešte prečítať nejaké učebnice, tutoriály, všade je veľa legacy kódu a to nie je moc dobré.
- JavaScript a Node.js. Je úžasné a veľmi moderné, keď je na front-ende aj back-ende jeden jazyk. Len nie veľmi stabilné. Node.js je dobrá vec, ale je problematické ho nasadiť do produkcie, aby nepadalo a fungovalo stabilne. Navyše, ak chceme písať kvalitný JavaScript kód, nepotrebujeme JavaScript, ale TypeScript. Ale TypeScript je nečakane zložitý a priemerný vývojár má mozog, keď to vidí.
Vynechajme Ruby, Haskell, Erlang a ďalšie špecializované veci a ostane nám... Python. Jazyk s konzistentnou syntaxou, jednotnou štandardnou knižnicou, najlepšou dokumentáciou, populárnymi odľahčenými rámcami a megapopulárnou kombináciou Django.
Ukazuje sa, že napriek najširšiemu výberu, ak máme obyčajných, nie špičkových vývojárov, sme obyčajný biznis, ktorý chce robiť obyčajné weby, nemáme vývojové oddelenie pre 50 ľudí, tak berieme Python.
Aké znalosti sú potrebné na vstup do profesie?
Zlata Obukhovskaya: Verím, že musíte dobre poznať jeden rámec – a vedieť, aké iné existujú a kedy sa používajú. Kde je Tornado, kde je Django, kde je Flask, kde je aiohttp a tak ďalej.
Bude užitočné vedieť, že existuje niečo ako protokoly. Najmä znalosť protokolu http je kľúčová pri vytváraní webových aplikácií.
Musíte tiež aspoň približne pochopiť, ako funguje frontend vo webových projektoch: čo je HTML, CSS, JS.
Alexey Shtyrnyaev: A vedieť, kde je dokumentácia. Je to najdôležitejšie.
Grigorij Petrov: Tu šliapeme na veľmi vratkú zem. Ak budeme mať smolu a nejako vážne začneme študovať moderný frontend, tak to bude asi 10x zložitejšie ako backend v Pythone. Začínajúci vývojár musí obmedziť svoje zameranie, aby sa mohol začať učiť HTML, ale nespadol do všetkých týchto divov, rozpätí, plávajúcich línií, ako je všetko zarovnané a zoradené.
Alexey Shtyrnyaev: Potrebujete základný kurz Bootstrap. A základy HTML.
V prvom roku by ste sa nemali ponoriť do JS frameworkov (ak sa zameriavate na backend). Základný kurz Bootstrap má už pripravené moduly: ak chcete slider, urobte slider, ak chcete plávajúcu ponuku, vytvorte si plávajúcu ponuku.
Zlata Obukhovskaya: Myslím si, že pri štúdiu frontendu sa môžete ponoriť najmä do toho, ako sa webovým aplikáciám vo všeobecnosti dáva statika. Vývojár tak plynulo prechádza, aby sa začal učiť, ako v princípe funguje architektúra webových aplikácií a ako žijú vo výrobe.
Grigorij Petrov: Áno, hneď to odporučím v prípade, že ste si vybrali Python ako backendový vývojový jazyk a napríklad Django ako framework: Django má dokumentáciu v knihe Django Book, je naozaj super, obsahuje všetko, čo povedala Zlata, naozaj dobré pre začiatočníka.
Alexey Shtyrnyaev: Niektoré Django Girls sú tiež vhodné na rýchly začiatok, ak je vaším cieľom naučiť sa Django. Toto je návod, v ktorom môžete za jeden deň prejsť cez vrchol, pochopiť základy a to, čoho je framework schopný.
Valentin Dombrovský: V rámci prípravy na nahrávanie podcastu sme zostavili zoznam toho, čo Python programátor potrebuje na vývoj webu, ktorý sumarizuje to, čo sme už povedali.
Čo je zahrnuté v základoch vývoja webu v Pythone
- Webové frameworky Django, Flask, aiohttp, Tornado atď. (a vedieť o existencii ďalších).
- Protokoly a API: primárne http, JSON-RPC, Protocol Buffers, gRPC.
- ORM a migrácie, relačné databázy, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Základy HTML, CSS, Bootstrap, ako aj JS frameworkov a JQuery.
- Princípy fungovania aplikácií vo výrobe, testovanie, unit testy, autotesty, systémy riadenia verzií, git.
Potrebujú juniori algoritmy?
Zlata Obukhovskaya: Najprv nemusíte poznať algoritmy, postupne sa vám objavia v hlave, ak sa budete venovať vývoju dostatočne dlho. Poznám veľa dobrých inžinierov, ktorí nemajú dobrý kurz formálnych algoritmov.
Grigorij Petrov: Chcem priliať olej do ohňa. Odkiaľ pochádza naša túžba po algoritmoch?
V súčasnosti nemáme zásadné vzdelanie v oblasti algoritmov, nevieme vyškoliť programátorov, nemáme technickú základňu.
Pokúšajú sa o to, ale tu máme príbeh Rokfortu: nemôžeme vytvoriť školu pre čarodejníkov, kým nemáme jediného čarodejníka. Čo by teda mala univerzita robiť, keď k nim prídu a spýtajú sa: „Začnite trénovať programátorov“, ale nemajú programátorov, pretože všetci pracujú na Mail.ru, Rambler a Yandex, sú tam spokojní?
Univerzita vyzerá a hovorí:
- Dobre, programovanie. Nájdite nejakú súvisiacu oblasť vedomostí a pozvite odtiaľ špecialistov. Pozvime novinárov, ktorí vedia písať, elektrotechnikov, ktorí dokážu vytvárať elektrické obvody, a matematikov, ktorí vedia používať algoritmy.
Nakoniec sa ukazuje, že je to rovnako praktické ako učiť stavebnú fyziku častíc len preto, že tehly a cement sú vyrobené z elementárnych častíc.
Zároveň nehovoria o cemente a tehlách sami, pretože fyzik, ktorý sa snaží vycvičiť staviteľa, nevie, ako stavať domy. Výsledkom je staviteľ, ktorý dokáže dokonale opísať, ako „cement funguje“, no nikdy ho nevidel a nevie z neho nič vyrobiť.
Algoritmy a dátové štruktúry sú veľmi dobré, ale ide o veľmi malú oblasť použitia. Sú naliehavo potrebné, napríklad ak píšete herný engine, kompilátor alebo sieťový protokol.
Väčšina programátorov rieši obchodné problémy, pri ktorých nie sú potrebné algoritmy a dátové štruktúry.
Najťažšia matematika tam je sčítanie dvakrát a potom delenie. Vyžaduje si to úplne iné znalosti. Riešenie obchodných problémov si vyžaduje skôr aplikované ako základné znalosti.
Pre začínajúceho vývojára je lepšie rozumieť podnikaniu a tomu, ako správne a rýchlo zostaviť potrebné štruktúry z hotových blokov, ako ich odladiť, ako zabezpečiť, aby sa nerozpadli, aby vedeli, prečo sa rozpadajú, čo sa stane, keď sa zmenia požiadavky a program sa začne „usadzovať na základoch“ ako dom po daždi.
Sú to praktické veci a pochopenie toho, ako písať softvér. Musí vedieť, že okrem debuggera má aj sadu nástrojov, ktoré presne ukážu, kde sa program spomaľuje.
Valentin Dombrovský: Napadlo ma toto prirovnanie: toto je preklad z jazyka biznisu do jazyka, v ktorom sa dá komunikovať s počítačom. To znamená, že programátor je akýsi špecifický lingvista.
Grigorij Petrov: Obchod potrebuje spisovateľa, nie lingvistu. Spisovateľ nemusí vedieť, prečo sa pred tisíc rokmi toto slovo zmenilo na toto. Musí vedieť tieto slová aplikovať.
Čo potrebujete, aby ste si našli svoju prvú prácu vývojára
Alexey Shtyrnyaev: Univerzálny recept, ako variť junior, asi neexistuje.
Ak prídete do nejakej spoločnosti, zamestnajú vás nie preto, že poznáte Djanga, JSON a pár algoritmov. S najväčšou pravdepodobnosťou budete prijatí pre zručnosti, ktoré táto spoločnosť potrebuje tu a teraz.
Existuje veľa spoločností a každá má iné požiadavky. Neexistuje také univerzálne množstvo vedomostí, ktoré je potrebné získať, aby ste mohli ďalej pripraviť životopis a ísť si nájsť prácu.
Grigorij Petrov: Keď sme vo VoxImplant hľadali niekoľkých inžinierov, náš technický riaditeľ sformuloval základnú požiadavku takto: človek musí vedieť riešiť problémy. Je jasné, že junior to neurobí vždy efektívne, nie práve najlepšie a nie vždy správne, ale v ideálnom prípade dáte človeku úlohu, napína ju a rieši. Toto je zručnosť, ktorú zamestnávatelia primárne hľadajú.
Zlata Obukhovskaya: Ľudia, ktorí hľadajú prácu z iných oblastí, majú z obchodného hľadiska určitú výhodu, pretože už prešli kus cesty a vedia rýchlo riešiť problémy. Sú to mäkké zručnosti, dokonca by som to nazval pracovnou kultúrou. Absolventi vysokých škôl často ešte nemajú rozvinutú túto pracovnú kultúru.
Ale aj tak by som chcel skúsiť dať nejaký ten recept začiatočníkom.
Prvé kroky pre začínajúceho vývojára
Zlata Obukhovskaya: Prvým je, že je to stále nejaký vlastný projekt, pretože si musíte niečo napísať do životopisu a ukázať minimálne portfólio. Je chladnejšie, keď tieto projekty nie sú vytvorené pre seba, ale ako projekt na voľnej nohe – pre niekoho.
Po prvých projektoch si už môžete spraviť životopis a poslať ho všetkým firmám, kde sú júnové pozície. Rozhovory poskytnú prehľad o tom, čo spoločnosti potrebujú. Skôr či neskôr vás niekto zamestná, aspoň v malej firme. Následne vám táto pracovná skúsenosť dá možnosť dostať sa do väčšej a zaujímavejšej spoločnosti.
Valentin Dombrovský: Mimochodom, v našich kurzoch pripravujeme študentov na to, aby mali vlastný projekt do 10 týždňov od školenia. Okrem toho trénujeme zručnosti v oblasti rozvoja tímu. To sú presne tie mäkké zručnosti, o ktorých hovorila Zlata.
Alexey Shtyrnyaev: Zo skúsenosti vám môžem povedať, že hľadanie prvej práce môže trvať veľmi dlho. Keď hľadáte mesiac alebo dva, je to normálne. Ak posielate životopis do všetkých firiem, choďte na pohovory, v treťom mesiaci si určite niečo nájdete.
Valentin Dombrovský: Môžete strihať svoje vlastné projekty alebo sa ujať jednoduchých projektov na voľnej nohe a zároveň poslať svoj životopis.
Aké vyhliadky má vývojár Pythonu?
Zlata Obukhovskaya: Vývojár Pythonu môže ísť kamkoľvek. Môžete ísť do testovania a pokračovať vo vývoji až po senior architekta. Alebo aj do manažmentu. Existujú rôzne typy technických manažérov a môžete vyrásť na vrcholový manažment. Môžete sa rozvíjať v dátovej vede, DevOps, ísť do automatizovaného testovania alebo strojového učenia.
Valentin Dombrovský: Vo všeobecnosti existuje veľa možností a príležitostí, vrátane našich kurzov. Pri vstupe nepotrebujete veľa vedomostí, ale potom je vhodné pokryť širší rozsah, pretože čím viac môžete, tým lepšie pre vás.
***
Toto je len časť vydania . K dispozícii je plná verzia epizódy .
Alebo sa dokonca pozrite:

Ďakujem za čítanie, počúvanie alebo pozeranie.
Zdroj: hab.com
