Python veebis: mida peab noor spetsialist teadma, et töötada ja areneda

Me tegime lĂŒhikese kokkuvĂ”tte Python Junior Podcastist, kus arutlesime, kust alustada ja kuhu suunduda algajal Python arendajal. Viimasel ajal on meil palju sisu keskmistele ja kogenud arendajatele, kuid see saade on kindlasti mĂ”eldud just algajatele.

Python veebis: mida peab noor spetsialist teadma, et töötada ja areneda

Peamised teemad:

  • Milliseid teadmisi vajab algaja programmeerija, et tegutseda
    veebiarenduses?
  • Mida ootavad tööandjad arendajatelt?
  • Mida teha, et leida tööd ilma kogemuseta?
  • Kuidas saab Python arendaja areneda?

Python Junior Podcast on podcast programmeerimisest neile, kes tahavad paremini mÔista Pythonit. Saateid juhivad kogukonna evangelistid MoscowPython ja kursuste Ôpetajad Learn Python.

Vestluses osalesid:

  • Valentin Dombrovski,MoscowPython'i kaasasutaja
  • Zlata Obukhovskaja, NVIDIA tiimijuht
  • Grigori Petrov, MoscowPython'i evangelist
  • AleksĂ©i Ć tyrƈaev, FinEx arendaja, Learn kursuste Ă”petaja
    Python

Miks on Python hea veebiarenduseks

Valentin Dombrovski: Miks just Python sobib veebiarenduseks? Miks mitte nÀiteks PHP vÔi JavaScript?

Grigori Petrov: Valikuid pole just palju. Kuigi tĂ€napĂ€evases veebis on vĂ”imalik praktiliselt ilma backendita — tĂ€ielikult frontend-tehnoloogiate peal, nagu JavaScript — luua ĂŒhekordne rakendus vĂ”i progressiivne veebirakendus, on see ikkagi liiga keeruline, halvasti indekseeritud ja nĂ”uab andekaid arendajaid.

Kui tahame luua veebilehte vÔi teenust, kasutame kombineeritud lÀhenemist: meil on mingi backend, mis teostab loogikat ja loob veebilehti, ning mingi frontend, mis joonistab need veebilehed brauseris. Ja kui me peame selle kÔik kiiresti kokku panema, siis ei ole valikuid just palju.

Vaatame vÔimalikke variante.

  • C#. Microsoft on tĂ”esti tubli, nad on teinud .NET Core'i ja edendavad seda igati. Kuid, esiteks, see on uus platvormidevaheline tehnoloogia ja seal on veel palju takistusi. Teiseks, see on tĂ”eliselt kallis, C# arendajaid on vĂ€he — lihtsalt sellepĂ€rast, et see ei ole populaarne.
  • Java. See on keeruline. Normaalse veebilehe loomine Java's ei ole 10 koodi rida, nagu Pythonis. See on palju koodi, see nĂ”uab raamistikke ja tuleb teada Java serverite seadistamise spetsiifikat. ÜhesĂ”naga, pidev valus ja kannatus.
  • PHP. Viimastes versioonides on see suurepĂ€rane. Ütlen isegi nĂ”nda: PHP 7.2 ei ole kehvem kui Python. Kuid lihtsalt ei saa vĂ”tta ja kasutada PHP 7.2. Kui tavaline, mitte tipparendaja loob veebisaiti PHP-s, siis ta ei kirjuta ainult 7.2 peale: tuleb ikka lugeda mingisuguseid Ă”pikuid, juhendeid, igal pool on hunnik pĂ€randkoodi, ja see pole sugugi hea.
  • JavaScript ja Node.js. See on suurepĂ€rane ja vĂ€ga kaasaegne, kui ĂŒks keel on nii front-endis kui back-endis. Siiski pole see vĂ€ga stabiilne. Node.js on hea asi, aga selle juurutamine tootmises nii, et see ei kukuks ja töötaks stabiilselt, on probleemne. Lisaks, kui me soovime kirjutada kvaliteetset koodi JavaScriptis, vajame me mitte JavaScripti, vaid TypeScripti. Ja TypeScript on ĂŒllatavalt keeruline, kui tavaline arendaja seda nĂ€eb, siis ajavad aju ĂŒlekeema.

JĂ€tame kĂ”rvale Ruby, Haskell, Erlang ja muud niĆĄitooted ning meil jÀÀb
 Python. Keel, millel on jĂ€rjepidev sĂŒntaks, ĂŒhtne standardbiblioteek, parim dokumentatsioon, populaarsed kerged raamistikud ja superpopulaarne kombain Django.

Selgub, et vaatamata ulatuslikule valikule, kui meil on tavalised, mitte tipparendajad, oleme tavaline ettevÔte, mis soovib teha tavalisi veebisaite, meil ei ole 50 inimese arendusosakonda, siis vÔtame Pythonit.

Millised teadmised on vajalikud ametisse sisenemiseks

Zlata Obuchovskaja: Ma arvan, et ĂŒhte raamistikku tuleb hĂ€sti teada — ja teada, millised veel on ja millal neid kasutatakse. Kus on Tornado, kus Django, kus Flask, kus aiohttp ja nii edasi.
Kasuks tuleb teada, et selline asi nagu protokollid eksisteerivad. Eriti on oluline teada http protokolli, see on kesksel kohal veebirakenduste loomisel.

Samuti on vajalik vÀhemalt umbkaudu ette kujutada, kuidas veebiprojektides front-end töötab: mis on HTML, CSS, JS.

Aleksei Shtyrnjaev: Ja teada, kus dokumentatsioon asub. See on kÔige tÀhtsam.

Grigori Petrov: Siin astume me vĂ€ga ebamugavale pinnasele. Kui ameti ajamiseks ei ole meil vedanud ja me oleme hakanud tĂ”siselt uurima kaasaegset front-endi, siis see on umbes 10 korda keerulisem kui back-end Pythonis. Algajal arendajal tuleb oma fookust piirata nii, et alustada HTML-i Ă”ppimist, kuid mitte sattuda kĂ”igi nende div, span, float’ide sisse, kuidas see kĂ”ik joondub ja paika paneb.

Aleksei Shtyrnjaev: On vajalik pÔhikursus Bootstrapis. Ja HTMLi alused.

Esimesel aastal ei tasu sĂŒveneda JS-raamistikes (kui keskendute tagaplaanile). Bootstrap'i baaskursusel on juba valmis moodulid: tahad slaidit — tee slaidit, tahad ujuvat menĂŒĂŒ — tee ujuvat menĂŒĂŒ.

Zlata Obuchovskaja: MĂ”tlen, et veebiarenduse esialgu tasub sĂŒveneda, eelkĂ”ige kuidas staatika ĂŒldse veebirakendustesse edastatakse. Nii liigub arendaja sujuvalt edasi, et hakata aru saama, kuidas veebirakenduste arhitektuur pĂ”himĂ”tteliselt töötab ja kuidas need tootmises elavad.

Grigori Petrov: Jah, soovitan kohe, juhul kui oled valinud Python'i tagaplaani arendamise keeleks ja nÀiteks Django raamistikuks: Djangol on dokumentatsioon Django Book'is, see on tÔeliselt Àge, seal on kÔik, millest Zlata rÀÀkis, see on tÔepoolest algajale hea.

Aleksei Shtyrnjaev: Kiireks alguseks sobib ka mingisugune Django Girls, kui eesmĂ€rk on just Django Ă”ppida. See on selline Ă”petus, kus ĂŒhe pĂ€evaga saab ĂŒle vaadata, mĂ”ista pĂ”hialuseid ja seda, milleks raamistik vĂ”imeline on.

Valentin Dombrovski: Podcasti salvestamiseks valmistudes koostasime nimekirja sellest, mida Python'i programmeerijale veebiarenduses vaja on, millega kokkuvÔtlikult eelnevalt öeldut kokku vÔtame.

Mida sisaldab aluseks veebiarendusele Python'is

  • Veebi-raamistikud nagu Django, Flask, aiohttp, Tornado jne (ja teadmine teiste olemasolust).
  • Protokollid ja API-d: eelkĂ”ige http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM ja migratsioonid, relatsioonilised andmebaasid, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • HTML, CSS, Bootstrap pĂ”hialused, samuti JS-raamistikke ja JQuery.
  • Rakenduste tööpĂ”himĂ”tted tootmises, testimine, ĂŒhetĂŒĂŒpi testid, automaattestsĂŒsteemid, versioonihaldussĂŒsteemid, git.

Kas algoritmid on juniorile vajalikud

Zlata Obuchovskaja: Alguses ei ole algoritmide teadmine vajalik, need tulevad aeglaselt iseenesest, kui arendusega piisavalt kaua tegeleda. Ma tunnen palju hÀid insenere, kellel ei olnud head formaalset algoritmide kursust.

Grigori Petrov: Tahaksin lisa Ă”li tulle valada. Kust meie tĂ”mme algoritmide poole ĂŒldse tuleb?

Meil puudub praegu fundamentaalne haridus algoritmide osas, me ei oska programmeerijaid Ôpetada, ei ole tehnilist baasi.

Seda ĂŒritatakse teha, aga siinkohal on meil Hogwarts'i lugu: me ei saa luua nĂ”idade kooli, kuni meil ei ole ĂŒhtegi nĂ”ida. Kuidas siis peaks ĂŒlikool kĂ€ituma, kui tulevad ja ĂŒtlevad: „Alustage programmeerijate Ă”petamist”, aga neil ei ole programmeerijaid, sest kĂ”ik töötavad Mail.ru, Rambleris ja Yandexis, kus neil on hea?

Ülikoolis vaadatakse ja öeldakse:
— Okei, programmeerimine. Otsime mingi seotud teadmiste valdkonna ja kutsume sealt spetsialiste. Kutsume ajakirjanikke, kes oskavad tekste kirjutada, elektriinsenerideks, kes oskavad teha elektriskeeme, ja matemaatikuid, kes tunnevad algoritme.

Nii et tegelikult on see sama mĂ”ttetu, kui Ă”petada ehitajat elementaarosakeste fĂŒĂŒsikat, lihtsalt seetĂ”ttu, et telliskivi ja tsement koosnevad elementaarosakestest.

Samuti ei rÀÀgita ehituskividest ja tsellulaarist, sest fĂŒĂŒsik, kes pĂŒĂŒab Ă”petada ehitajat, ei oska ise ehitada. LĂ”puks saame ehitaja, kes oskab suurepĂ€raselt kirjeldada, kuidas „tsement töötab”, kuid pole seda kunagi nĂ€inud ja ei oska sellest midagi valmistada.

Algsed algoritmid ja andmestruktuurid on vÀga head, kuid see on vÀga vÀike rakenduslik valdkond. Need on ÀÀrmiselt vajalikud, nÀiteks kui kirjutad mÀngumootorit, kompilaatorit vÔi vÔrguprotokolli.

Enamik programmeerijaid lahendavad Ă€riĂŒlesandeid, kus algoritmid ja andmestruktuurid pole olulised.

Seal on kĂ”ige keerulisem matemaatika — see on kaks korda liita ja siis jagada. Seal on vajalikud hoopis teistsugused teadmised. ÄriĂŒlesannete lahendamiseks on peamiselt vajalikud rakenduslikud, mitte fundamentaalsed teadmised.

Algajale arendajale on parem mĂ”ista Ă€ri ja seda, kuidas Ă”igesti ja kiiresti valmis blokke vajalikeks konstruktsioonideks kokku panna, kuidas neid debugeerida, kuidas teha nii, et nad ei laguneks, teadma, miks nad lagunevad, mis juhtub, kui nĂ”udmised muutuvad ja programm hakkab „fondile istuma”, nagu maja pĂ€rast vihma.
Need rakendatavad oskused ja arusaamine, kuidas tarkvara kirjutada. Ta peab teadma, et peale debugeerija on tal ka tööriistade komplekt, mis nÀitab, kus programm aja maha vÔtab.

Valentin Dombrovski: Mulle tuli selline vÔrdlus meelde: see on tÔlge Àri keelest arvutile arusaadavasse keelde. Seega, programmeerija on nagu spetsiifiline lingvist.

Grigori Petrov: Ärile on vajalik kirjanik, mitte lingvist. Kirjanik ei pea teadma, miks see vĂ”i see sĂ”na sajandite jooksul muutus. Talle peab olema piisav oskus neid sĂ”nu rakendada.

Mida on vaja, et leida esimene töökoht arendajana

Aleksei Shtyrnjaev: TÔenÀoliselt ei ole universaalset retsepti, mille jÀrgi peaks olema ette valmistatud algaja.

Kui te tĂ€navale mĂ”nda ettevĂ”ttesse jĂ”uate, ei vĂ”eta teid tööle ainult sellepĂ€rast, et teate Django’t, JSON-i ja natuke algoritme. Teid tĂ”enĂ€oliselt vĂ”etakse tööle oskuste tĂ”ttu, mis on just praegu selle ettevĂ”tte jaoks vajalikud.

EttevÔtteid on palju ja kÔigil on erinevad nÔudmised. Ei ole sellist universaalset teadmiste kogumit, mida on vaja omandada, et seejÀrel CV koostada ja tööle kandideerida.

Grigori Petrov: Kui me VoxImplantis otsisime mĂ”nda algajat, siis meie tehniline direktor formuleeris pĂ”hiv requirement nii: inimene peab suutma ĂŒlesandeid lahendada. Loomulikult algaja ei suuda seda alati tĂ”husalt, parimal viisil ega alati Ă”igesti teha, kuid ideaaljuhul annab inimene ĂŒlesande, pingutab ja lahendab selle. See on oskus, mida tööandjad esmajoones otsivad.

Zlata Obuchovskaja: Inimesed, kes otsivad tööd teistelt aladelt tulles, omavad Ă€ri seisukohalt teatud eeliseid, kuna nad on juba mingi tee lĂ€binud ja oskavad ĂŒlesandeid kiiresti lahendada. Need on pehmed oskused, ma nimetaksin seda isegi töö kultuuriks. Tihti ei ole ĂŒlikooli lĂ”petajatel see töö kultuur veel vĂ€lja kujunenud.

Aga ma tahaksin ikkagi proovida anda mingisuguse retsepti algajatele.

Esimesed sammud algavale arendajale

Zlata Obuchovskaja: Esiteks on see ikkagi mingi enda projekt, sest CV-s tuleb midagi kirja panna, et nÀidata minimaalset portfooliot. Paremini on, kui need projektid on tehtud mitte enda jaoks, vaid vabakutseliselt kellegi jaoks.

Esimeste projektide jÀrel on juba vÔimalik teha CV ja saata see kÔikidesse ettevÔtetesse, kus on algajate positsioonid. Vestlused annavad arusaama sellest, mida ettevÔtted vajavad. Varsti vÔi hiljem vÔtab teid tööle keegi, vÀhemalt vÀiksemasse ettevÔttesse. Hiljem annab see töökogemus vÔimaluse siseneda suuremasse ja huvitavasse ettevÔttesse.

Valentin Dombrovski: Muide, meie kursustel valmistame Ôpilasi ette selleks, et neil tekiks oma projekt 10 nÀdala jooksul. Samuti harjutame me meeskonnatöö oskusi. Need on just need pehmed oskused, millest Zlata rÀÀkis.

Aleksei Shtyrnjaev: Kogemuste pĂ”hjal ĂŒtlen, et esimest tööd vĂ”ib otsida vĂ€ga kaua. Kui otsite kuu-kaks, on see normaalne. Kui saadate oma CV kĂ”igisse ettevĂ”tetesse, kĂ€ite intervjuudel, siis kolmandaks kuuks leiate kindlasti midagi.

Valentin Dombrovski: VÔite teha oma projekte vÔi vÔtta lihtsamaid projekte vabakutselisena ning samal ajal CV-sid saata.

Millised on Python arendaja perspektiivid?

Zlata Obuchovskaja: Python arendaja vĂ”ib minna igale poole. VĂ”ib minna testimisele, areneda seniorkujundajaks vĂ”i isegi juhtimisse. Tehnilised juhid on erinevad, ja seal on vĂ”imalus tĂ”usta tippjuhtkonda. VĂ”ite areneda andmeanalĂŒĂŒsis, DevOps'is, minna automaattestidesse vĂ”i masinĂ”ppesse.

Valentin Dombrovski: Üldiselt on vĂ”imalusi palju, sealhulgas meie kursused. Alustamiseks ei ole palju teadmisi vajalik, kuid oleks soovitatav hiljem laiemaid teadmisi omandada, sest mida rohkem te oskate, seda parem teie jaoks.

***

See on vaid osa vÀljaandest. Python Junior. TÀielikku episoodi saab kuulata..

VÔi isegi vaadata:

MĂ€ngi videot

RSS-podcast

AitÀh, et lugesite, kuulasite vÔi vaatasite.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster