Python za web: što treba znati junior programer da bi radio i napredovao

Napravili smo skraćenu transkripciju s glavnim mislima iz Python Junior Podcasta: razgovarali smo o tome odakle početi i gdje se usmjeriti kao početni programer u Pythonu. U posljednje vrijeme imamo puno sadržaja za srednje i senior programere, ali ova epizoda je sigurno za juniore.

Python za web: što treba znati junior programer da bi radio i napredovao

Glavne teme:

  • Koje su vještine potrebne početnom programeru za
    web razvoj?
  • Što poslodavci očekuju od programera?
  • Što učiniti da pronađete posao bez iskustva?
  • Kako se može razvijati Python programer?

Python Junior Podcast — podcast o programiranju za one koji žele bolje razumjeti Python. U emisijama sudjeluju evanđelisti zajednice MoscowPython i predavači tečajeva Learn Python.

U razgovoru su sudjelovali:

  • Valentin Dombrovski,suosnivač MoscowPython-a
  • Zlata Obukhovska, team lead u NVIDIA-i
  • Grigorij Petrov, evanđelista MoscowPython-a
  • Aleksij Štyrnajev, programer u FinEx-u, predavač tečajeva Learn
    Python

Zašto je Python dobar za web razvoj

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

Grigorij Petrov: Pa, zapravo nemamo puno izbora. Iako se u modernom webu može raditi praktički bez backenda — čisto koristeći frontend tehnologije, na JavaScriptu — da bismo izgradili single page application ili progressive web application, to je i dalje previše složeno, loše se indeksira i zahtijeva talentirane programere.

Ako želimo napraviti stranicu ili servis, koristimo kombinirani pristup: imamo neki backend koji obavlja logiku i stvara web stranice, a neki frontend prikazuje te web stranice u pregledniku. A kad trebamo brzo sve to sastaviti, nemamo puno izbora.

Pogledajmo moguće opcije.

  • C#. Microsoft je doista izvrstan, napravili su .NET Core i aktivno ga promoviraju. Ali, prvo, to je nova cross-platform tehnologija, i tamo još ništa nije savršeno. Drugo, to je stvarno skupo, programera C# ima malo — jednostavno zato što nije popularan.
  • Java. To je komplicirano. Napraviti normalnu stranicu na Javi nije 10 linija koda, kao na Pythonu. To je jako puno koda, tu su okviri, i trebate poznavati specifičnosti postavljanja Java servera. Ukratko, samo bol i patnja.
  • PHP. U posljednjim verzijama je sjajan. Čak bih rekao: PHP 7.2 nije lošiji od Pythona. No, ne možete jednostavno uzeti i koristiti PHP 7.2. Ako običan, ne najkompetentniji programer pravi web stranicu u PHP-u, neće pisati samo u 7.2: svejedno će morati čitati neke knjige, tutorijale, posvuda je gomila legacy koda, a to nije baš dobro.
  • JavaScript i Node.js. To je sjajno i vrlo moderno, kada se jedan jezik koristi i na frontendu i na backendu. Samo nije baš stabilno. Node.js je dobra stvar, ali problematično je postaviti ga u produkciji tako da ne padne i da radi stabilno. Plus, ako želimo pisati kvalitetan kod u JavaScriptu, potrebni su nam ne JavaScript, već TypeScript. A TypeScript je iznenađujuće složen, pri njegovom pogledu običnom programeru 'kipte mozak'.

Preskočimo Ruby, Haskell, Erlang i druge nišne stvari, i ostaje nam… Python. Jezik s dosljednom sintaksom, ujednačenom standardnom bibliotekom, najboljom dokumentacijom, popularnim laganim frameworkovima, megapopularnim 'kombajnom' Django.

Ispada da, unatoč širokom izboru, ako imamo obične, ne najkompetentnije programere, mi smo običan biznis koji želi praviti obične web stranice, nemamo odjel za razvoj od 50 ljudi, onda uzimamo Python.

Koja znanja su potrebna za ulazak u profesiju

Zlata Obukhivska: Mislim da jedan framework treba dobro poznavati — i znati koji još 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 takva stvar kao protokoli. Konkretno, poznavanje HTTP protokola je centralno za izgradnju web aplikacija.

Također treba barem otprilike imati predstavu o tome kako su organizirani frontend web projekti: što je HTML, CSS, JS.

Aleksej Štyrnajev: I znati gdje se nalazi dokumentacija. To je najvažnije.

Grigorij Petrov: Ovde stajemo na vrlo nestabilno tlo. Ako nam se nije posrećilo i počeli smo ozbiljno učiti savremeni frontend, on će biti otprilike 10 puta složeniji od backenda na Pythonu. Početniku programeru potrebno je ograničiti fokus tako da počne učiti HTML, ali da ne upadne u sve te div, span, float, kako se sve poravnava i konstruira.

Aleksej Štyrnajev: Potreban je osnovni kurs iz Bootstrapa. I osnove HTML-a.

U prvoj godini ne treba se previše usredotočiti na JS frejmove (ako se fokusirate na backend). U osnovnom tečaju za Bootstrap već postoje gotovi moduli: želiš slider — napravi slider, želiš plutajući izbornik — napravi plutajući izbornik.

Zlata Obukhivska: Mislim da se u proučavanju frontend-a može ući, posebno u to kako se uopće statika isporučuje web aplikacijama. Tako se programer glatko prelazi na upoznavanje s tim kako je u načelu arhitektura web aplikacija i kako žive u produkciji.

Grigorij Petrov: Da, preporučujem odmah u slučaju da ste odabrali Python kao jezik za backend razvoj i, recimo, Django kao frejmove: Django ima dokumentaciju u Django Book, stvarno je sjajna, sadrži sve o čemu je Zlata govorila, stvarno je dobra za početnike.

Aleksej Štyrnajev: Također, za brzi start može poslužiti neki Django Girls, ako je cilj učiti upravo Django. To je tutorijal gdje se može kroz jedan dan proći kroz osnove, shvatiti osnove i što sve frejmovi mogu učiniti.

Valentin Dombrovski: Pripremajući se za snimanje podcasta, sastavili smo popis onoga što programeru na Pythonu treba za web razvoj, kojim rezimiramo ranije rečeno.

Što čini osnovu za web razvoj na Pythonu

  • Web frejmove Django, Flask, aiohttp, Tornado i dr. (i znati o postojanju ostalih).
  • Protokoli i API: prvenstveno http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM i migracije, relacijske baze podataka, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Osnove HTML, CSS, Bootstrap, kao i JS frejmovi i JQuery.
  • Principi rada aplikacija u produkciji, testiranje, unit testovi, automatski testovi, sustavi kontrole verzija, git.

Treba li junioru poznavati algoritme

Zlata Obukhivska: Na početku nije potrebno poznavati algoritme, oni će se sami polako pojaviti u mislima ako se razvijate dovoljno dugo. Poznajem mnoštvo dobrih inženjera koji nisu prošli dobre formalne tečajeve o algoritmima.

Grigorij Petrov: Želim dodati ulje na vatru. Odakle zapravo dolazi naša sklonost prema algoritmima?

Trenutno nemamo temeljno obrazovanje o algoritmima, ne znamo obučavati programere, nema tehničke osnovice.

To je ono što pokušavamo napraviti, ali ovdje imamo priču o Hogwartsu: ne možemo osnovati školu čarobnjaštva dok nemamo nijednog čarobnjaka. Što stoga učiniti sveučilištu koje dolaze i traže: „Počnite obučavati programere“, a programera nemaju, jer svi rade u Mail.ru, Rambleru i Yandexu, jer im je tamo dobro?

Na sveučilištu gledaju i kažu:
— U redu, programiranje. Hajde da pronađemo neku srodnu područje znanja i pozovemo stručnjake odatle. Pozovimo novinare koji znaju pisati tekst, elektroinženjere koji znaju raditi električne sheme i matematičare koji znaju algoritme.

Na kraju dobijemo da je to jednako razmjerno kao educirati graditelja o fizici elementarnih čestica samo zato što su cigla i cement sastavljeni od elementarnih čestica.

Pri tome se o samom cementu i cigli ne govori, jer fizičar koji pokušava educirati graditelja ne zna kako graditi kuće. Na kraju dobijemo graditelja koji može odlično opisati kako „funkcionira cement“, ali nikada ga nije vidio i ne zna kako napraviti ništa od njega.

Algoritmi i strukture podataka — to je vrlo dobro, ali to je vrlo malo primjenjivo područje. Oni su oštro potrebni, na primjer, kada pišeš gameski engine, kompajler, mrežni protokol.

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

Tamo je najkompliciranija matematika — zbrojiti dva puta, a onda podijeliti. Tamo su potrebna posve druga znanja. Za rješavanje poslovnih zadataka potrebna su, uglavnom, aplikativna, a ne fundamentalna znanja.

Početnom programeru bolje je imati predstavu o poslu i o tome kako ispravno i brzo sastavljati potrebne konstrukcije od gotovih blokova, kako ih debagirati, kako ih napraviti da se ne raspadaju, znati zašto se raspadaju, što se događa kada se zahtjevi mijenjaju i program počne „sjediti na temeljima“, poput kuće nakon kiše.
Ove aplikativne stvari i razumijevanje kako pisati softver. Treba znati da osim debagera ima skup alata koji će pokazati gdje točno program koči.

Valentin Dombrovski: Usporedba koja mi pada na pamet je: to je prijevod s jezika poslovanja na jezik kojim se može komunicirati s računalom. Drugim riječima, programer je poput specifičnog lingvista.

Grigorij Petrov: Poslovanju je potreban pisac, a ne lingvist. Pisar ne mora znati zašto se prije tisuću godina ta riječ transformirala u ovo. On treba znati primijeniti te riječi.

Što je potrebno da bi se pronašao prvi posao kao programer?

Aleksej Štyrnajev: Vjerojatno ne postoji univerzalni recept kako pripremiti juniorskog programera.

Ako dođete u neku kompaniju, neće vas zaposliti samo zato što znate Django, JSON i malo algoritama. Vjerojatno će vas zaposliti zbog onih vještina koje su trenutno potrebne toj kompaniji.

Postoji mnogo kompanija i svaka ima različite zahtjeve. Ne postoji univerzalni skup znanja koji treba steći prije nego što pripremite životopis i krenete u zapošljavanje.

Grigorij Petrov: Kada smo u VoxImplantu tražili nekoliko juniorskih programera, naš tehnički direktor je osnovni zahtjev formulirao ovako: osoba treba biti sposobna rješavati zadatke. Jasno je da juniorku to neće uvijek raditi učinkovito, ne najboljim načinom i ne uvijek točno, ali idealno je da postavite zadatak, a on se potrudi i riješi ga. To je vještina koju poslodavci traže kao prioritet.

Zlata Obukhivska: Ljudi koji traže posao prelaskom iz drugih područja imaju određenu prednost s poslovnog gledišta, jer su već prošli neki put i brže rješavaju zadatke. To su meke vještine, nazvala bih to čak i radnom kulturom. Često kod diplomaca visokoškolskih ustanova ta radna kultura još nije razvijena.

No, željela bih pokušati dati neki recept za početnike.

Prvi koraci za početnog programera

Zlata Obukhivska: Prvo — trebao bi imati neki svoj projekt, jer je u životopisu potrebno nešto napisati i pokazati minimalno portfelj. Još je bolje kada su ti projekti rađeni ne za sebe, već kao freelance — za nekoga.

Nakon prvih projekata, već možete napraviti životopis i poslati ga svim kompanijama koje imaju juniorske pozicije. Intervjui će dati uvid u ono što kompanijama treba. Pr sooner or later, netko će vas zaposliti, barem u malu kompaniju. Kasnije će to radno iskustvo omogućiti da dođete u neku veću i zanimljiviju firmu.

Valentin Dombrovski: Usput, na tečajevima pripremamo učenike da razviju vlastiti projekt tijekom 10 tjedana učenja. Također vježbamo vještine timskog rada. To su upravo one softverske vještine o kojima je govorila Zlata.

Aleksej Štyrnajev: Iz iskustva mogu reći da je pronalaženje prvog posla često dug proces. Kada tražite mjesec ili dva — to je normalno. Ako šaljete životopise svim tvrtkama i odlazite na razgovore, trećeg mjeseca sigurno ćete pronaći nešto.

Valentin Dombrovski: Možete raditi na svojim projektima ili preuzeti jednostavne projekte na freelancu, a istovremeno slati životopise.

Koje su mogućnosti za Python developera

Zlata Obukhivska: Python developer može ići bilo gdje. Može se prebaciti u testiranje, nastaviti se razvijati do senior arhitekta. Ili čak u menadžment. Tehnički menadžeri su različiti, i možete napredovati do vrhunskog menadžmenta. Možete se razvijati u data science, DevOps, preći u automatsko testiranje ili strojno učenje.

Valentin Dombrovski: Ukratko, postoji mnoštvo opcija i mogućnosti, uključujući naše tečajeve. Na početku nije potrebno mnogo znanja, ali dobro bi bilo kasnije obuhvatiti širi spektar, jer što više znate, to je bolje za vas.

***

To je samo dio izdanja Python Junior. Cjelovitu verziju epizode možete poslušati.

Ili čak pogledati:

Pogledajte video

RSS podkasta

Hvala što ste pročitali, poslušali ili pogledali.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster