Python pro web: co by měl junior vědět, aby mohl pracovat a rozvíjet se

Uvedli jsme zkrácený přehled hlavních myšlenek z Python Junior Podcastu: probírali jsme, jak začít a kam se vydat jako začínající vývojář v Pythonu. V poslední době máme hodně obsahu pro střední a zkušené vývojáře, ale tato epizoda je určena přesně pro juniory.

Python pro web: co by měl junior vědět, aby mohl pracovat a rozvíjet se

Hlavní témata:

  • Jaké znalosti potřebuje začínající programátor pro
    webový vývoj?
  • Co od vývojářů očekávají zaměstnavatelé?
  • Co dělat, aby bylo možné najít práci bez zkušeností?
  • Jak se může Python vývojář vyvíjet?

Python Junior Podcast — podcast o programování pro ty, kteří se chtějí lépe vyznat v Pythonu. Vysílání vedou evangelisté komunity MoscowPython a učitelé kurzů Learn Python.

V diskusi se účastnili:

  • Valentin Dombrovský,spoluzakladatel MoscowPython
  • Zlata Obuchovská, teamlead v NVIDIA
  • Grigorij Petrov, evangelista MoscowPython
  • Alexej Štyrnajev, vývojář ve FinEx, učitel kurzů Learn
    CouchDB

Proč je Python dobrý pro webový vývoj

Valentin Dombrovský: Proč zrovna Python je vhodný pro webový vývoj? Proč ne PHP nebo JavaScript například?

Grigorij Petrov: No, výběr není moc široký. I když v moderním webu je možné prakticky obejít se bez backendu — čistě na frontendových technologiích, na JavaScriptu — sestavit si single page application nebo progressive web application, stejně je to příliš složité, špatně se indexuje a vyžaduje to kvalitní vývojáře.

Pokud chceme vytvořit web nebo službu, použijeme kombinovaný přístup: mít nějaký backend, který provádí logiku a vytváří webové stránky a nějaký frontend, který vykresluje tyto webové stránky v prohlížeči. A když to potřebujeme rychle realitizovat na něčem, tak výběr není moc široký.

Podívejme se na možné možnosti.

  • C#. Microsoft si opravdu zaslouží pochvalu, vytvořili .NET Core a různým způsobem jej prosazují. Ale za prvé, je to nová multiplatformní technologie, a není to tam ještě úplně hladké. Zadruhé je to opravdu drahé, vývojářů C# je málo — prostě proto, že není populární.
  • Java. To je složité. Udělat normální web na Javě — to není 10 řádků kódu, jako v Pythonu. Je to spousta kódu, to jsou frameworky a musíš znát specifika nastavení Java serverů. Celkově, samé bolesti a utrpení.
  • PHP. V posledních verzích je skvělý. Dokonce bych řekl, že PHP 7.2 není horší než Python. Ale nelze prostě vzít a začít používat PHP 7.2. Pokud běžný, ne špičkový vývojář vytváří web na PHP, nebude psát pouze na 7.2: stejně bude muset číst nějaké příručky, tutoriály, všude je spousta legacy kódu, a to není příliš dobré.
  • JavaScript a Node.js. To je skvělé a velmi moderní, když je jeden jazyk na frontendu i backendu. Jenže to není příliš stabilní. Node.js je dobrá věc, ale je problematické ji rozložit v produkci tak, aby nespadla a fungovala stabilně. Navíc, pokud chceme psát kvalitní kód v JavaScriptu, potřebujeme ne JavaScript, ale TypeScript. Ale TypeScript je nečekaně složitý, při pohledu na něj se běžnému vývojáři vaří mozek.

Opusťme Ruby, Haskell, Erlang a další niche věci, a zůstává nám… Python. Jazyk s konzistentní syntaxí, jednotnou standardní knihovnou, nejlepší dokumentací, populárními lehkými frameworky a velmi populárním nástrojem Django.

Ukazuje se, že navzdory široké nabídce, pokud máme běžné, ne špičkové vývojáře, jsme běžný podnik, který chce dělat běžné weby, nemáme oddělení vývoje s 50 lidmi, tak bereme Python.

Jaké znalosti jsou potřeba k vstupu do profese

Zlata Obuchovská: Myslím, že jeden framework byste měli znát dobře — a vědět, jaké další existují a kdy se používají. Kde je Tornado, kde Django, kde Flask, kde aiohttp a tak dále.
Bude se hodit vědět, že existuje taková věc jako protokoly. Zvláště znalost protokolu http je klíčová pro vytváření webových aplikací.

Je také potřeba alespoň přibližně si představit, jak jsou ve webových projektech uspořádány frontendy: co je HTML, CSS, JS.

Alexej Štyrnajev: A vědět, kde leží dokumentace. To je nejdůležitější.

Grigorij Petrov: Tady vstupujeme na velmi vratkou půdu. Pokud jsme neměli štěstí a začali jsme se vážně učit moderní frontend, bude to přibližně 10x složitější než backend v Pythonu. Začínající vývojář by měl omezit svůj fokus tak, aby začal studovat HTML, ale aby nespadl do všech těch div, span, float, jak se vše vyrovnává a uspořádává.

Alexej Štyrnajev: Potřebujeme základní kurz Bootstrap. A základy HTML.

V prvním roce se nevyplatí zabývat se JS rámci (pokud se soustředíte na backend). V základním kurzu Bootstrap už jsou hotové moduly: chceš slider — udělej slider, chceš plovoucí menu — udělej plovoucí menu.

Zlata Obuchovská: Myslím, že se studiem frontendu se můžete především ponořit do toho, jak se statika dodává webovým aplikacím. Tak se vývojář plynule dostává k tomu, aby začal poznávat, jak v zásadě funguje architektura webových aplikací a jak žijí na produkci.

Grigorij Petrov: Ano, doporučuji hned pro případ, že jste si vybrali Python jako jazyk pro backend vývoj a například Django jako rámec: Django má dokumentaci v Django Book, ta je opravdu skvělá, obsahuje všechno to, o čem mluvila Zlata, skutečně je dobrá pro začátečníka.

Alexej Štyrnajev: Ještě pro rychlý start se hodí nějaký Django Girls, pokud je cílem naučit se právě Django. Je to takový tutoriál, kde za jeden den můžete projít základy, pochopit základy a to, na co je rámec schopný.

Valentin Dombrovský: Při přípravě na nahrávání podcastu jsme sestavili seznam toho, co potřebuje programátor v Pythonu pro webový vývoj, čímž shrnujeme dříve řečené.

Co spadá do základu pro webový vývoj v Pythonu

  • Webové rámce Django, Flask, aiohttp, Tornado atd. (a znát existenci dalších).
  • Protokoly a API: především http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM a migrace, relační databáze, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Základy HTML, CSS, Bootstrap, stejně jako JS rámce a JQuery.
  • Principy fungování aplikací na produkci, testování, unit testy, automatizované testy, systémy správy verzí, git.

Jsou algoritmy potřeba pro juniora?

Zlata Obuchovská: Zpočátku není potřeba znát algoritmy, samy se postupně objeví v hlavě, pokud se vývoji věnujete dostatečně dlouho. Znám spoustu dobrých inženýrů, kteří neměli žádný dobrý formální kurz algoritmů.

Grigorij Petrov: Chci přilít olej do ohně. Odkud vůbec pochází naše touha po algoritmech?

V současnosti nemáme fundamentální vzdělání v algoritmech, neumíme školit programátory, nemáme technickou základnu.

Snažíme se to udělat, ale máme tu příběh o Bradavicích: nemůžeme vytvořit školu čarodějů, dokud nemáme ani jednoho čaroděje. Co tedy má dělat univerzita, do které přicházejí a říkají: „Začněte vyučovat programátory“, když programátoři tam nejsou, protože všichni pracují v Mail.ru, Rambleru a Yandexu, kde se jim daří?

Na univerzitě se dívají a říkají:
— Dobře, programování. Pojďme najít nějakou příbuznou oblast znalostí a pozvat odborníky odsud. Pojďme pozvat novináře, kteří umějí psát texty, inženýry-elektroniky, kteří umějí produkovat elektrické schémata, a matematiky, kteří rozumějí algoritmům.

Nakonec se ukáže, že to je stejně tak rozumné, jako učit stavitele fyziku elementárních částic jen proto, že cihly a cement se skládají z elementárních částic.

Přitom o samotném cementu a cihle nemluví, protože fyzik, který se snaží naučit stavitele, jak stavět domy, to nikdy nedělal. Nakonec dostaneme stavitele, který dokáže výborně popsat, jak "funguje cement", ale nikdy ho neviděl a neumí z něj nic udělat.

Algoritmy a datové struktury — to je velmi dobré, ale je to velmi malá aplikační oblast. Jsou naléhavě potřebné, například pokud píšeš herní engine, kompilátor nebo síťový protokol.

Většina programátorů řeší obchodní úkoly, kde algoritmy a datové struktury nejsou potřeba.

Nejkomplexnější matematika tam je dvakrát sčítat a pak dělit. Potřebné jsou úplně jiné znalosti. K řešení obchodních úkolů jsou většinou potřeba aplikované, nikoli fundamentální znalosti.

