Python za web: što junior treba znati za rad i razvoj

Napravili smo kratki prijepis s glavnim mislima iz Python Junior Podcasta: u njemu smo raspravljali o tome gdje početi i kamo ići kao Python programer početnik. U posljednje vrijeme imamo dosta sadržaja za srednje i starije, ali ova epizoda je definitivno za juniore.

Python za web: što junior treba znati za rad i razvoj

Glavne teme:

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

Python Junior Podcast je programski podcast za one koji žele bolje razumjeti Python. Emitiranje vode evangelizatori zajednice MoskvaPython i profesori kolegija Naučite Python.

Sudionici razgovora:

  • Valentin Dombrovski,suosnivač MoscowPythona
  • Zlata Obukhovskaya, Voditelj NVIDIA tima
  • Grigorij Petrov, evanđelista MoskvaPython
  • Aleksej Štirnjajev, programer u FinExu, predavač Learn tečajeva
    Piton

Zašto je Python dobar za web razvoj

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

Grigorij Petrov: Tako da nema puno izbora. Unatoč činjenici da na modernom webu zapravo možete izgraditi jednostraničnu aplikaciju ili progresivnu web aplikaciju bez pozadine - čisto koristeći front-end tehnologije, koristeći JavaScript - to je još uvijek previše komplicirano, slabo 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 iscrtava te web stranice u pregledniku. A kada trebamo sve to brzo sastaviti na nešto, zapravo nemamo izbora.

Pogledajmo moguće opcije.

  • C#. Microsoft je stvarno super, napravili su .NET Core i promoviraju ga na sve moguće načine. Ali, prvo, ovo je nova tehnologija na više platformi i tu još nije sve glatko. Drugo, jako je skup, malo je C# programera - jednostavno zato što je nepopularan.
  • Java. Komplicirano je. Za izradu normalne web stranice u Javi nije potrebno 10 redaka koda, kao u Pythonu. Ovo je puno koda, ovo su okviri i morate znati specifičnosti postavljanja Java poslužitelja. Općenito, stalna bol i patnja.
  • PHP. U najnovijim verzijama je divan. Reći ću čak i ovo: PHP 7.2 nije ništa gori od Pythona. Ali ne možete samo uzeti i koristiti PHP 7.2. Ako običan, a ne vrhunski programer napravi web stranicu u PHP-u, neće pisati samo u 7.2: i dalje će morati čitati neke udžbenike, tutorijale, posvuda ima puno naslijeđenog koda, a to nije baš dobro.
  • JavaScript i Node.js. Divno je i vrlo moderno kada postoji jedan jezik i na front-endu i na backendu. Samo nije baš stabilan. Node.js je dobra stvar, ali ga je problematično implementirati u produkciju da se ne ruši i da radi stabilno. Osim toga, ako želimo napisati kvalitetan JavaScript kod, ne treba nam JavaScript, već TypeScript. Ali TypeScript je neočekivano složen, a prosječnom developeru mozak proključa kad ga vidi.

Izostavimo Ruby, Haskell, Erlang i druge niche stvari, i ostaje nam... Python. Jezik s dosljednom sintaksom, jedinstvenom standardnom bibliotekom, najboljom dokumentacijom, popularnim laganim okvirima i megapopularnom Django kombinacijom.

Ispada da, unatoč najvećem izboru, ako imamo obične, a ne vrhunske programere, mi smo običan biznis koji želi raditi obične web stranice, nemamo razvojni odjel za 50 ljudi, onda uzimamo Python.

Koja su znanja potrebna za ulazak u zanimanje?

Zlata Obukhovskaya: Vjerujem da morate dobro poznavati jedan okvir – i znati koji drugi postoje i kada se koriste. Gdje je Tornado, gdje je Django, gdje je Flask, gdje je aiohttp i tako dalje.
Bit će korisno znati da postoji nešto poput protokola. Konkretno, poznavanje http protokola ključno je za izradu web aplikacija.

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

Aleksej Štirnjajev: I znati gdje je dokumentacija. Najvažnije je.

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 kompliciraniji od backenda u Pythonu. Programer početnik treba ograničiti svoj fokus kako bi mogao početi učiti HTML, ali ne izgubiti se u svim tim divovima, rasponima, lebdećim elementima, kako je sve poravnato i poredano.

Aleksej Štirnjajev: Trebam osnovni Bootstrap tečaj. I osnove HTML-a.

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

Zlata Obukhovskaya: Mislim da dok proučavate sučelje, možete uroniti posebno u to kako se web aplikacijama općenito daje statika. Tako razvojni programer glatko prelazi na početak učenja kako arhitektura web aplikacija funkcionira u načelu i kako žive u proizvodnji.

Grigorij Petrov: Da, odmah ga preporučujem ako ste odabrali Python kao backend razvojni jezik i npr. Django kao okvir: Django ima dokumentaciju u Django knjizi, stvarno je super, sadrži sve što je Zlata rekla, stvarno je dobar za početnika.

Aleksej Štirnjajev: Neke Django djevojke također su prikladne za brzi početak ako vam je cilj naučiti Django. Ovo je vodič u kojemu u jednom danu možete prijeći sve, razumjeti osnove i za što je okvir sposoban.

Valentin Dombrovski: U pripremi za snimanje podcasta, sastavili smo popis onoga što Python programer treba za web razvoj, koji sažima ono što smo rekli ranije.

Što 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, međuspremnici protokola, gRPC.
  • ORM i migracije, relacijske baze podataka, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Osnove HTML-a, CSS-a, Bootstrapa, kao i JS framework-a i JQuery-ja.
  • Principi rada aplikacije u proizvodnji, testiranje, jedinični testovi, autotestovi, sustavi kontrole verzija, git.

Trebaju li juniori algoritme?

Zlata Obukhovskaya: U početku ne morate znati algoritme; oni će se postupno pojaviti u vašoj glavi ako se dovoljno dugo bavite razvojem. Poznajem hrpu dobrih inženjera koji nisu prošli dobar formalni tečaj algoritama.

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

Trenutno nemamo temeljno algoritamsko obrazovanje, ne znamo osposobiti 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, što sveučilište treba učiniti kada im dođu i pitaju: "Počnite obučavati programere", ali oni nemaju programere, jer svi rade na Mail.ru, Rambleru i Yandexu, jesu li sretni tamo?

Sveučilište gleda i kaže:
- Dobro, programiranje. Pronađimo neko srodno područje znanja i pozovimo stručnjake odatle. Pozovimo novinare koji znaju pisati, inženjere elektrotehnike koji znaju napraviti strujne krugove i matematičare koji znaju koristiti algoritme.

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

U isto vrijeme, oni ne govore o cementu i ciglama, jer fizičar koji pokušava obučiti građevinara ne zna graditi kuće. Kao rezultat, dobili smo građevinara koji je u stanju savršeno opisati kako "cement radi", ali ga nikada nije vidio i ne zna kako od njega napraviti ništa.

Algoritmi i strukture podataka su vrlo dobri, ali ovo je vrlo malo područje primjene. Oni su hitno potrebni, na primjer, ako pišete motor igre, kompajler ili mrežni protokol.

Većina programera rješava poslovne probleme u kojima algoritmi i podatkovne strukture nisu potrebni.

Najteža matematika je dvaput zbrajanje pa dijeljenje. Za to su potrebna sasvim druga 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 raspadnu, znaju zašto se raspadaju, što se događa kada se zahtjevi promijene i program počne "slijegati na temelje" kao kuća poslije kiše.
To su praktične stvari i razumijevanje kako napisati softver. Mora znati da osim debuggera ima skup alata koji će točno pokazati gdje program usporava.

Valentin Dombrovski: Pala mi je na pamet ova usporedba: ovo je prijevod s poslovnog jezika na jezik na kojem se može komunicirati s računalom. Odnosno, programer je svojevrsni specifični lingvist.

Grigorij Petrov: Posao treba pisca, a ne jezikoslovca. Pisac ne mora znati zašto je prije tisuću godina ova riječ pretvorena u ovo. Mora znati primijeniti ove riječi.

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

Aleksej Štirnjajev: Vjerojatno ne postoji univerzalni recept kako kuhati junior.

Ako dođete u neku firmu, zaposlit će vas ne zato što znate Django, JSON i par algoritama. Najvjerojatnije ćete biti angažirani za vještine koje ova tvrtka treba ovdje i sada.

Postoji mnogo tvrtki i sve imaju različite zahtjeve. Ne postoji takva univerzalna količina znanja koju je potrebno steći da bi se dalje pripremao životopis i išlo tražiti posao.

Grigorij Petrov: Kada smo mi u VoxImplantu tražili nekoliko inženjera, naš tehnički direktor formulirao je osnovni zahtjev na sljedeći način: osoba mora biti sposobna rješavati probleme. Jasno je da junior to neće uvijek učiniti učinkovito, ne na najbolji način i ne uvijek ispravno, ali idealno je da čovjeku daš zadatak, on se napregne i riješi. To je vještina koju poslodavci prvenstveno traže.

Zlata Obukhovskaya: Ljudi koji traže posao iz drugih područja imaju neku poslovnu prednost jer su već prošli neki put i sposobni su brzo riješiti probleme. To su meke vještine, čak bih to nazvao kulturom rada. Često studenti sa sveučilišnom diplomom još nisu razvili ovu radnu kulturu.

Ali ipak bih želio pokušati dati nekakav recept početnicima.

Prvi koraci za programera početnika

Zlata Obukhovskaya: Prvi je da je to ipak nekakav vlastiti projekt, jer treba nešto napisati u životopisu i pokazati minimalni portfolio. Cooler je kad te projekte ne radiš za sebe, nego kao freelance projekt - za nekoga.

Nakon prvih projekata već možete napraviti životopis i poslati ga svim tvrtkama u kojima postoje junske pozicije. Intervjui će pružiti uvid u ono što tvrtkama treba. Prije ili kasnije netko će vas zaposliti, makar u maloj firmi. Naknadno će vam ovo radno iskustvo pružiti priliku da uđete u veću i zanimljiviju tvrtku.

Valentin Dombrovski: Usput, na našim tečajevima pripremamo studente da imaju vlastiti projekt unutar 10 tjedana obuke. Osim toga, treniramo vještine razvoja tima. Upravo su to meke vještine o kojima je govorila Zlata.

Aleksej Štirnjajev: Iz iskustva vam mogu reći da traženje vašeg prvog posla može trajati jako dugo. Kad tražite mjesec ili dva, to je normalno. Ako životopis pošalješ svim tvrtkama, ideš na razgovore, u trećem mjesecu ćeš sigurno nešto pronaći.

Valentin Dombrovski: Možete izraditi vlastite projekte ili prihvatiti jednostavne samostalne projekte i istovremeno poslati svoj životopis.

Kakve izglede ima Python programer?

Zlata Obukhovskaya: Python programer može ići bilo gdje. Možete krenuti u testiranje i nastaviti s razvojem do višeg arhitekta. Ili čak u menadžment. Postoje različite vrste tehničkih menadžera, a možete narasti do najvišeg menadžmenta. Možete se razvijati u znanosti o podacima, DevOps-u, ići u automatizirano testiranje ili strojno učenje.

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

***

Ovo je samo dio objave Python Junior. Puna verzija epizode je dostupna slušati.

Ili čak pogledajte:

Reproduciraj videozapis

Podcast RSS

Hvala na čitanju, slušanju ili gledanju.

Izvor: www.habr.com

Dodajte komentar