Sudarėme trumpą stenogramą su pagrindinėmis mintimis iš Python Junior Podcast: joje aptarėme, nuo ko pradėti ir kur eiti kaip pradedančiajam Python kūrėjui. Pastaruoju metu turime daug turinio viduriniams ir vyresniems, tačiau šis epizodas tikrai skirtas jaunesniems.

Pagrindinės temos:
- Kokias žinias reikia praktikuoti pradedančiam programuotojui
interneto kūrimas? - Ko darbdaviai tikisi iš kūrėjų?
- Ką daryti norint susirasti darbą be patirties?
- Kaip Python kūrėjas gali tobulėti?
Python Junior Podcast yra programavimo podcast'as, skirtas tiems, kurie nori geriau suprasti Python. Transliacijas veda bendruomenės evangelistai ir kursų mokytojai .
Pokalbio dalyviai:
- Valentinas Dombrovskis,„MoscowPython“ įkūrėjas
- Zlata Obukhovskaya, NVIDIA komandos vadovas
- Grigorijus Petrovas, evangelistas Maskvos Python
- Aleksejus Štyrnyajevas, „FinEx“ kūrėjas, „Learn“ kursų mokytojas
Pitonas
Kodėl Python yra geras žiniatinklio kūrimui
Valentinas Dombrovskis: Kodėl Python tinka žiniatinklio kūrimui? Kodėl, pavyzdžiui, ne PHP ar JavaScript?
Grigorijus Petrovas: Taigi pasirinkimo nėra daug. Nepaisant to, kad šiuolaikiniame žiniatinklyje iš tikrųjų galite sukurti vieno puslapio programą arba progresyvią žiniatinklio programą be užpakalinės programos - vien tik naudodami front-end technologijas, naudodami JavaScript - tai vis tiek yra per sudėtinga, prastai indeksuota ir reikalauja šaunių kūrėjų.
Jei norime sukurti svetainę ar paslaugą, naudojame kombinuotą metodą: kai kurie užpakaliniai įrenginiai įgyvendina logiką ir sukuria tinklalapius, o kai kurie priekiniai tinklalapiai atkreipia šiuos tinklalapius naršyklėje. Ir kai mums reikia greitai viską sujungti į kažką, mes iš tikrųjų neturime pasirinkimo.
Pažvelkime į galimus variantus.
- C#. Microsoft yra tikrai puikus, jie sukūrė .NET Core ir visais įmanomais būdais jį reklamuoja. Bet, pirma, tai nauja kelių platformų technologija, ir dar ne viskas ten sklandu. Antra, tai tikrai brangu, mažai C# kūrėjų – vien dėl to, kad jis nepopuliarus.
- „Java“. Tai sudėtinga. Norint sukurti įprastą svetainę Java, nereikia 10 kodo eilučių, kaip Python. Tai yra daug kodo, tai yra sistemos, ir jūs turite žinoti „Java“ serverių nustatymo specifiką. Apskritai, nuolatinis skausmas ir kančia.
- PHP. Naujausiose versijose tai nuostabu. Aš netgi pasakysiu taip: PHP 7.2 nėra prastesnis nei Python. Bet jūs negalite tiesiog pasiimti ir naudoti PHP 7.2. Jei paprastas, o ne geriausias kūrėjas sukurs svetainę PHP, jis nerašys tik 7.2: vis tiek turės skaityti vadovėlius, vadovėlius, visur yra daug palikimo kodo, o tai nėra labai gerai.
- JavaScript ir Node.js. Tai nuostabu ir labai modernu, kai tiek priekinėje, tiek galinėje dalyje yra viena kalba. Tik nelabai stabilus. Node.js yra geras dalykas, tačiau sunku jį įdiegti gamyboje, kad jis nesustrigtų ir veiktų stabiliai. Be to, jei norime parašyti kokybišką JavaScript kodą, mums reikia ne JavaScript, o TypeScript. Tačiau „TypeScript“ yra netikėtai sudėtingas, o vidutinio kūrėjo smegenys užvirsta, kai tai mato.
Palikime Ruby, Haskell, Erlang ir kitus nišinius dalykus, o mums beliks... Python. Kalba su nuoseklia sintaksė, vienoda standartine biblioteka, geriausia dokumentacija, populiariomis lengvomis sistemomis ir itin populiariu „Django“ deriniu.
Pasirodo, nepaisant plačiausio pasirinkimo, jei turime paprastus, o ne geriausius kūrėjus, esame eilinis verslas, kuris nori daryti įprastas svetaines, neturime 50 žmonių kūrimo skyriaus, tai imamės Python.
Kokių žinių reikia norint patekti į profesiją?
Zlata Obukhovskaya: Manau, kad reikia gerai išmanyti vieną sistemą – ir žinoti, kokios kitos egzistuoja ir kada jos naudojamos. Kur Tornado, kur Django, kur Flask, kur aiohttp ir pan.
Bus naudinga žinoti, kad yra toks dalykas kaip protokolai. Visų pirma, žinios apie http protokolą yra labai svarbios kuriant žiniatinklio programas.
Taip pat reikia bent apytiksliai suprasti, kaip žiniatinklio projektuose veikia priekinė dalis: kas yra HTML, CSS, JS.
Aleksejus Štyrnyajevas: Ir žinokite, kur yra dokumentai. Tai yra svarbiausia.
Grigorijus Petrovas: Čia mes žingsniuojame ant labai netvirtos žemės. Jei mums nepasisekė ir kažkaip rimtai pradėsime studijuoti šiuolaikinę sąsają, ji bus apie 10 kartų sudėtingesnė nei Python backend. Pradedantis kūrėjas turi apriboti savo dėmesį, kad galėtų pradėti mokytis HTML, bet nepasiklystų visuose šiuose divuose, spanuose, plūdimuose, kaip viskas sulygiuota ir išdėstyta.
Aleksejus Štyrnyajevas: Reikia pagrindinio Bootstrap kurso. Ir HTML pagrindai.
Pirmaisiais metais neturėtumėte gilintis į JS sistemas (jei daugiausia dėmesio skiriate backend). Baziniame Bootstrap kurse jau yra paruošti moduliai: jei norite slankiklio, pasidarykite slankiklį, jei norite slankiojo meniu, padarykite slankųjį meniu.
Zlata Obukhovskaya: Manau, kad studijuodami priekinę dalį galite pasinerti, ypač į tai, kaip žiniatinklio programoms paprastai suteikiama statika. Tokiu būdu kūrėjas sklandžiai pereina ir pradeda mokytis, kaip iš esmės veikia žiniatinklio programų architektūra ir kaip jos veikia gamyboje.
Grigorijus Petrovas: Taip, iš karto rekomenduosiu, jei pasirinkote Python kaip pagrindinę kūrimo kalbą ir, pavyzdžiui, Django kaip pagrindą: Django turi dokumentaciją Django knygoje, tai tikrai šaunu, joje yra viskas, ką pasakė Zlata, ji tikrai tinka pradedančiajam.
Aleksejus Štyrnyajevas: Kai kurios Django merginos taip pat tinka greitai pradėti, jei jūsų tikslas yra išmokti Django. Tai pamoka, kurioje per vieną dieną galite pereiti prie viršaus, suprasti pagrindus ir tai, ką gali sistema.
Valentinas Dombrovskis: Ruošdamiesi įrašyti podcast'ą, sudarėme sąrašą, ko Python programuotojui reikia kuriant žiniatinklio svetainę, kuriame apibendrinama tai, ką sakėme anksčiau.
Kas įtraukta į žiniatinklio kūrimo „Python“ pagrindus
- Žiniatinklio sistemos Django, Flask, aiohttp, Tornado ir kt. (ir žinokite apie kitų egzistavimą).
- Protokolai ir API: pirmiausia http, JSON-RPC, protokolų buferiai, gRPC.
- ORM ir migracijos, reliacinės duomenų bazės, SQLAlchemy, SQL, PostgreSQL, MySQL.
- HTML, CSS, Bootstrap, taip pat JS karkasų ir JQuery pagrindai.
- Programos veikimo principai gamyboje, testavimas, vienetų testai, automatiniai testai, versijų valdymo sistemos, git.
Ar jauniesiems reikia algoritmų?
Zlata Obukhovskaya: Iš pradžių jums nereikia žinoti algoritmų, jie palaipsniui pasirodys jūsų galvoje, jei pakankamai ilgai užsiimsite kūrimu. Pažįstu daugybę gerų inžinierių, kurie neturėjo gerų formalių algoritmų kursų.
Grigorijus Petrovas: Noriu įpilti žibalo į ugnį. Iš kur kyla mūsų potraukis algoritmams?
Šiuo metu neturime pagrindinio algoritmų išsilavinimo, nemokame ruošti programuotojų, neturime techninės bazės.
Jie bando tai padaryti, bet mes turime Hogvartso istoriją: negalime sukurti burtininkų mokyklos, kol neturime nė vieno burtininko. Todėl ką turėtų daryti universitetas, kai jie ateina pas juos ir klausia: „Pradėkite rengti programuotojus“, bet jie neturi programuotojų, nes visi dirba „Mail.ru“, „Rambler“ ir „Yandex“, jie ten jaučiasi gerai?
Universitetas žiūri ir sako:
- Gerai, programavimas. Susiraskime kokią nors susijusią žinių sritį ir pakvieskime iš ten specialistus. Pasikvieskime žurnalistus, galinčius rašyti kopijas, elektros inžinierius, kurie gali sudaryti elektros grandines, ir matematikus, kurie gali naudotis algoritmais.
Galiausiai paaiškėja, kad tai taip pat praktiška, kaip mokyti statybininką dalelių fizikos vien todėl, kad plyta ir cementas yra pagaminti iš elementariųjų dalelių.
Tuo pačiu apie cementą ir plytas patys nekalba, nes statytoją ruošiantis fizikas nemoka statyti namų. Rezultate gauname statybininką, kuris puikiai gali apibūdinti, kaip „cementas veikia“, bet jo nematęs ir nemoka iš jo ką nors pagaminti.
Algoritmai ir duomenų struktūros yra labai geri, tačiau tai labai maža taikymo sritis. Jų skubiai reikia, pavyzdžiui, jei rašote žaidimo variklį, kompiliatorių ar tinklo protokolą.
Dauguma programuotojų sprendžia verslo problemas ten, kur nereikia algoritmų ir duomenų struktūrų.
Sunkiausia matematika yra du kartus sudėti, o paskui padalinti. Tam reikia visiškai kitų žinių. Verslo problemoms spręsti reikia daugiausia taikomųjų, o ne fundamentalių žinių.
Pradedančiam kūrėjui geriau turėti supratimą apie verslą ir kaip teisingai ir greitai surinkti reikiamas konstrukcijas iš gatavų blokų, kaip jas derinti, kaip įsitikinti, kad jos nesubyrės, žinoti, kodėl suyra, kas atsitinka, kai pasikeičia reikalavimai ir programa pradeda „sėsti ant pamatų“ kaip namas po lietaus.
Tai praktiniai dalykai ir supratimas, kaip rašyti programinę įrangą. Jis turi žinoti, kad be derintuvo jis turi įrankių rinkinį, kuris tiksliai parodys, kur programa sulėtėja.
Valentinas Dombrovskis: Toks palyginimas man atėjo į galvą: tai vertimas iš verslo kalbos į kalbą, kuria galima bendrauti kompiuteriu. Tai yra, programuotojas yra tam tikras lingvistas.
Grigorijus Petrovas: Verslui reikia rašytojo, o ne kalbininko. Rašytojas neturi žinoti, kodėl prieš tūkstantį metų šis žodis buvo paverstas šiuo. Jis turi mokėti pritaikyti šiuos žodžius.
Ko reikia norint susirasti pirmąjį kūrėjo darbą
Aleksejus Štyrnyajevas: Turbūt nėra universalaus recepto, kaip gaminti jaunesnįjį.
Jei ateini į kokią nors įmonę, tave įdarbins ne todėl, kad žinai Django, JSON ir kelis algoritmus. Greičiausiai būsite įdarbintas dėl įgūdžių, kurių šiai įmonei reikia čia ir dabar.
Yra daug įmonių, ir jos visos kelia skirtingus reikalavimus. Tokio universalaus žinių kiekio, kurį reikia įgyti norint toliau ruošti CV ir eiti ieškoti darbo, nėra.
Grigorijus Petrovas: Kai „VoxImplant“ ieškojome kelių inžinierių, mūsų technikos direktorius pagrindinį reikalavimą suformulavo taip: žmogus turi mokėti spręsti problemas. Aišku, kad jaunesnysis ne visada tai padarys efektyviai, ne pačiu geriausiu būdu ir ne visada teisingai, bet idealiu atveju tu duodi žmogui užduotį, jis pasitempia ir ją išsprendžia. Tai yra įgūdis, kurio pirmiausia ieško darbdaviai.
Zlata Obukhovskaya: Žmonės, kurie ieško darbo kitose srityse, turi tam tikrą pranašumą verslo požiūriu, nes jie jau yra nuėję tam tikrą kelią ir gali greitai išspręsti problemas. Tai minkštieji įgūdžiai, net pavadinčiau tai darbo kultūra. Dažnai universitetų absolventai dar nėra susikūrę šios darbo kultūros.
Bet vis tiek norėčiau pabandyti duoti kokį receptą pradedantiesiems.
Pirmieji žingsniai pradedančiajam kūrėjui
Zlata Obukhovskaya: Pirma, tai vis tiek yra kažkoks jūsų pačių projektas, nes reikia ką nors parašyti savo gyvenimo aprašyme ir parodyti minimalų portfolio. Šauniau, kai šie projektai kuriami ne sau, o kaip laisvai samdomas projektas – kam nors.
Po pirmųjų projektų jau galite pasidaryti gyvenimo aprašymą ir siųsti į visas įmones, kuriose yra birželio etatų. Interviu leis suprasti, ko reikia įmonėms. Anksčiau ar vėliau kas nors jus pasamdys, bent jau nedidelėje įmonėje. Vėliau ši darbo patirtis suteiks galimybę patekti į didesnę ir įdomesnę įmonę.
Valentinas Dombrovskis: Beje, savo kursuose mes ruošiame studentus turėti savo projektą per 10 savaičių nuo mokymų. Be to, laviname komandos tobulėjimo įgūdžius. Būtent apie šiuos minkštuosius įgūdžius kalbėjo Zlata.
Aleksejus Štyrnyajevas: Iš patirties galiu pasakyti, kad pirmojo darbo paieška gali užtrukti labai ilgai. Kai ieškote mėnesį ar du, tai normalu. Jei pateiksite savo CV visoms įmonėms, eikite į pokalbius, trečią mėnesį tikrai ką nors rasite.
Valentinas Dombrovskis: Galite iškirpti savo projektus arba imtis paprastų laisvai samdomų projektų ir tuo pat metu išsiųsti savo gyvenimo aprašymą.
Kokias perspektyvas turi Python kūrėjas?
Zlata Obukhovskaya: Python kūrėjas gali eiti bet kur. Galite pradėti bandymus ir toliau tobulėti iki vyresniojo architekto. Ar net į valdymą. Yra įvairių tipų techninių vadovų, ir jūs galite užaugti iki aukščiausio lygio vadovų. Galite plėtoti duomenų mokslą, „DevOps“, įsitraukti į automatinį testavimą ar mašininį mokymąsi.
Valentinas Dombrovskis: Apskritai, yra daug galimybių ir galimybių, įskaitant mūsų kursus. Prie įėjimo daug žinių nereikia, tačiau tuomet patartina aprėpti platesnį spektrą, nes kuo daugiau, tuo geriau.
***
Tai tik dalis išleidimo . Yra pilna serijos versija .
Ar net pažiūrėkite:

Ačiū, kad skaitėte, klausotės ar žiūrėjote.
Šaltinis: www.habr.com
