Python za splet: kaj mora mladinec vedeti za delo in razvoj

Naredili smo kratek prepis z glavnimi mislimi iz podcasta Python Junior: v njem smo razpravljali, kje začeti in kam iti kot začetnik razvijalec Python. V zadnjem času imamo veliko vsebine za srednje in starejše, vendar je ta epizoda zagotovo za mlajše.

Python za splet: kaj mora mladinec vedeti za delo in razvoj

Glavne teme:

  • Kakšno znanje mora programer začetnik vaditi
    spletni razvoj?
  • Kaj delodajalci pričakujejo od razvijalcev?
  • Kaj storiti, da bi našli službo brez izkušenj?
  • Kako se lahko razvija razvijalec Pythona?

Python Junior Podcast je programski podcast za tiste, ki želijo bolje razumeti Python. Oddaje vodijo evangelisti skupnosti MoscowPython in učitelji tečajev Spoznajte Python.

Sodelujoči v pogovoru:

  • Valentin Dombrovski,soustanovitelj MoscowPython
  • Zlata Obukhovskaya, Vodja ekipe NVIDIA
  • Grigorij Petrov, evangelist MoscowPython
  • Aleksej Štirnjajev, razvijalec pri FinExu, učitelj tečajev Learn
    Python

Zakaj je Python dober za spletni razvoj

Valentin Dombrovski: Zakaj je Python primeren za spletni razvoj? Zakaj ne na primer PHP ali JavaScript?

Grigorij Petrov: Tako da ni veliko izbire. Kljub dejstvu, da lahko v sodobnem spletu dejansko zgradite enostransko aplikacijo ali progresivno spletno aplikacijo brez zaledja – zgolj z uporabo front-end tehnologij, z uporabo JavaScripta – je še vedno preveč zapleteno, slabo indeksirano in zahteva kul razvijalce.

Če želimo izdelati spletno stran ali storitev, uporabimo kombiniran pristop: neko zaledje izvaja logiko in ustvarja spletne strani, drugo pa izriše te spletne strani v brskalniku. In ko moramo vse na hitro sestaviti v nekaj, pravzaprav nimamo izbire.

Poglejmo si možne možnosti.

  • C#. Microsoft je res super, naredili so .NET Core in ga promovirajo na vse mogoče načine. Toda, prvič, to je nova tehnologija na več platformah in tam še ni vse gladko. Drugič, res je drago, razvijalcev C# je malo - preprosto zato, ker je nepriljubljeno.
  • Java. Zapleteno je. Izdelava običajnega spletnega mesta v Javi ne zahteva 10 vrstic kode, kot v Pythonu. To je veliko kode, to so okviri in poznati morate posebnosti nastavitve strežnikov Java. Na splošno stalna bolečina in trpljenje.
  • PHP. V zadnjih različicah je čudovito. Rekel bom celo to: PHP 7.2 ni nič slabši od Pythona. Vendar ne morete kar pobrati in uporabljati PHP 7.2. Če navaden, ne vrhunski razvijalec naredi spletno stran v PHP-ju, ne bo pisal samo v 7.2: še vedno bo moral prebrati nekaj učbenikov, vaj, povsod je veliko stare kode in to ni zelo dobro.
  • JavaScript in Node.js. Čudovito in zelo moderno je, če obstaja en jezik na sprednji in zadnji strani. Samo ni zelo stabilen. Node.js je dobra stvar, vendar ga je problematično namestiti v produkcijo, da se ne sesuje in deluje stabilno. Poleg tega, če želimo napisati kakovostno kodo JavaScript, ne potrebujemo JavaScripta, temveč TypeScript. Toda TypeScript je nepričakovano zapleten in povprečnemu razvijalcu zavrejo možgani, ko ga vidi.

Pustimo Ruby, Haskell, Erlang in druge nišne zadeve in ostane nam ... Python. Jezik z dosledno sintakso, enotno standardno knjižnico, najboljšo dokumentacijo, priljubljenimi lahkimi okviri in megapopularno kombinacijo Django.

Izkazalo se je, da kljub najširši izbiri, če imamo navadne, ne vrhunske razvijalce, smo navaden posel, ki hoče delati navadne spletne strani, nimamo razvojnega oddelka za 50 ljudi, potem vzamemo Python.

Kakšno znanje je potrebno za vstop v poklic?

Zlata Obukhovskaya: Menim, da morate dobro poznati en okvir - in vedeti, kateri drugi obstajajo in kdaj se uporabljajo. Kje je Tornado, kje je Django, kje je Flask, kje je aiohttp in tako naprej.
Koristno bo vedeti, da obstajajo protokoli. Zlasti poznavanje protokola http je osrednjega pomena za izdelavo spletnih aplikacij.

Prav tako morate vsaj približno razumeti, kako deluje front end v spletnih projektih: kaj je HTML, CSS, JS.

Aleksej Štirnjajev: In vedeti, kje je dokumentacija. To je najbolj pomembno.

