Python za Web: šta mlađi treba da zna da bi radio i razvijao se

Napravili smo kratak transkript sa glavnim mislima iz Python Junior Podcast-a: u njemu smo razgovarali o tome gde da počnemo i gde da idemo kao početnik Python programer. U posljednje vrijeme imamo dosta sadržaja za srednje i seniore, ali ova epizoda je svakako za juniore.

Python za Web: šta mlađi treba da zna da bi radio i razvijao se

Glavne teme:

  • Koje znanje treba da uvježba programer početnik
    web razvoj?
  • Šta poslodavci očekuju od programera?
  • Šta učiniti da nađete posao bez iskustva?
  • Kako se Python programer može razviti?

Python Junior Podcast je programski podcast za one koji žele bolje razumjeti Python. Emisije provode evanđelisti zajednice MoscowPython i nastavnici kurseva Saznajte Python.

Učesnici razgovora:

  • Valentin Dombrovski,suosnivač MoscowPython-a
  • Zlata Obukhovskaya, NVIDIA timski vođa
  • Grigorij Petrov, evanđelista MoscowPython
  • Alexey Shtyrnyaev, programer u FinExu, predavač tečajeva učenja
    piton

Zašto je Python dobar za web razvoj

Valentin Dombrovski: Zašto je Python pogodan za web razvoj? Zašto ne PHP ili JavaScript, na primjer?

Grigorij Petrov: Tako da nema puno izbora. Unatoč činjenici da u modernom Webu zapravo možete napraviti jednostraničnu aplikaciju ili progresivnu web aplikaciju bez pozadine – čisto koristeći front-end tehnologije, koristeći JavaScript – i dalje je previše komplikovano, loše indeksirano i zahtijeva cool programere.

Ako želimo napraviti web stranicu ili uslugu, koristimo kombinirani pristup: neki backend implementira logiku i kreira web stranice, a neki frontend crta ove web stranice u pretraživaču. A kada moramo sve to brzo spojiti na nešto, zapravo nemamo izbora.

Pogledajmo moguće opcije.

  • C#. Microsoft je stvarno super, napravili su .NET Core i promovišu ga na sve moguće načine. Ali, prvo, ovo je nova cross-platform tehnologija i tu još nije sve glatko. Drugo, zaista je skup, ima malo C# programera - jednostavno zato što je nepopularan.
  • Java. Komplikovano je. Izrada normalne web stranice u Javi ne zahtijeva 10 linija koda, kao u Pythonu. Ovo je mnogo koda, ovo su okviri i morate znati specifičnosti postavljanja Java servera. Općenito, kontinuirani bol i patnja.
  • PHP. U najnovijim verzijama je divno. Reći ću čak i ovo: PHP 7.2 nije ništa lošiji od Pythona. Ali ne možete samo uzeti i koristiti PHP 7.2. Ako običan, a ne vrhunski programer napravi web stranicu na PHP-u, neće pisati samo u 7.2: morat će i dalje čitati neke udžbenike, tutorijale, svuda ima puno naslijeđenog koda, a ovo nije baš dobro.
  • JavaScript i Node.js. Divno je i veoma moderno kada postoji jedan jezik i na front-endu i na back-endu. Samo nije baš stabilan. Node.js je dobra stvar, ali je problematično implementirati ga u produkciju kako se ne bi rušio i stabilno radio. Osim toga, ako želimo napisati kvalitetan JavaScript kod, ne treba nam JavaScript, već TypeScript. Ali TypeScript je neočekivano složen i mozak prosječnog programera ključa kada ga vide.

Izostavimo Ruby, Haskell, Erlang i druge nišne stvari, i ostaje nam... Python. Jezik sa konzistentnom sintaksom, jedinstvenom standardnom bibliotekom, najboljom dokumentacijom, popularnim laganim okvirima i mega-popularni Django kombinacijom.

Ispada da, uprkos najširem izboru, ako imamo obične, a ne vrhunske programere, mi smo običan biznis koji želi da pravi obične web stranice, nemamo razvojni odjel za 50 ljudi, onda uzimamo Python.

Koja znanja su potrebna za ulazak u profesiju?

Zlata Obuhovskaja: Vjerujem da treba dobro poznavati jedan okvir – i znati šta drugi postoje i kada se koriste. Gdje je Tornado, gdje je Django, gdje je Flask, gdje je aiohttp i tako dalje.
Biće korisno znati da postoji takva stvar kao što su protokoli. Konkretno, poznavanje http protokola je centralno za izgradnju web aplikacija.

Također morate barem otprilike razumjeti kako front end radi u web projektima: šta je HTML, CSS, JS.

Alexey Shtyrnyaev: I znati gdje je dokumentacija. To je najvažnije.

Grigorij Petrov: Ovdje stupamo na vrlo klimavo tlo. Ako nemamo sreće i nekako počnemo ozbiljno proučavati moderni frontend, onda će on biti oko 10 puta komplikovaniji od backenda u Pythonu. Programer početnik treba da ograniči svoj fokus kako bi mogao da počne da uči HTML, ali da se ne izgubi u svim tim divovima, rasponima, plutanjima, kako je sve usklađeno i poređano.

Alexey Shtyrnyaev: Potreban je osnovni kurs za Bootstrap. I osnove HTML-a.

U prvoj godini ne biste trebali ulaziti u JS okvire (ako se fokusirate na backend). Osnovni Bootstrap kurs već ima gotove module: ako želite klizač, napravite klizač; ako želite plutajući meni, napravite plutajući meni.

Zlata Obuhovskaja: Mislim da dok proučavate frontend, možete se posebno uroniti u to kako se statika općenito daje web aplikacijama. Dakle, programer glatko prelazi na početak učenja kako arhitektura web aplikacija u principu funkcionira i kako žive u proizvodnji.

Grigorij Petrov: Da, odmah ću ga preporučiti u slučaju da ste odabrali Python kao backend razvojni jezik i, na primjer, Django kao okvir: Django ima dokumentaciju u Django Book-u, stvarno je cool, sadrži sve što je Zlata rekla, ona stvarno dobro za pocetnike.

Alexey Shtyrnyaev: Neke Django Girls su također pogodne za brzi početak ako je vaš cilj naučiti Django. Ovo je tutorijal u kojem u jednom danu možete prijeći preko vrha, razumjeti osnove i za šta je okvir sposoban.

Valentin Dombrovski: Pripremajući se za snimanje podcasta, sastavili smo listu onoga što je Python programeru potrebno za web razvoj, koja rezimira ono što smo ranije rekli.

Šta je uključeno u osnove za web razvoj u Pythonu

  • Web okviri Django, Flask, aiohttp, Tornado, itd. (i znaju za postojanje drugih).
  • Protokoli i API-ji: prvenstveno http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM i migracije, relacijske baze podataka, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Osnove HTML-a, CSS-a, Bootstrapa, kao i JS okvira i JQueryja.
  • Principi rada aplikacija u proizvodnji, testiranje, jedinični testovi, autotestovi, sistemi kontrole verzija, git.

Da li su juniorima potrebni algoritmi?

Zlata Obuhovskaja: U početku ne morate znati algoritme; oni će se postepeno pojaviti u vašoj glavi ako se dovoljno dugo bavite razvojem. Poznajem gomilu dobrih inženjera koji nisu imali dobar kurs formalnih algoritama.

Grigorij Petrov: Želim doliti ulje na vatru. Odakle dolazi naša žudnja za algoritmima?

Trenutno nemamo osnovno obrazovanje iz algoritama, ne znamo kako da obučimo programere, nemamo tehničku bazu.

Oni to pokušavaju, ali ovdje imamo priču o Hogwartsu: ne možemo stvoriti školu za čarobnjake dok nemamo niti jednog čarobnjaka. Dakle, šta univerzitet treba da uradi kada im dođu i pitaju: „Počnite da obučavate programere“, a oni nemaju programere, jer svi rade na Mail.ru, Rambleru i Yandexu, jesu li srećni tamo?

Univerzitet gleda i kaže:
- Ok, programiranje. Nađimo neku srodnu oblast znanja i odatle pozovimo stručnjake. Pozovimo novinare koji znaju pisati, elektroinženjere koji mogu napraviti električna kola i matematičare koji znaju koristiti algoritme.

Na kraju se ispostavi da je ovo jednako praktično kao i podučavanje graditelja fizike čestica samo zato što su cigla i cement napravljeni od elementarnih čestica.

Istovremeno, oni sami ne govore o cementu i cigli, jer fizičar koji pokušava da obuči građevinara ne zna da gradi kuće. Kao rezultat, dobijamo graditelja koji je u stanju da savršeno opiše kako „cement funkcioniše“, ali ga nikada nije video i ne zna kako da napravi bilo šta od njega.

Algoritmi i strukture podataka su vrlo dobri, ali ovo je vrlo mala oblast primjene. Hitno su potrebni, na primjer, ako pišete motor za igre, kompajler ili mrežni protokol.

Većina programera rješava poslovne probleme gdje algoritmi i strukture podataka nisu potrebni.

Najteža matematika tamo je sabiranje dva puta, a zatim dijeljenje. To zahtijeva potpuno drugačija znanja. Rješavanje poslovnih problema zahtijeva uglavnom primijenjena, a ne temeljna znanja.

Bolje je da programer početnik razumije posao i kako pravilno i brzo sastaviti potrebne strukture iz gotovih blokova, kako ih otkloniti, kako osigurati da se ne raspadaju, znaju zašto se raspadaju, šta se dešava kada se promijene zahtjevi i program počne da se "slegne na temelje" kao kuća nakon kiše.
Ovo su praktične stvari i razumijevanje kako pisati softver. On treba da zna da pored debagera ima i set alata koji će tačno pokazati gde se program usporava.

Valentin Dombrovski: Palo mi je na pamet ovo poređenje: ovo je prijevod sa poslovnog jezika na jezik na kojem možete komunicirati s kompjuterom. Odnosno, programer je vrsta specifičnog lingvista.

Grigorij Petrov: Posao treba pisac, a ne lingvista. Pisac ne mora znati zašto je prije hiljadu godina ova riječ pretvorena u ovo. On mora biti u stanju primijeniti ove riječi.

Šta vam je potrebno da pronađete svoj prvi posao kao programer

Alexey Shtyrnyaev: Vjerovatno ne postoji univerzalni recept za kuhanje juniora.

Ako dođete u neku firmu, oni će vas zaposliti ne zato što poznajete Django, JSON i nekoliko algoritama. Najvjerovatnije ćete biti angažovani za vještine koje su potrebne ovoj kompaniji ovdje i sada.

Postoji mnogo kompanija i sve imaju različite zahtjeve. Ne postoji takva univerzalna količina znanja koju je potrebno steći da bi se dalje pripremio životopis i otišao naći posao.

Grigorij Petrov: Kada smo u VoxImplantu tražili nekoliko inženjera, naš tehnički direktor je formulisao osnovni zahtev na sledeći način: osoba mora biti sposobna da rešava probleme. Jasno je da junior to neće uvijek raditi efikasno, ne na najbolji način i ne uvijek ispravno, ali idealno je da čovjeku date zadatak, on se napreže i riješi. Ovo je vještina koju poslodavci prvenstveno traže.

Zlata Obuhovskaja: Ljudi koji traže posao iz drugih oblasti imaju neku prednost u poslovnom smislu jer su već prošli neki put i sposobni su brzo rješavati probleme. To su meke vještine, ja bih to čak nazvao radnom kulturom. Često diplomirani studenti još nisu razvili ovu radnu kulturu.

Ali ipak bih volio da pokušam dati neki recept početnicima.

Prvi koraci za početnika programera

Zlata Obuhovskaja: Prvi je da je ovo još uvijek neka vrsta vašeg projekta, jer morate nešto napisati u svoj životopis i pokazati minimalan portfolio. Kul je kada ovi projekti nisu napravljeni za vas, već kao freelance projekat - za nekoga.

Već nakon prvih projekata možete napraviti životopis i poslati ga svim kompanijama u kojima postoje junske pozicije. Intervjui će pružiti uvid u ono što kompanijama treba. Prije ili kasnije će vas neko zaposliti, barem u maloj firmi. Nakon toga, ovo radno iskustvo će vam dati priliku da uđete u veću i zanimljiviju kompaniju.

Valentin Dombrovski: Inače, na našim kursevima pripremamo polaznike da imaju svoj projekat u roku od 10 sedmica obuke. Osim toga, treniramo vještine razvoja tima. Upravo o ovim mekim veštinama govorila je Zlata.

Alexey Shtyrnyaev: Iz iskustva vam mogu reći da može potrajati jako dugo da tražite svoj prvi posao. Kada tražite mesec ili dva, to je normalno. Ako svoj životopis predate svim kompanijama, idete na intervjue, u trećem mjesecu ćete sigurno nešto pronaći.

Valentin Dombrovski: Možete izrezati vlastite projekte ili preuzeti jednostavne slobodne projekte i istovremeno poslati svoj životopis.

Kakve izglede ima Python programer?

Zlata Obuhovskaja: Python programer može ići bilo gdje. Možete krenuti u testiranje i nastaviti razvoj do starijeg arhitekte. Ili čak u menadžment. Postoje različite vrste tehničkih menadžera, a vi možete prerasti do najvišeg menadžmenta. Možete se razvijati u nauci o podacima, DevOps-u, ući u automatsko testiranje ili mašinsko učenje.

Valentin Dombrovski: Općenito, postoji mnogo opcija i mogućnosti, uključujući naše kurseve. Ne treba vam puno znanja na ulazu, ali je poželjno da tada pokrijete širi raspon, jer što više možete, to bolje za vas.

***

Ovo je samo dio izdanja Python Junior. Puna verzija epizode je dostupna slušaj.

Ili čak pogledajte:

Reprodukujte video

Podcast RSS

Hvala na čitanju, slušanju ili gledanju.

izvor: www.habr.com

Dodajte komentar