Python til nettet: hvad en junior skal vide for at arbejde og udvikle sig

Vi lavede en kort transskription med hovedtankerne fra Python Junior Podcasten: I den diskuterede vi, hvor vi skulle starte, og hvor vi skulle gå som nybegynder Python-udvikler. På det seneste har vi en masse indhold til mellem- og seniorer, men denne episode er bestemt for juniorer.

Python til nettet: hvad en junior skal vide for at arbejde og udvikle sig

Hovedemner:

  • Hvilken viden har en nybegynder programmør brug for at øve sig på
    web-udvikling?
  • Hvad forventer arbejdsgiverne af udviklere?
  • Hvad skal man gøre for at finde et job uden erfaring?
  • Hvordan kan en Python-udvikler udvikle sig?

Python Junior Podcast er en programmeringspodcast for dem, der ønsker at forstå Python bedre. Udsendelser ledes af samfundsevangelister Moskva Python og kursuslærere Lær python.

Deltagere i samtalen:

  • Valentin Dombrovsky,medstifter af MoscowPython
  • Zlata Obukhovskaya, NVIDIA-teamleder
  • Grigory Petrov, evangelist Moskva Python
  • Alexey Shtyrnyaev, udvikler hos FinEx, underviser i Lær kurser
    Python

Hvorfor Python er godt til webudvikling

Valentin Dombrovsky: Hvorfor er Python velegnet til webudvikling? Hvorfor ikke f.eks. PHP eller JavaScript?

Grigory Petrov: Så der er ikke meget valg. På trods af, at man i det moderne web faktisk kan bygge en enkeltsideapplikation eller progressiv webapplikation uden en backend - rent ved hjælp af frontend-teknologier, ved hjælp af JavaScript - er det stadig for kompliceret, dårligt indekseret og kræver seje udviklere.

Hvis vi vil lave en hjemmeside eller en tjeneste, bruger vi en kombineret tilgang: nogle backend implementerer logikken og opretter websider, og nogle frontend tegner disse websider i browseren. Og når vi hurtigt skal sætte det hele sammen på noget, har vi ikke rigtig et valg.

Lad os se på de mulige muligheder.

  • C#. Microsoft er virkelig fantastisk, de lavede .NET Core og promoverer det på alle mulige måder. Men for det første er dette en ny teknologi på tværs af platforme, og ikke alt er glat der endnu. For det andet er det rigtig dyrt, der er få C#-udviklere – simpelthen fordi det er upopulært.
  • Java. Det er kompliceret. At lave en normal hjemmeside i Java kræver ikke 10 linjer kode, som i Python. Dette er meget kode, det er rammer, og du skal kende detaljerne ved opsætning af Java-servere. Generelt vedvarende smerte og lidelse.
  • PHP. I de seneste versioner er det vidunderligt. Jeg vil endda sige dette: PHP 7.2 er ikke værre end Python. Men du kan ikke bare hente og bruge PHP 7.2. Hvis en almindelig, ikke topudvikler laver et websted i PHP, vil han ikke kun skrive i 7.2: han skal stadig læse nogle lærebøger, tutorials, der er en masse ældre kode overalt, og det er ikke særlig godt.
  • JavaScript og Node.js. Det er vidunderligt og meget moderne, når der er ét sprog på både front-end og back-end. Bare ikke særlig stabil. Node.js er en god ting, men det er problematisk at implementere det i produktionen, så det ikke går ned og fungerer stabilt. Plus, hvis vi vil skrive kvalitets JavaScript-kode, har vi ikke brug for JavaScript, men TypeScript. Men TypeScript er uventet komplekst, og den gennemsnitlige udviklers hjerne koger, når de ser det.

Lad os udelade Ruby, Haskell, Erlang og andre niche-ting, og vi står tilbage med... Python. Et sprog med ensartet syntaks, et ensartet standardbibliotek, den bedste dokumentation, populære letvægtsrammer og den megapopulære Django-kombination.

Det viser sig, at trods det bredeste udvalg, hvis vi har almindelige, ikke topudviklere, er vi en almindelig virksomhed, der gerne vil lave almindelige hjemmesider, vi har ikke en udviklingsafdeling til 50 personer, så tager vi Python.

Hvilken viden er nødvendig for at komme ind i faget?

Zlata Obukhovskaya: Jeg tror på, at man skal kende én ramme godt – og vide, hvad andre findes, og hvornår de bruges. Hvor er Tornado, hvor er Django, hvor er Flask, hvor er aiohttp og så videre.
Det vil være nyttigt at vide, at der er sådan noget som protokoller. Især viden om http-protokollen er central for opbygning af webapplikationer.

Du skal også i det mindste nogenlunde forstå, hvordan frontend fungerer i webprojekter: hvad er HTML, CSS, JS.

Alexey Shtyrnyaev: Og ved, hvor dokumentationen er. Det er vigtigst.

Grigory Petrov: Her træder vi på meget gyngende grund. Hvis vi er uheldige, og vi på en eller anden måde for alvor begynder at studere den moderne frontend, så vil den være omkring 10 gange mere kompliceret end backend i Python. En nybegynder udvikler skal begrænse sit fokus, så han kan begynde at lære HTML, men ikke falde ind i alle disse divs, spænder, flydere, hvordan alt er justeret og linet op.

Alexey Shtyrnyaev: Har brug for et grundlæggende Bootstrap-kursus. Og det grundlæggende i HTML.

I det første år bør du ikke dykke ned i JS frameworks (hvis du fokuserer på backend). Det grundlæggende Bootstrap-kursus har allerede færdige moduler: hvis du vil have en skyder, lav en skyder, hvis du vil have en flydende menu, lav en flydende menu.

Zlata Obukhovskaya: Jeg tror, ​​at mens du studerer frontend, kan du især fordybe dig i, hvordan statik generelt gives til webapplikationer. På denne måde går udvikleren gnidningsløst videre for at begynde at lære, hvordan arkitekturen af ​​webapplikationer fungerer i princippet, og hvordan de lever i produktionen.

Grigory Petrov: Ja, jeg vil anbefale det med det samme, hvis du valgte Python som backend-udviklingssprog og for eksempel Django som ramme: Django har dokumentation i Django-bogen, den er virkelig cool, den indeholder alt, hvad Zlata sagde, hun virkelig godt for en begynder.

Alexey Shtyrnyaev: Nogle Django Girls er også velegnede til en hurtig start, hvis dit mål er at lære Django. Dette er en tutorial, hvor du på én dag kan gå over toppen, forstå det grundlæggende, og hvad rammerne er i stand til.

Valentin Dombrovsky: Som forberedelse til optagelse af podcasten har vi udarbejdet en liste over, hvad en Python-programmør har brug for til webudvikling, som opsummerer, hvad vi sagde tidligere.

Hvad er inkluderet i det grundlæggende for webudvikling i Python

  • Web frameworks Django, Flask, aiohttp, Tornado osv. (og kender til eksistensen af ​​andre).
  • Protokoller og API'er: primært http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM og migrationer, relationsdatabaser, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Grundlæggende om HTML, CSS, Bootstrap, samt JS frameworks og JQuery.
  • Principper for applikationsdrift i produktion, test, enhedstest, autotest, versionskontrolsystemer, git.

Har juniorer brug for algoritmer?

Zlata Obukhovskaya: I første omgang behøver du ikke at kende algoritmerne, de vil gradvist dukke op i dit hoved, hvis du engagerer dig i udvikling længe nok. Jeg kender et væld af gode ingeniører, der ikke har haft et godt formelt algoritmekursus.

Grigory Petrov: Jeg vil gerne fylde brænde på bålet. Hvor kommer vores trang til algoritmer fra?

Vi har i øjeblikket ikke en grundlæggende uddannelse i algoritmer, vi ved ikke, hvordan man træner programmører, vi har ikke en teknisk base.

De forsøger at gøre dette, men her har vi historien om Hogwarts: vi kan ikke skabe en skole for troldmænd, mens vi ikke har en eneste troldmand. Derfor, hvad skal et universitet gøre, når de kommer til dem og spørger: "Begynd at træne programmører," men de har ikke programmører, fordi alle arbejder på Mail.ru, Rambler og Yandex, de har det godt der?

Universitetet kigger og siger:
- Okay, programmering. Lad os finde noget relateret vidensområde og invitere specialister derfra. Lad os invitere journalister, der kan skrive kopi, elektroingeniører, der kan lave elektriske kredsløb, og matematikere, der kan bruge algoritmer.

I sidste ende viser det sig, at dette er lige så praktisk som at lære en bygmester partikelfysik, bare fordi mursten og cement er lavet af elementære partikler.

Samtidig taler de ikke selv om cement og mursten, fordi fysikeren, der forsøger at uddanne en bygmester, ikke ved, hvordan man bygger huse. Som et resultat får vi en bygherre, der er i stand til perfekt at beskrive, hvordan "cement virker", men som aldrig har set det og ikke ved, hvordan man laver noget ud af det.

Algoritmer og datastrukturer er meget gode, men dette er et meget lille applikationsområde. De er tvingende nødvendige, for eksempel hvis du skriver en spilmotor, compiler eller netværksprotokol.

De fleste programmører løser forretningsproblemer, hvor algoritmer og datastrukturer ikke er nødvendige.

Den sværeste matematik er at addere to gange og derefter dividere. Det kræver en helt anden viden. Løsning af forretningsproblemer kræver primært anvendt snarere end grundlæggende viden.

Det er bedre for en nybegynder udvikler at have en forståelse af forretningen og hvordan man korrekt og hurtigt samler de nødvendige strukturer fra færdige blokke, hvordan man fejlretter dem, hvordan man sikrer sig, at de ikke falder fra hinanden, ved hvorfor de falder fra hinanden, hvad sker der, når kravene ændres, og programmet begynder at "sætte sig på fundamentet" som et hus efter regn.
Det er praktiske ting og en forståelse af, hvordan man skriver software. Han skal vide, at han ud over fejlretningen har et sæt værktøjer, der viser præcis, hvor programmet bremser.

Valentin Dombrovsky: Denne sammenligning kom til mit sind: dette er en oversættelse fra erhvervssproget til et sprog, hvor du kan kommunikere med en computer. Det vil sige, at en programmør er en slags specifik lingvist.

Grigory Petrov: Virksomheden har brug for en forfatter, ikke en lingvist. Forfatteren behøver ikke at vide, hvorfor dette ord for tusind år siden blev forvandlet til dette. Han skal kunne anvende disse ord.

Hvad du skal bruge for at finde dit første job som udvikler

Alexey Shtyrnyaev: Der er formentlig ingen universel opskrift på, hvordan man laver junior.

Hvis du kommer til et eller andet firma, ansætter de dig ikke, fordi du kender Django, JSON og et par algoritmer. Du vil højst sandsynligt blive ansat til de kompetencer, som denne virksomhed har brug for her og nu.

Der er mange virksomheder, og de har alle forskellige krav. Der er ikke en sådan universel mængde viden, der skal opnås for yderligere at forberede et CV og finde et job.

Grigory Petrov: Da vi hos VoxImplant ledte efter flere ingeniører, formulerede vores tekniske direktør grundkravet således: en person skal kunne løse problemer. Det er klart, at en junior ikke altid vil gøre dette effektivt, ikke på den bedste måde og ikke altid korrekt, men ideelt set giver du en person en opgave, han anstrenger og løser den. Det er den færdighed, som arbejdsgiverne primært leder efter.

Zlata Obukhovskaya: Folk, der søger arbejde fra andre områder, har en vis fordel fra et forretningsmæssigt synspunkt, fordi de allerede er gået et stykke vej og er i stand til at løse problemer hurtigt. Det er bløde færdigheder, jeg vil endda kalde det arbejdskultur. Ofte har universitetsuddannede endnu ikke udviklet denne arbejdskultur.

Men jeg vil alligevel gerne forsøge at give en form for opskrift til begyndere.

Første trin for en nybegynder udvikler

Zlata Obukhovskaya: Den første er, at dette stadig er en slags eget projekt, fordi du skal skrive noget i dit CV og vise en minimal portfolio. Det er sejere, når disse projekter ikke er lavet for dig selv, men som et freelanceprojekt - for nogen.

Efter de første projekter kan du allerede nu lave et CV og sende det til alle virksomheder, hvor der er juni-stillinger. Samtaler vil give indsigt i, hvad virksomheder har brug for. Før eller siden vil nogen ansætte dig, i det mindste i en lille virksomhed. Efterfølgende vil denne erhvervserfaring give dig mulighed for at komme ind i en større og mere interessant virksomhed.

Valentin Dombrovsky: På vores kurser forbereder vi i øvrigt eleverne til at have deres eget projekt inden for 10 ugers træning. Derudover træner vi teamudviklingsevner. Det er præcis de bløde færdigheder, som Zlata talte om.

Alexey Shtyrnyaev: Jeg kan fortælle dig af erfaring, at det kan tage meget lang tid at søge dit første job. Når du leder efter en måned eller to, er det normalt. Indsender du dit CV til alle virksomheder, så gå til samtaler, i den tredje måned finder du helt sikkert noget.

Valentin Dombrovsky: Du kan klippe dine egne projekter eller påtage dig simple freelanceprojekter og samtidig sende dit CV ud.

Hvilke muligheder har en Python-udvikler?

Zlata Obukhovskaya: En Python-udvikler kan gå hvor som helst. Du kan gå i test og fortsætte med at udvikle dig til seniorarkitekt. Eller endda i ledelsen. Der findes forskellige typer af tekniske ledere, og du kan vokse til topledelse. Du kan udvikle dig inden for datavidenskab, DevOps, gå ind i automatiseret test eller maskinlæring.

Valentin Dombrovsky: Generelt er der rigtig mange muligheder og muligheder, også vores kurser. Du behøver ikke meget viden ved indgangen, men det er tilrådeligt at dække et bredere sortiment, for jo mere du kan, jo bedre for dig.

***

Dette er blot en del af udgivelsen Python Junior. Den fulde version af episoden er tilgængelig Hør efter.

Eller endda se:

Afspil video

Podcast RSS

Tak fordi du læste, lyttede eller så med.

Kilde: www.habr.com

Tilføj en kommentar