Grigorij Petrov: Tu stopamo na zelo majava tla. Če nimamo sreče in se nekako resno lotimo preučevanja sodobnega frontenda, potem bo približno 10-krat bolj zapleten kot backend v Pythonu. Razvijalec začetnik mora omejiti svojo osredotočenost, da se lahko začne učiti HTML, vendar se ne izgubi v vseh teh divih, razponih, lebdečih, kako je vse poravnano in poravnano.

Aleksej Štirnjajev: Potrebujem osnovni tečaj Bootstrap. In osnove HTML.

V prvem letu se ne smete poglabljati v okvire JS (če se osredotočate na zaledje). Osnovni tečaj Bootstrap ima že pripravljene module: če želite drsnik, naredite drsnik, če želite plavajoči meni, naredite lebdeči meni.

Zlata Obukhovskaya: Mislim, da se lahko med preučevanjem frontenda poglobite predvsem v to, kako statika je na splošno dana spletnim aplikacijam. Na ta način razvijalec gladko začne spoznavati, kako arhitektura spletnih aplikacij načeloma deluje in kako živijo v produkciji.

Grigorij Petrov: Da, takoj ga priporočam, če ste izbrali Python kot backend razvojni jezik in na primer Django kot okvir: Django ima dokumentacijo v knjigi Django, res je kul, vsebuje vse, kar je rekla Zlata, res dobro za začetnika.

Aleksej Štirnjajev: Nekatere Django Girls so primerne tudi za hiter začetek, če je vaš cilj naučiti se Django. To je vadnica, v kateri lahko v enem dnevu preidete na vrh, razumete osnove in česa je zmožno ogrodje.

Valentin Dombrovski: V pripravah na snemanje podcasta smo sestavili seznam, kaj programer Pythona potrebuje za spletni razvoj, ki povzema, kar smo povedali prej.

Kaj je vključeno v osnove za spletni razvoj v Pythonu

  • Spletni okviri Django, Flask, aiohttp, Tornado itd. (in vedo za obstoj drugih).
  • Protokoli in API-ji: predvsem http, JSON-RPC, medpomnilniki protokolov, gRPC.
  • ORM in migracije, relacijske baze podatkov, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Osnove HTML, CSS, Bootstrap, kot tudi ogrodja JS in JQuery.
  • Principi delovanja aplikacij v produkciji, testiranje, enotni testi, samodejni testi, sistemi za nadzor različic, git.

Ali mladinci potrebujejo algoritme?

Zlata Obukhovskaya: Sprva vam ni treba poznati algoritmov, postopoma se bodo pojavili v vaši glavi, če se boste dovolj dolgo ukvarjali z razvojem. Poznam ogromno dobrih inženirjev, ki niso imeli dobrega formalnega tečaja algoritmov.

Grigorij Petrov: Želim priliti olja na ogenj. Od kod izvira naše hrepenenje po algoritmih?

Trenutno nimamo temeljne izobrazbe algoritmov, ne znamo usposobiti programerjev, nimamo tehnične baze.

To poskušajo narediti, a tukaj imamo zgodbo o Hogwartsu: ne moremo ustvariti šole za čarovnike, dokler nimamo niti enega čarovnika. Torej, kaj naj naredi univerza, ko pridejo k njim in vprašajo: "Začnite usposabljati programerje," pa nimajo programerjev, ker vsi delajo na Mail.ru, Rambler in Yandex, tam se dobro počutijo?

Univerza pogleda in reče:
- V redu, programiranje. Poiščimo sorodno področje znanja in od tam povabimo strokovnjake. Povabimo novinarje, ki znajo pisati, elektrotehnike, ki znajo sestavljati električna vezja, in matematike, ki znajo uporabljati algoritme.

Na koncu se izkaže, da je to tako praktično kot poučevanje gradbenika fizike delcev samo zato, ker sta opeka in cement narejena iz osnovnih delcev.

Hkrati pa ne govorijo o cementu in opeki sami, ker fizik, ki poskuša usposobiti gradbenika, ne ve, kako graditi hiše. Kot rezultat dobimo gradbenika, ki zna odlično opisati, kako »cement deluje«, vendar ga ni nikoli videl in ne ve, kako iz njega narediti ničesar.

Algoritmi in podatkovne strukture so zelo dobri, vendar je to zelo majhno področje uporabe. Nujno jih potrebujete, na primer, če pišete motor igre, prevajalnik ali omrežni protokol.

Večina programerjev rešuje poslovne probleme, kjer algoritmi in podatkovne strukture niso potrebni.

Najtežja matematika je dvakratno seštevanje in nato deljenje. Zahteva popolnoma drugačna znanja. Reševanje poslovnih problemov zahteva predvsem aplikativno in ne temeljno znanje.

Bolje je, da začetnik razvijalec razume posel in kako pravilno in hitro sestaviti potrebne strukture iz že pripravljenih blokov, kako jih odpraviti, kako zagotoviti, da ne razpadejo, vedeti, zakaj razpadejo, kaj se zgodi, ko se zahteve spremenijo in se program začne "posedati na temelje" kot hiša po dežju.
To so praktične stvari in razumevanje pisanja programske opreme. Vedeti mora, da ima poleg razhroščevalnika nabor orodij, ki bodo natančno pokazala, kje se program upočasnjuje.

Valentin Dombrovski: Na misel mi je padla ta primerjava: to je prevod iz poslovnega jezika v jezik, v katerem se lahko sporazumevaš z računalnikom. Se pravi, programer je nekakšen specifičen jezikoslovec.

Grigorij Petrov: Posel potrebuje pisatelja, ne jezikoslovca. Piscu ni treba vedeti, zakaj se je ta beseda pred tisoč leti preoblikovala v to. Te besede mora znati uporabiti.

Kaj potrebujete za prvo zaposlitev kot razvijalec

Aleksej Štirnjajev: Verjetno ni univerzalnega recepta, kako kuhati junior.

Če prideš v neko podjetje, te ne bodo zaposlili, ker poznaš Django, JSON in nekaj algoritmov. Najverjetneje vas bodo najeli za veščine, ki jih to podjetje potrebuje tukaj in zdaj.

Podjetij je veliko in vsa imajo različne zahteve. Ne obstaja tako univerzalna količina znanja, ki jo je treba pridobiti, da bi lahko naprej pripravili življenjepis in šli iskat službo.

Grigorij Petrov: Ko smo v VoxImplantu iskali več inženirjev, je naš tehnični direktor osnovno zahtevo oblikoval takole: človek mora biti sposoben reševati probleme. Jasno je, da mladinec tega ne bo vedno naredil učinkovito, ne na najboljši način in ne vedno pravilno, a idealno je, da človeku daš nalogo, on se napne in jo reši. To je tisto znanje, ki ga delodajalci predvsem iščejo.

Zlata Obukhovskaya: Ljudje, ki iščejo delo z drugih področij, imajo s poslovnega vidika neko prednost, saj so že prehodili nekaj poti in so sposobni hitro rešiti probleme. To so mehke veščine, temu bi rekel celo kultura dela. Visokošolski diplomanti pogosto še niso razvili te delovne kulture.

Ampak vseeno bi rad poskusil začetnikom dati kakšen recept.

Prvi koraki za razvijalca začetnika

Zlata Obukhovskaya: Prvi je, da je to še vedno nek tvoj projekt, ker moraš v življenjepis nekaj napisati in pokazati minimalen portfelj. Bolj kul je, ko ti projekti niso narejeni zase, ampak kot svobodni projekt - za nekoga.

Po prvih projektih lahko že naredite življenjepis in ga pošljete vsem podjetjem, kjer so junijska delovna mesta. Intervjuji bodo zagotovili vpogled v to, kaj podjetja potrebujejo. Prej ali slej te bo nekdo zaposlil, vsaj v manjšem podjetju. Kasneje vam bodo te delovne izkušnje dale priložnost, da vstopite v večje in zanimivejše podjetje.

Valentin Dombrovski: Mimogrede, na naših tečajih pripravljamo študente, da imajo svoj projekt v 10 tednih usposabljanja. Poleg tega treniramo veščine razvoja ekipe. Prav to so mehke veščine, o katerih je govorila Zlata.

Aleksej Štirnjajev: Iz izkušenj vam povem, da lahko iskanje prve zaposlitve traja zelo dolgo. Ko iščeš mesec ali dva, je to normalno. Če oddaš življenjepis vsem podjetjem, hodiš na razgovore, v tretjem mesecu boš zagotovo nekaj našel.

Valentin Dombrovski: Lahko naredite lastne projekte ali se lotite preprostih samostojnih projektov in hkrati pošljete svoj življenjepis.

Kakšne možnosti ima razvijalec Pythona?

Zlata Obukhovskaya: Razvijalec Pythona gre lahko kamorkoli. Lahko greste v testiranje in nadaljujete z razvojem do višjega arhitekta. Ali celo v menedžment. Obstajajo različne vrste tehničnih vodij in lahko zrasteš do najvišjega vodstva. Lahko se razvijate v podatkovni znanosti, DevOps, greste v avtomatizirano testiranje ali strojno učenje.

Valentin Dombrovski: Na splošno obstaja veliko možnosti in priložnosti, vključno z našimi tečaji. Na vstopu ne potrebujete veliko znanja, je pa priporočljivo, da potem pokrijete širši spekter, saj več ko zmorete, bolje je za vas.

***

To je le del izdaje Python Junior. Na voljo je celotna različica epizode poslušaj.

Ali celo poglej:

Predvajaj video

Podcast RSS

Hvala za branje, poslušanje ali gledanje.

Vir: www.habr.com

Dodaj komentar