Am realizat o deschidere scurtă cu principalele idei din Python Junior Podcast: am discutat despre de unde să înceapă și încotro să se îndrepte un dezvoltator începător în Python. În ultima vreme, am avut mult conținut pentru mid-level și seniori, dar acest episod este definitiv pentru juniori.

Temele principale:
- Ce cunoștințe sunt necesare unui programator începător pentru a se ocupa de
dezvoltarea web? - Ce așteaptă angajatorii de la dezvoltatori?
- Ce să faci pentru a găsi un loc de muncă fără experiență?
- Cum poate evolua un dezvoltator Python?
Python Junior Podcast — un podcast despre programare pentru cei care doresc să înțeleagă mai bine Python. Edițiile sunt prezentate de evangheliști ai comunității și profesori ai cursurilor .
În discuție au participat:
- Valentin Dombrovsky,cofondator MoscowPython
- Zlata Obukhovskaya, team lead NVIDIA
- Grigory Petrov, evanghelist MoscowPython
- Alexey Shtyrnyayev, dezvoltator la FinEx, profesor al cursurilor Learn
Python
De ce Python este bun pentru dezvoltarea web
Valentin Dombrovsky: De ce tocmai Python se potrivește pentru dezvoltarea web? De ce nu PHP sau JavaScript, de exemplu?
Grigory Petrov: Ei bine, nu prea sunt multe opțiuni. Chiar dacă astăzi în Web putem practic funcționa fără backend — pur și simplu cu tehnologii frontend, pe JavaScript — să construim o aplicație cu pagină unică sau o aplicație web progresivă, totuși, este prea complicat, se indexează prost și necesită dezvoltatori foarte buni.
Dacă dorim să facem un site sau un serviciu, folosim o abordare combinată: avem un backend care realizează logica și generează paginile web, iar un frontend care afișează aceste pagini web în browser. Și când trebuie să adunăm rapid toate acestea, opțiunile nu sunt multe.
Să luăm în considerare variantele posibile.
- C#. Microsoft chiar a făcut o treabă bună, au creat .NET Core și o promovează în mod activ. Dar, pe de o parte, este o tehnologie nouă cross-platform și nu totul este perfect. Pe de altă parte, este cu adevărat scump, dezvoltatorii C# sunt puțini — pur și simplu pentru că este nepopular.
- Java. Este complicat. Să faci un site decent pe Java nu este de 10 linii de cod, ca în Python. Este mult cod, sunt framework-uri, și trebuie să cunoști specificul configurării serverelor Java. În general, sunt doar dureri și suferințe.
- PHP. În versiunile recente, este minunat. Chiar aș spune: PHP 7.2 nu este mai prejos decât Python. Totuși, nu poți pur și simplu să folosești PHP 7.2. Dacă un dezvoltator obișnuit, nu de top, își construiește un site pe PHP, nu va scrie doar pe 7.2: tot va trebui să citească câteva manuale, tutoriale; peste tot este plin de cod vechi, și asta nu este foarte bine.
- JavaScript și Node.js. Este minunat și foarte modern când un singur limbaj este folosit atât pe front-end, cât și pe back-end. Numai că nu este foarte stabil. Node.js este o unealtă bună, dar este complicat să o desfășori în producție astfel încât să nu cadă și să funcționeze stabil. În plus, dacă vrem să scriem cod de calitate în JavaScript, avem nevoie nu de JavaScript, ci de TypeScript. Iar TypeScript este dintr-o dată neașteptat de complex, când îl văd, dezvoltatorii obișnuiți își pierd mințile.
Să lăsăm deoparte Ruby, Haskell, Erlang și alte lucruri de nișă, și ne rămâne… Python. Un limbaj cu o sintaxă consistentă, o bibliotecă standard uniformă, documentația cea mai bună, framework-uri populare și ușoare, precum mega-popularul Django.
Se pare că, în ciuda celei mai largi selecții, dacă avem dezvoltatori obișnuiți, nu de top, suntem o afacere obișnuită care vrea să facă site-uri obișnuite, nu avem un departament de dezvoltare de 50 de oameni, atunci optăm pentru Python.
Ce cunoștințe sunt necesare pentru a intra în profesie
Zlata Obukhòvskaya: Cred că trebuie să cunoști bine un framework — și să știi care sunt altele și când se folosesc. Unde e Tornado, unde e Django, unde e Flask, unde e aiohttp și așa mai departe.
Va fi util să știi că există așa ceva ca protocoalele. În special, cunoașterea protocolului http este esențială pentru construirea aplicațiilor web.
De asemenea, trebuie să ai o idee măcar aproximativă despre cum funcționează front-end-ul în proiectele web: ce sunt HTML, CSS, JS.
Alexey Shternyayev: Și să știi unde se află documentația. Aceasta este cea mai importantă.
Grigory Petrov: Aici pășim pe un teren foarte instabil. Dacă nu am avut noroc și am început să studiem serios front-end-ul modern, acesta va fi de aproximativ 10 ori mai complicat decât back-end-ul pe Python. Unui dezvoltator începător trebuie să-i restrângă focusul astfel încât să înceapă să studieze HTML, dar să nu cadă în toate aceste div, span, float, cum se aliniază și se aranjează totul.
Alexey Shternyayev: Este nevoie de un curs de bază despre Bootstrap. Și de noțiuni fundamentale de HTML.
În primul an nu este bine să te specializezi în framework-urile JS (dacă te concentrezi pe backend). În cursul de bază despre Bootstrap, există module gata făcute: vrei un slider – fă un slider, vrei un meniu plutitor – fă un meniu plutitor.
Zlata Obukhòvskaya: Cred că, după ce ai învățat frontendul, poți să te aprofundezi, în special, în modul în care este livrată staticita web aplicațiilor. Astfel, dezvoltatorul trece treptat la a învăța cum este, în principiu, construită arhitectura web aplicațiilor și cum acestea funcționează pe producție.
Grigory Petrov: Da, aș recomanda imediat în cazul în care ai ales Python ca limbaj de dezvoltare backend și, de exemplu, Django ca framework: Django are documentație în Django Book, care este cu adevărat grozavă, cuprinde tot ce a menționat Zlata, este într-adevăr bună pentru începători.
Alexey Shternyayev: De asemenea, pentru un start rapid, ar fi potrivit un tutorial precum Django Girls, dacă scopul este să înveți exact Django. Este un tutorial în care poți să treci prin noțiuni de bază într-o singură zi, să înțelegi fundamentele și ce poate face frameworkul.
Valentin Dombrovsky: Pregătindu-ne pentru înregistrarea unui podcast, am elaborat o listă cu ceea ce are nevoie un programator Python pentru dezvoltarea web, cu care ne rezumăm la cele spuse anterior.
Ce include baza pentru dezvoltarea web în Python
- Frameworkuri web precum Django, Flask, aiohttp, Tornado etc. (și să fii conștient de celelalte).
- Protocele și API-uri: în primul rând http, JSON-RPC, Protocol Buffers, gRPC.
- ORM-uri și migrații, baze de date relaționale, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Fundamentele HTML, CSS, Bootstrap, precum și framework-urile JS și JQuery.
- Principiile funcționării aplicațiilor pe producție, teste, teste unitare, teste automate, sisteme de control al versiunilor, git.
Sunt necesare algoritmi pentru juniori?
Zlata Obukhòvskaya: La început nu trebuie să știi algoritmi, aceștia apar treptat în minte, dacă te ocupi de dezvoltare o perioadă suficient de lungă. Cunoaștem o mulțime de ingineri buni care nu au avut un curs formal bun despre algoritmi.
Grigory Petrov: Vreau să adaug puțin combustibil la flacără. De unde provine de fapt dorința noastră pentru algoritmi?
În prezent nu avem o educație fundamentală în algoritmi, nu știm să educăm programatorii, nu avem baza tehnică.
Se încearcă acest lucru, dar aici avem povestea Hogwarts: nu putem crea o școală de vrăjitorie până când nu avem măcar un vrăjitor. Așadar, ce ar trebui să facă universitatea, la care vin și spun: „Începeți să pregătiți programatori”, iar programatorii nu sunt acolo, pentru că toți lucrează la Mail.ru, Rambler și Yandex, unde le este bine?
La universitate se uită și spun:
— OK, programare. Hai să găsim un domeniu de cunoștințe conex și să invităm specialiști din acesta. Să invităm jurnaliști care pot scrie texte, ingineri electrici care pot crea scheme electrice și matematicieni care se pricep la algoritmi.
În rezultat, ajungem la ceva care este la fel de lucrativ ca a învăța un constructor despre fizica particulelor elementare pur și simplu pentru că cărămida și cimentul sunt formate din particule elementare.
Însă nu se vorbește despre ciment și cărămidă, pentru că fizicianul care încearcă să-l învețe pe constructor nu știe cum să construiască o casă. În rezultat, avem un constructor capabil să explice perfect cum „funcționează cimentul”, dar nu l-a văzut niciodată și nu știe să facă nimic din el.
Algoritmii și structurile de date sunt foarte bine, dar este un domeniu aplicațional foarte mic. Ele sunt esențiale, de exemplu, dacă scrii un motor de joc, un compilator sau un protocol de rețea.
Majoritatea programatorilor rezolvă sarcini de afaceri, unde nu sunt necesare algoritmi și structuri de date.
Acolo, cea mai complexă matematică este să aduni de două ori și apoi să împarți. Acolo sunt necesare cunoștințe complet diferite. Pentru a rezolva problemele de afaceri, sunt necesare în principal cunoștințe aplicaționale, nu fundamentale.
Un dezvoltator începător ar trebui să aibă o idee despre afaceri și despre cum să construiască rapid și corect structuri din blocuri gata făcute, cum să le depaneze, cum să facă astfel încât acestea să nu se prăbușească, să știe de ce se prăbușesc, ce se întâmplă când cerințele se schimbă și programul începe să „se așeze pe temelie”, ca o casă după ploaie.
Aceste lucruri aplicaționale și înțelegerea modului de a scrie software. Trebuie să știe că, în afară de debugger, are un set de instrumente care îi va arăta exact unde programa îngreunează.
Valentin Dombrovsky: Mi-a venit în minte o astfel de comparație: este ca un traducător de la limba afacerilor la o limbă cu care se poate comunica cu un computer. Așadar, programatorul este un fel de lingvist specific.
Grigory Petrov: O afacere are nevoie de un scriitor, nu de un lingvist. Scriitorul nu trebuie să știe de ce cuvântul acesta s-a transformat în acel alt cuvânt acum o mie de ani. Trebuie să știe să folosească aceste cuvinte.
Ce este necesar pentru a găsi prima slujbă ca dezvoltator
Alexey Shternyayev: Probabil că nu există o rețetă universală pentru a pregăti un junior.
Dacă te alături unei companii, nu te vor angaja pentru că știi Django, JSON și puțină teorie a algoritmilor. Cel mai probabil, te vor angaja pentru abilitățile care sunt necesare companiei aici și acum.
Există multe companii, iar cerințele fiecărei companii sunt diferite. Nu există un volum universal de cunoștințe pe care trebuie să-l obții pentru a-ți pregăti CV-ul și a aplica pentru o slujbă.
Grigory Petrov: Când căutam câțiva juniori la VoxImplant, directorul nostru tehnic a formulat cerința de bază astfel: persoana trebuie să fie capabilă să rezolve probleme. Este evident că un junior nu o va face întotdeauna eficient, în cel mai bun mod și nu întotdeauna corect, dar ideal este că îi dai o sarcină, el se mobilizează și o rezolvă. Aceasta este abilitatea pe care angajatorii o caută în primul rând.
Zlata Obukhòvskaya: Oamenii care caută muncă venind din alte domenii au, din perspectiva afacerilor, un anumit avantaj, deoarece au parcurs deja un anumit parcurs și știu să rezolve probleme rapid. Acestea sunt abilități interumane, aș numi chiar cultura muncii. Adesea, absolvenții universităților nu au dezvoltat încă această cultură a muncii.
Dar aș dori totuși să încerc să ofer o rețetă pentru începători.
Primii pași pentru un dezvoltator începător
Zlata Obukhòvskaya: Primul lucru este totuși să ai un proiect personal, deoarece trebuie să ai ceva în CV, să arăți un portofoliu minim. Este și mai bine când aceste proiecte sunt realizate nu pentru tine, ci pentru altcineva pe freelance.
După primele proiecte, poți deja să-ți creezi CV-ul și să-l trimiti tuturor companiilor care au posturi pentru juniori. Interviurile îți vor oferi o înțelegere a ceea ce au nevoie companiile. Mai devreme sau mai târziu, cineva te va angaja, chiar și într-o companie mică. Ulterior, această experiență de muncă îți va oferi oportunitatea de a ajunge într-o companie mai mare și mai interesantă.
Valentin Dombrovsky: De fapt, în cursurile noastre pregătim elevii să-și creeze propriul proiect în decurs de 10 săptămâni de studiu. În plus, ne dezvoltăm abilități de lucru în echipă. Acestea sunt exact abilitățile soft despre care vorbea Zlata.
Alexey Shternyayev: Din experiență, pot spune că căutarea primului loc de muncă poate dura foarte mult. Când cauți timp de o lună sau două, este normal. Dacă trimiti CV-uri la toate companiile și participi la interviuri, în a treia lună cu siguranță vei găsi ceva.
Valentin Dombrovsky: Poți lucra la proiectele tale sau poți prelua proiecte simple pe freelance, în timp ce te ocupi de trimiterea CV-urilor.
Ce perspective are un dezvoltator Python?
Zlata Obukhòvskaya: Un dezvoltator Python poate merge oriunde. Poate să se îndrepte spre testare, să avanseze până la arhitect senior sau chiar în management. Managerii tehnici sunt diferiți și poți ajunge până la managementul de vârf. Poți să te dezvolți în data science, DevOps, să mergi în testare automată sau machine learning.
Valentin Dombrovsky: În general, sunt o mulțime de variante și oportunități, inclusiv cursurile noastre. Inițial, nu ai nevoie de multe cunoștințe, dar ar fi bine să acoperi un spectru mai larg ulterior, pentru că cu cât poți face mai mult, cu atât este mai bine pentru tine.
***
Aceasta este doar o parte din emisiune. . Poți asculta versiunea completă a episodului .
Sau chiar să o vizionezi:

Îți mulțumim că ai citit, ascultat sau vizionat.
Sursa: habr.com
