Am realizat o scurtă transcriere cu gândurile principale din Podcastul Python Junior: în el am discutat de unde să începem și unde să mergem ca dezvoltator Python începător. În ultima vreme avem foarte mult conținut pentru medii și seniori, dar acest episod este cu siguranță pentru juniori.

Principalele subiecte:
- De ce cunoștințe trebuie să exerseze un programator începător
dezvoltare web? - Ce așteaptă angajatorii de la dezvoltatori?
- Ce să faci pentru a-ți găsi un loc de muncă fără experiență?
- Cum se poate dezvolta un dezvoltator Python?
Python Junior Podcast este un podcast de programare pentru cei care doresc să înțeleagă mai bine Python. Emisiunile sunt conduse de evangheliști comunitari și profesorii de curs .
Participanții la conversație:
- Valentin Dombrovsky,co-fondator al MoscowPython
- Zlata Obukhovskaya, Conducător de echipă NVIDIA
- Grigori Petrov, evanghelist MoscowPython
- Alexey Shtyrnyaev, dezvoltator la FinEx, profesor de cursuri Learn
Piton
De ce Python este bun pentru dezvoltarea web
Valentin Dombrovsky: De ce este Python potrivit pentru dezvoltarea web? De ce nu PHP sau JavaScript, de exemplu?
Grigori Petrov: Deci nu prea este de ales. În ciuda faptului că în web-ul modern puteți construi o aplicație cu o singură pagină sau o aplicație web progresivă fără backend - folosind exclusiv tehnologii front-end, folosind JavaScript - este încă prea complicat, prost indexat și necesită dezvoltatori cool.
Dacă vrem să realizăm un site web sau un serviciu, folosim o abordare combinată: unii backend implementează logica și creează pagini web, iar unii frontend desenează aceste pagini web în browser. Și când trebuie să punem totul laolaltă pe ceva, nu avem de ales.
Să ne uităm la opțiunile posibile.
- C#. Microsoft este cu adevărat grozav, au făcut .NET Core și îl promovează în toate modurile posibile. Dar, în primul rând, aceasta este o nouă tehnologie multiplatformă și nu totul este încă bine acolo. În al doilea rând, este foarte scump, sunt puțini dezvoltatori C# - pur și simplu pentru că este nepopular.
- Java. Este complicat. Crearea unui site web normal în Java nu necesită 10 linii de cod, ca în Python. Acesta este o mulțime de cod, acestea sunt cadre și trebuie să cunoașteți specificul instalării serverelor Java. În general, durere și suferință continuă.
- PHP. În ultimele versiuni este minunat. Voi spune chiar asta: PHP 7.2 nu este mai rău decât Python. Dar nu puteți pur și simplu să preluați și să utilizați PHP 7.2. Dacă un dezvoltator obișnuit, nu de top, face un site web în PHP, nu va scrie doar în 7.2: va trebui totuși să citească niște manuale, tutoriale, există mult cod legacy peste tot, iar asta nu este foarte bine.
- JavaScript și Node.js. Este minunat și foarte modern când există o singură limbă atât pe front-end, cât și pe back-end. Doar că nu foarte stabil. Node.js este un lucru bun, dar este problematic să îl implementați în producție, astfel încât să nu se blocheze și să funcționeze stabil. În plus, dacă vrem să scriem cod JavaScript de calitate, nu avem nevoie de JavaScript, ci de TypeScript. Dar TypeScript este neașteptat de complex, iar creierul unui dezvoltator mediu fierbe când îl văd.
Să lăsăm deoparte Ruby, Haskell, Erlang și alte chestii de nișă, și am rămas cu... Python. Un limbaj cu sintaxă consistentă, o bibliotecă standard uniformă, cea mai bună documentație, cadre ușoare populare și mega-populara combinație Django.
Se dovedește că, în ciuda celei mai largi alegeri, dacă avem dezvoltatori obișnuiți, nu de top, suntem o afacere obișnuită care vrea să facă site-uri web obișnuite, nu avem un departament de dezvoltare pentru 50 de oameni, atunci luăm Python.
Ce cunoștințe sunt necesare pentru a intra în profesie?
Zlata Obukhovskaya: Cred că trebuie să cunoașteți bine un cadru - și să știți ce există altele și când sunt utilizate. Unde este Tornado, unde este Django, unde este Flask, unde este aiohttp și așa mai departe.
Va fi util să știți că există așa ceva ca protocoalele. În special, cunoașterea protocolului http este esențială pentru construirea de aplicații web.
De asemenea, trebuie să înțelegeți cel puțin aproximativ cum funcționează front-end-ul în proiectele web: ce este HTML, CSS, JS.
Alexey Shtyrnyaev: Și știi unde este documentația. Este cel mai important.
Grigori Petrov: Aici călcăm pe un teren foarte zdruncinat. Dacă avem ghinion și începem cumva să studiem serios frontend-ul modern, atunci va fi de aproximativ 10 ori mai complicat decât backend-ul în Python. Un dezvoltator începător trebuie să-și limiteze concentrarea, astfel încât să poată începe să învețe HTML, dar să nu se piardă în toate aceste div-uri, spans, floats, cum totul este aliniat și aliniat.
Alexey Shtyrnyaev: Aveți nevoie de un curs de bază Bootstrap. Și elementele de bază ale HTML.
În primul an, nu ar trebui să vă aprofundați în cadrele JS (dacă vă concentrați pe backend). Cursul de bază Bootstrap are deja module gata făcute: dacă doriți un slider, faceți un slider; dacă doriți un meniu plutitor, faceți un meniu plutitor.
Zlata Obukhovskaya: Cred că în timp ce studiezi frontend-ul, te poți scufunda, în special, în modul în care static este, în general, dat aplicațiilor web. În acest fel, dezvoltatorul trece fără probleme pentru a începe să învețe cum funcționează în principiu arhitectura aplicațiilor web și cum trăiesc acestea în producție.
Grigori Petrov: Da, îl voi recomanda imediat în cazul în care ați ales Python ca limbaj de dezvoltare backend și, de exemplu, Django ca cadru: Django are documentație în Django Book, este foarte tare, conține tot ce a spus Zlata, ea într-adevăr bun pentru un incepator.
Alexey Shtyrnyaev: Unele fete Django sunt, de asemenea, potrivite pentru un început rapid dacă scopul tău este să înveți Django. Acesta este un tutorial în care într-o zi puteți trece peste partea de sus, puteți înțelege elementele de bază și de ce este capabil cadrul.
Valentin Dombrovsky: În pregătirea pentru înregistrarea podcastului, am compilat o listă cu ceea ce are nevoie un programator Python pentru dezvoltarea web, care rezumă ceea ce am spus mai devreme.
Ce este inclus în elementele de bază pentru dezvoltarea web în Python
- Cadre web Django, Flask, aiohttp, Tornado, etc. (și știu despre existența altora).
- Protocoale și API-uri: în primul rând http, JSON-RPC, Protocol Buffers, gRPC.
- ORM și migrații, baze de date relaționale, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Elemente de bază ale HTML, CSS, Bootstrap, precum și ale cadrelor JS și JQuery.
- Principii de funcționare a aplicațiilor în producție, testare, teste unitare, autotestare, sisteme de control al versiunilor, git.
Juniorii au nevoie de algoritmi?
Zlata Obukhovskaya: La început, nu trebuie să cunoașteți algoritmii; aceștia vor apărea treptat în cap dacă vă implicați în dezvoltare suficient de mult. Cunosc o mulțime de ingineri buni care nu au avut un curs bun de algoritmi formali.
Grigori Petrov: Vreau să adaug combustibil la foc. De unde ne vine pofta de algoritmi?
În prezent nu avem o educație fundamentală în algoritmi, nu știm să pregătim programatori, nu avem o bază tehnică.
Ei încearcă să facă asta, dar aici avem povestea lui Hogwarts: nu putem crea o școală pentru vrăjitori în timp ce nu avem un singur vrăjitor. Prin urmare, ce ar trebui să facă o universitate atunci când vin la ei și îi întreabă: „Începe să antrenezi programatori”, dar nu au programatori, pentru că toată lumea lucrează la Mail.ru, Rambler și Yandex, sunt fericiți acolo?
Universitatea se uită și spune:
- Bine, programare. Să găsim o zonă de cunoștințe conexe și să invităm specialiști de acolo. Să invităm jurnalişti care pot scrie copii, ingineri electrici care pot face circuite electrice şi matematicieni care pot folosi algoritmi.
În cele din urmă, se dovedește că acest lucru este la fel de practic precum predarea unui constructor de fizică a particulelor doar pentru că cărămida și cimentul sunt făcute din particule elementare.
În același timp, ei înșiși nu vorbesc despre ciment și cărămizi, pentru că fizicianul care încearcă să pregătească un constructor nu știe să construiască case. Drept urmare, obținem un constructor care este capabil să descrie perfect cum funcționează „cimentul”, dar nu l-a văzut niciodată și nu știe cum să facă nimic din el.
Algoritmii și structurile de date sunt foarte bune, dar aceasta este o zonă de aplicație foarte mică. Sunt necesare urgent, de exemplu, dacă scrieți un motor de joc, un compilator sau un protocol de rețea.
Majoritatea programatorilor rezolvă probleme de afaceri în care nu sunt necesari algoritmi și structuri de date.
Cea mai dificilă matematică de acolo este adunarea de două ori și apoi împărțirea. Este nevoie de cunoștințe complet diferite. Rezolvarea problemelor de afaceri necesită în principal cunoștințe aplicate, mai degrabă decât fundamentale.
Este mai bine pentru un dezvoltator începător să înțeleagă afacerile și cum să asambleze corect și rapid structurile necesare din blocuri gata făcute, cum să le depaneze, cum să se asigure că nu se destramă, să știe de ce se destramă, ce se întâmplă când cerințele se schimbă și programul începe să se „aseze pe fundație” ca o casă după ploaie.
Acestea sunt lucruri practice și o înțelegere a modului de a scrie software. Trebuie să știe că, pe lângă depanator, are un set de instrumente care vor arăta exact unde încetinește programul.
Valentin Dombrovsky: Mi-a venit în minte această comparație: aceasta este o traducere din limbajul afacerilor într-o limbă în care poți comunica cu un computer. Adică, un programator este un fel de lingvist specific.
Grigori Petrov: Afacerile au nevoie de un scriitor, nu de un lingvist. Scriitorul nu trebuie să știe de ce acum o mie de ani acest cuvânt a fost transformat în acesta. El trebuie să fie capabil să aplice aceste cuvinte.
De ce ai nevoie pentru a-ți găsi primul loc de muncă ca dezvoltator
Alexey Shtyrnyaev: Probabil că nu există o rețetă universală pentru cum să gătești junior.
Dacă vii la vreo companie, te vor angaja nu pentru că știi Django, JSON și câțiva algoritmi. Cel mai probabil veți fi angajat pentru abilitățile de care această companie are nevoie aici și acum.
Există multe companii și toate au cerințe diferite. Nu există o astfel de cantitate universală de cunoștințe care trebuie obținută pentru a pregăti în continuare un CV și a găsi un loc de muncă.
Grigori Petrov: Când noi, la VoxImplant, căutam mai mulți ingineri, directorul nostru tehnic a formulat cerința de bază astfel: o persoană trebuie să fie capabilă să rezolve problemele. Este clar că un junior nu va face întotdeauna acest lucru eficient, nu în cel mai bun mod și nu întotdeauna corect, dar în mod ideal îi dai unei persoane o sarcină, el se încordează și o rezolvă. Aceasta este abilitatea pe care o caută în primul rând angajatorii.
Zlata Obukhovskaya: Oamenii care caută de lucru din alte domenii au un oarecare avantaj din punct de vedere al afacerii pentru că au parcurs deja un drum și sunt capabili să rezolve rapid problemele. Acestea sunt abilități soft, chiar aș numi-o cultură a muncii. Adesea, absolvenții de facultate nu au dezvoltat încă această cultură a muncii.
Dar aș vrea totuși să încerc să ofer un fel de rețetă începătorilor.
Primii pași pentru un dezvoltator începător
Zlata Obukhovskaya: Primul este că acesta este încă un fel de proiect al tău, pentru că trebuie să scrii ceva în CV-ul tău și să arăți un portofoliu minim. Este mai tare când aceste proiecte nu sunt făcute pentru tine, ci ca proiect independent - pentru cineva.
După primele proiecte, poți deja să faci un CV și să-l trimiți tuturor companiilor unde există posturi în iunie. Interviurile vor oferi o perspectivă asupra de ce au nevoie companiile. Mai devreme sau mai târziu cineva te va angaja, cel puțin într-o companie mică. Ulterior, această experiență de lucru vă va oferi oportunitatea de a intra într-o companie mai mare și mai interesantă.
Valentin Dombrovsky: Apropo, în cursurile noastre pregătim studenții să aibă propriul proiect în termen de 10 săptămâni de la formare. În plus, antrenăm abilități de dezvoltare a echipei. Acestea sunt exact abilitățile soft despre care a vorbit Zlata.
Alexey Shtyrnyaev: Vă pot spune din experiență că poate dura foarte mult timp să vă căutați primul loc de muncă. Când cauți o lună sau două, este normal. Daca iti depui CV-ul la toate companiile, mergi la interviuri, in a treia luna cu siguranta vei gasi ceva.
Valentin Dombrovsky: Puteți să vă tăiați propriile proiecte sau să vă ocupați de proiecte independente simple și, în același timp, să vă trimiteți CV-ul.
Ce perspective are un dezvoltator Python?
Zlata Obukhovskaya: Un dezvoltator Python poate merge oriunde. Puteți intra în testare și puteți continua să vă dezvoltați până la un arhitect senior. Sau chiar în management. Există diferite tipuri de manageri tehnici și puteți ajunge la conducerea de vârf. Vă puteți dezvolta în știința datelor, DevOps, puteți intra în testare automată sau învățare automată.
Valentin Dombrovsky: În general, există o mulțime de opțiuni și oportunități, inclusiv cursurile noastre. Nu aveți nevoie de multe cunoștințe la intrare, dar este indicat să acoperiți apoi o gamă mai largă, pentru că cu cât puteți mai multe, cu atât mai bine pentru dvs.
***
Aceasta este doar o parte din lansare . Versiunea completă a episodului este disponibilă .
Sau macar uita-te:

Mulțumesc pentru citit, ascultat sau vizionat.
Sursa: www.habr.com
