Python veebile: mida juunior peab teadma, et töötada ja areneda

Tegime Python Junior Podcasti põhimõtetest lühikese ärakirja: selles arutasime, millest alustada ja kuhu minna algaja Pythoni arendajana. Viimasel ajal on meil palju sisu keskmistele ja pensionäridele, kuid see osa on kindlasti mõeldud juunioridele.

Python veebile: mida juunior peab teadma, et töötada ja areneda

Peamised teemad:

  • Milliseid teadmisi peab algaja programmeerija harjutama
    Veebiarendus?
  • Mida ootavad tööandjad arendajatelt?
  • Mida teha, et leida tööd ilma kogemuseta?
  • Kuidas saab Pythoni arendaja areneda?

Python Junior Podcast on programmeerimise taskuhääling neile, kes soovivad Pythonit paremini mõista. Saateid viivad läbi kogukonna evangelistid Moskva Python ja kursuste õpetajad Õpi Pythoni.

Vestluses osalejad:

  • Valentin Dombrovski,Moskva Pythoni kaasasutaja
  • Zlata Obukhovskaja, NVIDIA meeskonna juht
  • Grigori Petrov, evangelist MoskvaPython
  • Aleksei Štõrnjajev, FinExi arendaja, Learn kursuste õpetaja
    Python

Miks on Python veebiarenduseks hea?

Valentin Dombrovski: Miks Python sobib veebiarenduseks? Miks mitte näiteks PHP või JavaScript?

Grigori Petrov: Nii et valikut pole palju. Hoolimata asjaolust, et tänapäevases veebis saate tegelikult luua ühelehelise rakenduse või progressiivse veebirakenduse ilma taustaprogrammita - puhtalt esiotsa tehnoloogiaid, JavaScripti kasutades -, on see siiski liiga keeruline, halvasti indekseeritud ja nõuab lahedaid arendajaid.

Kui tahame teha veebisaiti või teenust, kasutame kombineeritud lähenemist: mõni taustaprogramm rakendab loogikat ja loob veebilehti ning mõni kasutajaliides joonistab need veebilehed brauseris. Ja kui meil on vaja see kõik kiiresti millekski kokku panna, pole meil tegelikult valikut.

Vaatame võimalikke valikuid.

  • C#. Microsoft on tõesti suurepärane, nad tegid .NET Core'i ja reklaamivad seda igal võimalikul viisil. Kuid esiteks on see uus platvormideülene tehnoloogia ja seal pole veel kõik sujuv. Teiseks on see tõesti kallis, C# arendajaid on vähe – lihtsalt sellepärast, et see on ebapopulaarne.
  • Java. See on keeruline. Tavalise veebisaidi tegemine Javas ei võta 10 rida koodi, nagu Pythonis. See on palju koodi, need on raamistikud ja peate teadma Java-serverite seadistamise spetsiifikat. Üldiselt pidev valu ja kannatused.
  • PHP. Viimastes versioonides on see imeline. Ma ütlen isegi seda: PHP 7.2 pole halvem kui Python. Kuid te ei saa lihtsalt PHP 7.2 kätte saada ja kasutada. Kui tavaline, mitte tipparendaja teeb PHP-s veebilehe, siis ta ei kirjuta ainult 7.2-s: ta peab ikka lugema mingeid õpikuid, õpetusi, igal pool on palju pärandkoodi ja see pole eriti hea.
  • JavaScript ja Node.js. See on suurepärane ja väga kaasaegne, kui nii esi- kui ka tagaotsas on üks keel. Lihtsalt mitte väga stabiilne. Node.js on hea asi, kuid selle juurutamine tootmises on problemaatiline, et see ei jookseks kokku ja töötaks stabiilselt. Lisaks, kui tahame kirjutada kvaliteetset JavaScripti koodi, ei vaja me JavaScripti, vaid TypeScripti. Kuid TypeScript on ootamatult keeruline ja keskmise arendaja ajud lähevad seda nähes keema.

Jätame Ruby, Haskelli, Erlangi ja muud nišivärgid välja ning jääbki... Python. Ühtse süntaksiga keel, ühtne standardteegi, parima dokumentatsiooni, populaarsete kergete raamistike ja ülipopulaarse Django kombinatsiooniga.

Tuleb välja, et vaatamata kõige laiemale valikule, kui meil on tavalised, mitte tipparendajad, oleme tavaline äri, kes tahab teha tavalisi veebilehti, meil pole 50-kohalist arendusosakonda, siis võtame Pythoni.

Milliseid teadmisi on vaja erialale sisenemiseks?

Zlata Obukhovskaja: Usun, et peate ühte raamistikku hästi tundma – ja teadma, millised teised on olemas ja millal neid kasutatakse. Kus on Tornado, kus on Django, kus on Flask, kus on aiohttp ja nii edasi.
Kasulik on teada, et on olemas selline asi nagu protokollid. Eelkõige on veebirakenduste loomisel kesksel kohal teadmised http-protokolli kohta.

Samuti peate vähemalt umbkaudselt aru saama, kuidas veebiprojektides esiots töötab: mis on HTML, CSS, JS.

Aleksei Štõrnjajev: Ja tea, kus on dokumentatsioon. See on kõige olulisem.

Grigori Petrov: Siin me astume väga raputavale pinnale. Kui meil ei vea ja hakkame kuidagi tõsiselt kaasaegset frontendit uurima, siis on see umbes 10 korda keerulisem kui Pythoni taustaprogramm. Algaja arendaja peab oma fookust piirama, et ta saaks alustada HTML-i õppimist, kuid mitte eksida kõigis nendes lahtrites, vahemikes, ujukites, kuidas kõik on joondatud ja rivistatud.

Aleksei Štõrnjajev: Vajab Bootstrapi algkursust. Ja HTML-i põhitõed.

Esimesel aastal ei tohiks te JS-i raamistikesse süveneda (kui keskendute taustaprogrammile). Bootstrapi baaskursusel on juba valmis moodulid: kui tahad liugurit, tee liugur, kui tahad ujuvat menüüd, tee ujuvmenüü.

Zlata Obukhovskaja: Arvan, et frontendi õppides saab süveneda eelkõige sellesse, kuidas veebirakendustele üldiselt staatilisust antakse. Seega liigub arendaja sujuvalt edasi, et õppida, kuidas veebirakenduste arhitektuur põhimõtteliselt töötab ja kuidas need tootmises elavad.

Grigori Petrov: Jah, ma soovitan seda kohe juhuks, kui valisite taustaarenduskeeleks Pythoni ja raamistikuks näiteks Django: Djangol on dokumentatsioon Django raamatus, see on väga lahe, sisaldab kõike, mida Zlata ütles, ta tõesti hea algajale.

Aleksei Štõrnjajev: Mõned Django Girls sobivad ka kiireks alustamiseks, kui teie eesmärk on õppida Djangot. See on õpetus, kus saate ühe päevaga üle käia, mõista põhitõdesid ja seda, milleks raamistik võimeline on.

Valentin Dombrovski: Podcasti salvestamiseks koostasime nimekirja, mida Pythoni programmeerija veebiarenduseks vajab, mis võtab kokku meie varem öeldu.

Mida sisaldab Pythonis veebiarenduse põhitõed

  • Veebiraamistikud Django, Flask, aiohttp, Tornado jne (ja teavad teiste olemasolust).
  • Protokollid ja API-d: peamiselt http, JSON-RPC, protokollipuhvrid, gRPC.
  • ORM ja migratsioonid, relatsiooniandmebaasid, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • HTML-i, CSS-i, Bootstrapi, aga ka JS-i raamistike ja JQuery põhitõed.
  • Rakenduse tööpõhimõtted tootmises, testimine, ühikutestid, automaattestid, versioonikontrollisüsteemid, git.

Kas juuniorid vajavad algoritme?

Zlata Obukhovskaja: Algoritme ei peagi esialgu teadma, need ilmuvad järk-järgult pähe, kui arendusega piisavalt kaua tegeled. Ma tean palju häid insenere, kellel pole olnud head formaalsete algoritmide kursust.

Grigori Petrov: Tahan õli tulle valada. Kust tuleb meie iha algoritmide järele?

Meil ei ole praegu algoritmipõhist haridust, me ei oska programmeerijaid koolitada, meil puudub tehniline baas.

Nad üritavad seda teha, kuid siin on Sigatüüka lugu: me ei saa luua võlurite kooli, kui meil pole ühtki võlurit. Seetõttu mida peaks ülikool tegema, kui nad nende juurde tulevad ja küsivad: "Hakkake programmeerijaid koolitama", kuid neil pole programmeerijaid, sest kõik töötavad Mail.ru-s, Rambleris ja Yandexis, tunnevad end seal hästi?

Ülikool vaatab ja ütleb:
- Olgu, programmeerimine. Leiame mõne seotud teadmiste valdkonna ja kutsume sealt spetsialistid. Kutsume kohale ajakirjanikud, kes oskavad kirjutada koopiaid, elektriinsenere, kes oskavad elektriskeeme teha, ja matemaatikuid, kes oskavad algoritme kasutada.

Lõpuks selgub, et see on sama praktiline kui õpetada ehitajale osakeste füüsikat lihtsalt seetõttu, et telliskivi ja tsement on valmistatud elementaarosakestest.

Samas tsemendist ja tellistest endast ei räägita, sest ehitajat koolitada püüdev füüsik ei oska maju ehitada. Selle tulemusena saame ehitaja, kes oskab suurepäraselt kirjeldada, kuidas “tsement töötab”, kuid pole seda kunagi näinud ega oska sellest midagi valmistada.

Algoritmid ja andmestruktuurid on väga head, kuid see on väga väike rakendusala. Neid on hädasti vaja näiteks siis, kui kirjutate mängumootorit, kompilaatorit või võrguprotokolli.

Enamik programmeerijaid lahendab äriprobleeme, kus pole vaja algoritme ja andmestruktuure.

Kõige keerulisem matemaatika on seal kaks korda liitmine ja seejärel jagamine. See nõuab täiesti erinevaid teadmisi. Äriprobleemide lahendamine eeldab peamiselt rakenduslikke, mitte fundamentaalseid teadmisi.

Parem on algajale arendajale arusaamine ärist ja sellest, kuidas valmisplokkidest õigesti ja kiiresti vajalikke konstruktsioone kokku panna, kuidas neid siluda, kuidas veenduda, et need laiali ei laguneks, teada, miks need lagunevad, mis saab siis, kui nõuded muutuvad ja programm hakkab "vundamendile elama" nagu maja pärast vihma.
Need on praktilised asjad ja arusaam, kuidas tarkvara kirjutada. Ta peab teadma, et lisaks silurile on tal tööriistade komplekt, mis näitab täpselt, kus programm aeglustub.

Valentin Dombrovski: Mulle tuli meelde selline võrdlus: see on tõlge ärikeelest keelde, milles saab arvutiga suhelda. See tähendab, et programmeerija on omamoodi spetsiifiline keeleteadlane.

Grigori Petrov: Äri vajab kirjanikku, mitte keeleteadlast. Kirjanik ei pea teadma, miks tuhat aastat tagasi see sõna selliseks muudeti. Ta peab oskama neid sõnu rakendada.

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

Aleksei Štõrnjajev: Ilmselt pole universaalset retsepti, kuidas juuniorid süüa teha.

Kui tulete mõnda ettevõttesse, siis nad ei võta teid tööle mitte sellepärast, et teate Djangot, JSON-i ja mõnda algoritmi. Tõenäoliselt võetakse teid tööle nende oskuste jaoks, mida see ettevõte vajab siin ja praegu.

Ettevõtteid on palju ja neil kõigil on erinevad nõuded. Sellist universaalset teadmiste hulka, mida oleks vaja hankida, et CV-d edasi koostada ja tööd otsima minna, ei ole.

Grigori Petrov: Kui me VoxImplantis mitut inseneri otsisime, sõnastas meie tehniline direktor põhinõude järgmiselt: inimene peab oskama probleeme lahendada. On selge, et juunior ei tee seda alati tõhusalt, mitte kõige paremini ja mitte alati õigesti, kuid ideaalis annate inimesele ülesande, ta pingutab ja lahendab selle. See on oskus, mida tööandjad eelkõige otsivad.

Zlata Obukhovskaja: Inimestel, kes otsivad tööd muudest valdkondadest, on ärilisest seisukohast teatud eelised, sest nad on juba mingi tee läbinud ja suudavad probleeme kiiresti lahendada. Need on pehmed oskused, ma nimetaks seda isegi töökultuuriks. Tihti pole ülikoolilõpetajatel see töökultuur veel välja kujunenud.

Aga prooviks ikka algajatele mingi retsepti anda.

Esimesed sammud algajale arendajale

Zlata Obukhovskaja: Esimene on see, et see on ikkagi mingi oma projekt, sest sa pead oma CV-sse midagi kirjutama ja näitama minimaalset portfooliot. Lahedam on, kui neid projekte ei tehta mitte endale, vaid vabakutselise projektina – kellelegi.

Peale esimesi projekte saab juba teha CV ja saata selle kõikidesse ettevõtetesse, kus on juunikuu ametikohad. Intervjuud annavad ülevaate sellest, mida ettevõtted vajavad. Varem või hiljem võtab keegi sind vähemalt väikesesse firmasse tööle. Hiljem annab see töökogemus võimaluse sattuda suuremasse ja huvitavamasse ettevõttesse.

Valentin Dombrovski: Muide, oma kursustel valmistame õpilasi ette oma projekti tegemiseks 10 nädala jooksul pärast koolitust. Lisaks treenime meeskonna arendamise oskusi. Need on just need pehmed oskused, millest Zlata rääkis.

Aleksei Štõrnjajev: Kogemusest võin öelda, et esimese töökoha otsimine võib võtta väga kaua aega. Kui otsite kuu või kaks, on see normaalne. Kui esitad oma CV kõikidesse ettevõtetesse, mine intervjuudele, kolmandal kuul leiad kindlasti midagi.

Valentin Dombrovski: Saate kärpida oma projekte või võtta lihtsaid vabakutselisi projekte ja samal ajal saata oma CV.

Millised väljavaated on Pythoni arendajal?

Zlata Obukhovskaja: Pythoni arendaja võib minna kõikjale. Võite minna testimisse ja jätkata vanemarhitekti arendamist. Või isegi juhtimisse. Tehnilisi juhte on erinevat tüüpi ja võite kasvada tippjuhiks. Saate areneda andmeteaduses, DevOpsis, minna automatiseeritud testimisse või masinõppesse.

Valentin Dombrovski: Üldiselt on palju võimalusi ja võimalusi, sealhulgas meie kursused. Sissepääsu juures pole palju teadmisi vaja, kuid siis on soovitatav katta laiemat valikut, sest mida rohkem saad, seda parem.

***

See on vaid osa väljalaskest Python juunior. Episoodi täisversioon on saadaval kuulake.

Või isegi vaata:

Esita video

Podcast RSS

Täname lugemise, kuulamise või vaatamise eest.

Allikas: www.habr.com

Lisa kommentaar