Začínající vývojář by měl mít představu o podnikání a o tom, jak rychle a správně sestavovat potřebné konstrukce z hotových bloků, jak je ladit, jak udělat, aby se nerozpadaly, vědět, proč se rozpadnou, co se stane, když se požadavky změní a program začne "sedat na základu", jako dům po dešti.
Tyto aplikované znalosti a pochopení, jak psát software. Musí vědět, že kromě ladícího nástroje má k dispozici sadu nástrojů, které ukáží, kde přesně program zpomaluje.

Valentin Dombrovský: Přišlo mi na mysl takové přirovnání: je to překlad z jazyka byznysu do jazyka, kterým lze komunikovat s počítačem. To znamená, že programátor je takový specifický lingvista.

Grigorij Petrov: Byznys potřebuje spisovatele, ne lingvistu. Spisovatel nemusí vědět, proč se před tisíci lety toto slovo přetvořilo v tohle. Musí umět tato slova použít.

Co je potřeba, abych našel první práci jako vývojář?

Alexej Štyrnajev: Asi neexistuje univerzální recept, podle kterého je třeba připravit juniory.

Pokud přicházíte do nějaké firmy, neberou vás proto, že znáte Django, JSON a trochu algoritmů. Spíše vás vezmou za dovednosti, které jsou teď a tady potřeba této firmě.

Firem je hodně a každá má jiné požadavky. Neexistuje univerzální objem znalostí, které je třeba získat, abyste mohli připravit životopis a jít se ucházet o zaměstnání.

Grigorij Petrov: Když jsme ve VoxImplant hledali několik juniorů, náš technický ředitel formuloval základní požadavek takto: člověk musí umět řešit úkoly. Je jasné, že junior to nebude dělat vždy efektivně, ne nejlepším způsobem a ne vždy správně, ale v ideálním případě dáte člověku úkol, on se zaměří a vyřeší ho. To je dovednost, kterou zaměstnavatelé hledají především.

Zlata Obuchovská: Lidé, kteří hledají práci a přecházejí z jiných oblastí, mají z obchodního hlediska určitou výhodu, protože už prošli nějakou cestou a umí úkoly řešit rychle. To jsou soft skills, to bych nazvala dokonce pracovní kulturou. Mnozí absolventi vysokých škol tuto pracovní kulturu ještě nemají rozvinutou.

Ale chtěl bych se přesto pokusit nabídnout nějaký recept začínajícím.

První kroky pro začínajícího vývojáře

Zlata Obuchovská: Za prvé — měl by mít nějaký svůj projekt, protože v životopise je třeba napsat něco, ukázat minimální portfolio. Je lepší, když tyto projekty nejsou dělány jen pro sebe, ale na volné noze — pro někoho.

Po prvních projektech je už možné udělat životopis a rozeslat ho všem firmám, kde jsou pozice pro juniory. Pohovory vám poskytnou pochopení toho, co firmy potřebují. Dříve či později vás někdo vezme, alespoň do malé firmy. Tento pracovní zkušenost vám posléze umožní dostat se do větší a zajímavější firmy.

Valentin Dombrovský: Mimochodem, naše kurzy připravují studenty na to, aby za 10 týdnů školení vybudovali svůj vlastní projekt. Taktéž trénujeme dovednost týmového vývoje. To jsou právě ty soft skills, o kterých mluvila Zlata.

Alexej Štyrnajev: Podle zkušeností říkám, že první práci můžete hledat velmi dlouho. Když hledáte měsíc nebo dva, je to normální. Pokud se ucházíte o pozice ve všech firmách, chodíte na pohovory, třetí měsíc určitě něco najdete.

Valentin Dombrovský: Můžete pracovat na svých projektech, nebo brát jednoduché projekty na freelancu a zároveň se věnovat odesílání životopisů.

Jaké možnosti má Python vývojář

Zlata Obuchovská: Python vývojář může jít kamkoli. Může přejít do testování, pokračovat ve vývoji až do pozice senior architekta, nebo dokonce do managementu. Technických manažerů je mnoho a můžete se dostat až na vrcholový management. Můžete se vyvíjet v oblasti data science, DevOps, zapojit se do automatizovaného testování nebo machine learningu.

Valentin Dombrovský: Obecně existuje řada možností, včetně našich kurzů. Na začátku není potřeba mnoho znalostí, ale je dobré později pokrýt širší spektrum, protože čím více toho zvládnete, tím lépe pro vás.

***

To je pouze část vydání Python Junior. Celou verzi epizody si můžete poslechnout.

Nebo dokonce shlédnout:

Přehrát video

RSS podcastu

Děkujeme, že jste si přečetli, poslechli nebo shlédli.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster