Python veebis: mida peab junior arendaja teadma tööks ja arenguks

Oleme teinud lühikese kokkuvõtte Python Junior Podcast'i põhiteemadest: arutasime, kust alustada ja kuhu suunduda algajal Python-arendajal. Viimasel ajal on meil palju sisu keskastme ja vanemate arendajate jaoks, kuid see episood on kindlasti mõeldud just algajatele.

Python veebis: mida peab junior arendaja teadma tööks ja arenguks

Peamised teemad:

  • Milliseid teadmisi vajab algaja programmeerija, et tegeleda
    veebiarendusega?
  • Mida ootavad tööandjad arendajatelt?
  • Kuidas leida tööd ilma kogemuseta?
  • Kuidas võib arendaja karjäär Pythonis areneda?

Python Junior Podcast – programmimine podcast nendele, kes soovivad Pythonis paremini orienteeruda. Eetrisse viivad üldiselt kogukonna evangelistid MoscowPython ja kursuste õpetajad Learn Python.

Vestluses osalesid:

  • Valentin Dombrovski,MoscowPython'i kaasasutaja
  • Zlata Obukhovskaya, NVIDIA tiimijuht
  • Grigory Petrov, MoscowPython'i evangelist
  • Alexey Shtyrnyev, FinEx arendaja, kursuste õpetaja Learn
    Python

Miks on Python hea veebiarenduseks

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

Grigory Petrov: Valikuid pole tõesti palju. Kuigi tänapäeval saab veebis praktiliselt ilma back-end'ita — puhtalt front-end-tehnoloogiate ja JavaScriptiga — luua ühe lehe rakenduse või edasijõudnud veebirakenduse, on see siiski liiga keeruline, halvasti indekseeritud ning nõuab osavaid arendajaid.

Kui soovime teha veebisaiti või teenust, rakendame kombineeritud lähenemist: meil on mingi back-end, mis haldab loogikat ja loob veebilehti, ning front-end, mis joonistab need veebilehed brauseris. Ja kui peame seda kiiresti millegagi kokku panema, ei ole valikut palju.

Vaatame võimalikud variandid üle.

  • C#. Microsoft on tõesti tubli, nad tegid .NET Core'i ja edendavad seda igati. Kuid esiteks, see on uus platvormideülene tehnoloogia ning seal pole kõik veel sujuv. Teiseks, see on tõeliselt kallis, C# arendajaid on vähe — lihtsalt seetõttu, et see pole populaarne.
  • Java. See on keeruline. Normaalse veebisaidi loomine Java-s ei ole sama lihtne kui Pythonis, sinna läheb palju koodi, koos raamistikuga ning tuleb tunda Java-serverite seadistamise spetsiifikat. Ühesõnaga, pidev valu ja kannatused.
  • PHP. Viimastes versioonides on ta suurepärane. Ütlen isegi nii: PHP 7.2 ei ole halvem kui Python. Aga PHP 7.2 ei saa lihtsalt niisama kasutada. Kui tavaline, mitte tipptasemel arendaja teeb veebilehte PHP-s, siis ei kirjuta ta ainult 7.2-l: ikka tuleb lugeda mõningaid õpikuid, õpetusi, igal pool on hulk pärandkoodi, ja see ei ole üldse hea.
  • JavaScript ja Node.js. See on suurepärane ja väga kaasaegne, kui üks ja sama keel on nii front-endis kui back-endis. Ainult et see ei ole väga stabiilne. Node.js on hea asi, aga selle tootmisse seadmine, nii et see ei kokku kukuks ja töötaks usaldusväärselt, on keeruline. Lisaks, kui me tahame kirjutada kvaliteetset koodi JavaScriptis, siis vajame mitte JavaScripti, vaid TypeScripti. Ja TypeScript on üllatavalt keeruline, selle nähes saavad tavalised arendajad pead segaseks.

Jätame vahele Ruby, Haskelli, Erlangi ja muud nishi-d asjad, ja me jääme… Pythoniga. Keel, millel on järjepidev süntaks, ühtne standardraamatukogu, parim dokumentatsioon, populaarsed kerged raamistikud ja meeletult populaarne Django kombain.

Tundub, et kui meil on tavalised, mitte tipptasemel arendajad, oleme tavaline ettevõte, mis soovib teha tavalisi saite. Meil ei ole 50 inimese arendusosakonda, seetõttu kasutame Pythonit.

Milliseid teadmisi on vaja, et siseneda ametisse

Zlata Obukhovskaja: Minu arvates oleks hea omada ühte raamistikku, mida osatakse hästi kasutada — ja teada, mis teisi on ja millal neid kasutada. Kus on Tornado, kus Django, kus Flask, kus aiohttp ja nii edasi.
Oluline on teada, et on sellised asjad nagu protokollid. Eriti teadmised HTTP protokollist on keskne veebirakenduste ehitamisel.

Samuti peaks vähemalt ligikaudu teadma, kuidas on veebiprojektides korraldatud front-end: mis on HTML, CSS, JS.

Aleksandr Shtyrneyev: Ja teadma, kus on dokumentatsioon. See on kõige olulisem.

Grigory Petrov: Siin astume väga ebakindlale pinnale. Kui meil ei vedanud ja hakkasime tõsiselt kaasaegset front-end'i õppima, on see umbes 10 korda keerulisem kui back-end Pythonis. Algajal arendajal tuleks oma fookust piirata nii, et alustada HTML-ist, kuid mitte laskuda kõikidesse div-, span-, float- ja tasandamise küsimustesse.

Aleksandr Shtyrneyev: Vajalik on Bootstrapi algkursus. Ja HTMLi alused.

Esimesel aastal ei tasu süveneda JS-raamistikes (kui keskendute tagaplaanile). Bootstrapi algkursuses on juba olemas valmis moodulid: tahad slideshow - tee slideshow, tahad ujuvat menüüd - tee ujuv menüü.

Zlata Obukhovskaja: Arvan, et frontend'i uurimisega saab tegeleda, eelkõige kuidas staatiline sisu serveeritakse veebirakendustes. Nii liigub arendaja sujuvalt edasi, et hakata tundma, kuidas veebirakenduste arhitektuur üldiselt töötab ja kuidas nad elavad tootmises.

Grigory Petrov: Jah, soovitan kohe, juhul kui olete valinud Python'i tagaplaanide arendamiseks ning näiteks Django raamistiku: Django'l on dokumentatsioon Django Raamatus, see on tõeliselt äge, seal on kõik see, millest Zlata rääkis, see on tõeliselt hea algajale.

Aleksandr Shtyrneyev: Kiireks alguseks sobib ka mõni Django Girls, kui eesmärk on õppida just Django'd. See on selline õpetus, mille käigus saate ühe päeva jooksul ülevaate, mõista aluseid ja seda, milleks raamistik võimeline on.

Valentin Dombrovski: Podcasti salvestamiseks valmistudes koostasime nimekirja sellest, mida Python arendaja vajab veebiarenduseks, millega kokkuvõtlikult varasemaid mõtteid kokku võtame.

Mis kuulub Python veebiarenduse aluseks

  • Veebiraamistikud Django, Flask, aiohttp, Tornado jne (ning teadmine, et veel on olemas teisi).
  • 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 ning JS-raamistikud ja jQuery.
  • Rakenduste töö põhimõtted tootmises, testimine, üheüksuse testid, automatiseeritud testid, versioonihaldussüsteemid, git.

Kas algoritmid on algajale vajalikud

Zlata Obukhovskaja: Alguses ei ole algoritmide tundmine vajalik, need tulevad ajapikku iseenesest, kui tegeled arendamisega piisavalt kaua. Ma tunnen hulga häid insenere, kellel ei olnud head formaalset algoritmikursust.

Grigory Petrov: Ma tahan lisada kütust tulle. Kust üldse meie vajadus algoritmide järele tuleb?

Meil puudub praegu fundamentaalne haridus algoritmide osas, meil ei osata programmeerijaid õpetada, tehniline baas puudub.

Küsimus on selles, kuidas teha, aga meil on siin Hogwartsi lugu: me ei saa luua nõidade kooli, kui meil pole ühtegi nõida. Mida siis teha ülikoolile, kuhu tullakse ja küsitakse: „Alustage programmeerijate õpetamist”, kui neil pole programmeerijaid, sest kõik töötavad Mail.ru, Rambleris ja Yandexis - neil seal on hea?

Ülikoolis vaadatakse ja öeldakse:
— Okei, programmeerimine. Otsime mingi seotud teadmiste ala ja kutsume sealt spetsialiste. Kutsume ajakirjanikke, kes oskavad tekste kirjutada, elektriinsenerid, kes oskavad teha elektriskeeme, ja matemaatikuid, kes oskavad algoritmidega töötada.

Lõpptulemus on see, et see on sama mõistlik kui õpetada ehitajat elementaarosakeste füüsikal, lihtsalt sellepärast, et tellis ja tsement koosnevad elementaarosakestest.

Selle juures ei räägita aga ise tsement ja tellisest, sest füüsik, kes üritab ehitajat õpetada, ei oska kodu ehitada. Lõpptulemusena saame ehitaja, kes suudab suurepäraselt selgitada, kuidas "tsement toimib", kuid ei ole seda kunagi näinud ega oska sellest midagi teha.

Algotithmid ja andmestruktuurid on küll väga olulised, kuid see on väga väike rakendusala. Need on äärmiselt vajalikud, näiteks kui kirjutad mängumootorit, kompilaatorit või võrguprotokolli.

Enamik programmeerijatest lahendab ärilisi probleeme, kus algoritmid ja andmestruktuurid ei ole vajalikud.

Seal on kõige keerulisem matemaatika — lihtsalt kokku liita kaks korda ja seejärel jagada. Seal on vajalikud hoopis teised teadmised. Äriliste probleemide lahendamiseks on vajalikud peamiselt rakenduslikud, mitte põhiteadmised.

Algajale arendajale on parem omada arusaama ärist ja sellest, kuidas õigesti ja kiiresti valmis elementidest vajalikke konstruktsioone kokku panna, kuidas neid siluda, kuidas vältida nende kokku kukkumist, teada, miks need kokku kukuvad, mis toimub, kui nõuded muutuvad ja programm hakkab ‘alusele vajuma’, nagu maja pärast vihma.
Need rakenduslikud seadmed ja arusaam, kuidas tarkvara kirjutada. Ta peab teadma, et lisaks silurile on tal tööriistade komplekt, mis näitab, kus täpselt programm aeglustub.

Valentin Dombrovski: Selline võrdlus tuli mulle meelde: see on tõlge äri keelest keelde, millega saab suhelda arvutitega. Teisisõnu, programmeerija on omamoodi spetsiifiline lingvist.

Grigory Petrov: Äri vajab kirjanikku, mitte lingvist. Kirjanik ei pea teadma, miks see sõna tuhande aasta jooksul muutus. Temalt oodatakse, et ta oskab neid sõnu rakendada.

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

Aleksandr Shtyrneyev: Tõenäoliselt ei ole universaalset retsepti, kuidas juuniorit valmistada.

Kui te jõuate mõnda ettevõttesse, siis ei võeta teid mitte sellepärast, et te oskate Django't, JSON'i ja natuke algoritme. Teid võetakse tõenäoliselt sellepärast, et teil on oskused, mis on praegu sellele ettevõttele vajalikud.

Ettevõtteid on palju ja kõigil on erinevad nõudmised. Ei ole mingit universaalset teadmiste mahtu, mida on vaja omandada, et hiljem CV koostada ja tööle asuda.

Grigory Petrov: Kui me VoxImplantis otsisime mitmeid algajaid, sõnastas meie tehniline direktor põhijõudmise nõude nii: inimene peab suutma ülesandeid lahendada. On selge, et algaja ei tee seda alati tõhusalt, mitte parimal viisil ega alati õigesti, kuid ideaalis annad sa inimesele ülesande, ta pingutab ja lahendab selle. See on oskus, mida tööandjad esmajoones otsivad.

Zlata Obukhovskaja: Tööd otsivad inimesed, kes tulevad teistest valdkondadest, omavad äri seisukohalt teatavat eelist, sest nad on juba mingisuguse tee läbinud ja oskavad ülesandeid kiiresti lahendada. Need on pehmed oskused, ma nimetaks seda isegi töö kultuuriks. Tihti ei ole ülikooli lõpetajatel see töö kultuur veel välja kujunenud.

Aga ma tahaks ikkagi proovida anda mingisuguseid soovitusi algajatele.

Esimesed sammud algajale arendajale

Zlata Obukhovskaja: Esimene on kindlasti mingi oma projekt, kuna CV-s tuleb midagi kirjutada, näidata minimaalset portfooliot. Veel parem, kui need projektid on tehtud mitte enda jaoks, vaid vabakutselisena — kellegi teise jaoks.

Esimeste projektide järel on võimalik koostada elu- ja saadetakse see kõikidesse ettevõtetesse, kus on algajatest positsioone. Vestlused annavad selguse, mida ettevõtted vajavad. Varsti või hiljem leiab keegi teid, isegi väiksemasse ettevõttesse. Edasi tagab see töökogemus, et pääsete ka suuremasse ja huvitavasse ettevõttesse.

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

Aleksandr Shtyrneyev: Kogemuse põhjal ütlen, et esimest tööd võib otsida väga kaua. Kui otsite kuu jooksul, kaks — see on normaalne. Kui saadate oma CV kõigisse ettevõtetesse ja käite vestlustel, leiate kolmandaks kuuks kindlasti midagi.

Valentin Dombrovski: Võite töötada oma projektide kallal või võtta lihtsaid projekte vabakutselisest ja samal ajal tegeleda CV saatmisega.

Millised on Python-arendaja perspektiivid?

Zlata Obukhovskaja: Python-arendaja võib minna igale poole. Võib liikuda testimise valdkonda, jätkata arengut senior-arhitektiks või isegi juhtimisele. Tehnilised juhid on erinevad ja on võimalik jõuda tippjuhtimiseni. Samuti võib areneda data science'i, DevOps'i, liikuda automaattestimise või masinõppe suunas.

Valentin Dombrovski: Ühesõnaga on võimalusi palju, sealhulgas meie kursused. Algteadmisi ei ole väga palju vaja, kuid on soovitatav hiljem omandada laiem teadmiste spekter, sest mida rohkem te oskate, seda parem teie jaoks.

***

See on vaid osa episoodist. Python Junior. Täisversiooni episoodist saab kuulata..

Või isegi vaadata:

Vaata videot

podcasti RSS

Aitäh, et lugesite, kuulasite või vaatasite.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster