Python til web: hvad en junior udvikler skal vide for at arbejde og udvikle

Vi har lavet et kort sammendrag med de vigtigste tanker fra Python Junior Podcast: i den diskuterede vi, hvor man skal starte, og hvor en ny udvikler på Python kan tage hen. På det seneste har vi meget indhold til mid-levels og seniors, men denne episode er bestemt for juniorer.

Python til web: hvad en junior udvikler skal vide for at arbejde og udvikle

Vigtigste emner:

  • Hvilke færdigheder har en ny programmerer brug for for at arbejde med
    webudvikling?
  • Hvad forventer arbejdsgivere fra udviklere?
  • Hvad skal man gøre for at finde arbejde uden erfaring?
  • Hvordan kan en Python-udvikler udvikle sig?

Python Junior Podcast - en podcast om programmering for dem, der ønsker at forstå Python bedre. Programmerne ledes af samfundets evangelister MoscowPython og undervisere på kurser Learn Python.

Deltagerne i samtalen var:

  • Valentin Dombrovski,medstifter af MoscowPython
  • Zlata Obukhovskaya, teamleder hos NVIDIA
  • Grigory Petrov, evangelist hos MoscowPython
  • Aleksei Shtyrnyaev, udvikler hos FinEx, underviser på Learn-kurser
    Python

Hvorfor Python er godt til webudvikling

Valentin Dombrovski: Hvorfor er det lige præcis Python, der er egnet til webudvikling? Hvorfor ikke PHP eller JavaScript, for eksempel?

Grigory Petrov: Der er faktisk ikke meget valg. Selvom man i moderne webudvikling stort set kan klare sig uden backend - udelukkende med frontend-teknologier - og bygge en single page application eller progressive web application med JavaScript, er det stadig for svært, indekserer dårligt og kræver dygtige udviklere.

Når vi ønsker at lave et site eller en service, anvender vi en kombineret tilgang: vi har en backend, der udfører logik og opretter websteder, mens en frontend præsenterer disse websteder i browseren. Og når vi hurtigt skal samle det hele, er der ikke meget valg.

Lad os se på mulige muligheder.

  • C#. Microsoft har virkelig gjort det godt; de har lavet .NET Core og promoverer det på alle måder. Men, for det første, det er en ny cross-platform teknologi, og der er stadig nogle udfordringer. For det andet, det er virkelig dyrt, der er få C# udviklere — simpelthen fordi det ikke er populært.
  • Java. Det er kompliceret. At lave et ordentligt website med Java - det kræver ikke 10 linjer kode som med Python. Det er mange linjer kode, rammer, og man skal kende til specifikationen af Java-servere. Alt i alt, det er bare smerte og lidelse.
  • PHP. I de seneste versioner er det fantastisk. Jeg vil endda sige: PHP 7.2 er ikke værre end Python. Men man kan ikke bare tage og bruge PHP 7.2. Hvis en almindelig, ikke-topudvikler laver et website i PHP, vil han ikke kun skrive i 7.2: han bliver nødt til at læse nogle bøger, tutorials, der er masser af legacy-kode, og det er ikke særlig godt.
  • JavaScript og Node.js. Det er fantastisk og meget moderne, når der er ét sprog både på frontenden og backend. Men det er ikke særlig stabilt. Node.js er en god ting, men det er problematisk at implementere det i produktion, så det ikke falder ned og fungerer stabilt. Plus, hvis vi ønsker at skrive kvalitetskode i JavaScript, har vi brug for ikke JavaScript, men TypeScript. Og TypeScript er pludselig overraskende komplekst, når den almindelige udvikler ser det, koger hjernen over.

Lad os lade Ruby, Haskell, Erlang og andre niche ting ligge, og så har vi... Python. Et sprog med konsistent syntaks, ensartet standardbibliotek, den bedste dokumentation, populære lette rammer, og den mega populære kombination Django.

Så, på trods af det omfattende udvalg, hvis vi har almindelige, ikke-topudviklere, vi er en almindelig virksomhed, der ønsker at lave almindelige websites, og vi har ikke et udviklingsteam på 50 personer, så vælger vi Python.

Hvilke kompetencer kræves for at komme ind i professionen

Zlata Obukhovskaya: Jeg mener, at man skal kende ét framework godt — og vide, hvilke andre der findes, og hvornår de bruges. Hvor er Tornado, hvor er Django, hvor er Flask, hvor er aiohttp og så videre.
Det er nyttigt at vide, at der findes noget, der hedder protokoller. Især viden om http-protokollen er central for opbygningen af webapplikationer.

Man skal også have en nogenlunde idé om, hvordan frontend er opbygget i webprojekter: hvad HTML, CSS, JS er.

Aleksey Shtyrnyaev: Og vide, hvor dokumentationen ligger. Det er det vigtigste.

Grigory Petrov: Her træder vi ind på meget usikker grund. Hvis vi ikke er heldige og har startet en seriøs undersøgelse af moderne frontend, vil det være cirka 10 gange mere komplekst end backend i Python. En ny udvikler skal begrænse sit fokus, så han kan begynde at studere HTML, men uden at falde ned i alle disse div, span, float, hvordan alt justeres og opbygges.

Aleksey Shtyrnyaev: En grundlæggende kursus i Bootstrap er nødvendigt. Og grundlæggende HTML.

I det første år bør man ikke fordybe sig i JS-frameworks (hvis man fokuserer på backend). I grundkurset i Bootstrap er der allerede færdige moduler: vil du have en slider – lav en slider, vil du have en flydende menu – lav en flydende menu.

Zlata Obukhovskaya: Jeg mener, at man kan fordybe sig i frontend, især i hvordan statiske data leveres til webapplikationer. På den måde kan udvikleren glidende begynde at lære, hvordan webapplikationers arkitektur generelt fungerer, og hvordan de lever i produktionen.

Grigory Petrov: Ja, jeg vil anbefale det, hvis du har valgt Python som backend-udviklingssprog og fx Django som framework: Django har dokumentation i Django Book, den er virkelig god, den dækker alt det, Zlata nævnte, og den er virkelig god for begyndere.

Aleksey Shtyrnyaev: Også for en hurtig start kan et kursus som Django Girls være nyttigt, hvis målet er at lære netop Django. Det er en tutorial, hvor man på en dag kan få en overordnet forståelse, lære grundprincipperne og se, hvad frameworket kan.

Valentin Dombrovski: I forberedelsen til optagelsen af podcasten lavede vi en liste over, hvad en Python-udvikler har brug for til webudvikling, hvilket opsummerer det tidligere nævnte.

Hvad der indgår i basis for webudvikling med Python

  • Web-frameworks som Django, Flask, aiohttp, Tornado osv. (og kende til de andre).
  • Protokoller og API'er: først og fremmest http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM og migrationer, relationelle databaser, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Grundlæggende HTML, CSS, Bootstrap samt JS-frameworks og jQuery.
  • Principper for, hvordan applikationer fungerer i produktionen, testning, enhedstest, automatiserede tests, versionskontrolsystemer, git.

Er algoritmer nødvendige for en junior?

Zlata Obukhovskaya: I starten er det ikke nødvendigt at kende algoritmer, de vil selv gradvist dukke op i ens hoved, hvis man arbejder med udvikling længe nok. Jeg kender mange dygtige ingeniører, der ikke har haft et godt formelt kursus i algoritmer.

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

Vi har ikke grundlæggende uddannelse i algoritmer, vi ved ikke, hvordan man underviser programmører, og der er ikke et teknisk fundament.

Dette forsøges, men her har vi Hogwarts-historien: vi kan ikke lave en skole for troldmænd, før vi har en eneste troldmand. Hvad skal universitetet så gøre, når folk kommer og beder: "Begynd at uddanne programmører", men de har ingen programmører, fordi alle arbejder hos Mail.ru, Rambler og Yandex, og har det godt der?

På universitetet ser de og siger:
— Okay, programmering. Lad os finde et relateret vidensområde og invitere eksperter derfra. Lad os invitere journalister, der kan skrive tekster, el-ingeniører, der kan lave elektriske schemer, og matematikere, der kan arbejde med algoritmer.

I sidste ende viser det sig at være lige så fornuftigt som at uddanne en bygherre i elementær partikel fysik, blot fordi mursten og cement består af elementære partikler.

Samtidig fortæller de ikke om selve cementen og murstenen, fordi fysikeren, der prøver at lære bygherren, ikke kan bygge huse. I sidste ende får vi en bygherre, der kan beskrive, hvordan "cement virker", men aldrig har set det og ikke kan lave noget af det.

Algoritmer og datastrukturer er meget godt, men det er et meget lille anvendelsesområde. De er akut nødvendige, for eksempel når du skriver en spilmotor, compiler eller netværksprotokol.

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

Den mest komplekse matematik der, er at lægge to tal sammen og derefter dividere. Her kræves helt anderledes viden. For at løse forretningsopgaver behøves i hovedsagen anvendte og ikke fundamentale viden.

En ny udvikler vil have fordel af at have en forståelse for forretning og for, hvordan man korrekt og hurtigt samler de nødvendige konstruktioner af færdige blokke, hvordan man fejlsøger dem, hvordan man gør, så de ikke falder fra hinanden, og vide, hvorfor de falder fra hinanden, hvad der sker, når kravene ændres, og programmet begynder at "sætte sig på fundamentet", som et hus efter regn.
Dette er de anvendte ting og forståelsen af, hvordan man skriver software. Han skal vide, at der, udover debuggeren, er et sæt værktøjer, der viser, præcist hvor programmet hænger.

Valentin Dombrovski: Dette sammenligning kom til mig: det er en oversættelse fra erhvervslivet til det sprog, man kan kommunikere med computeren. Det vil sige, at programmøren er en slags specifik lingvist.

Grigory Petrov: Virksomheder har brug for en forfatter, ikke en lingvist. Forfatteren behøver ikke vide, hvorfor dette ord blev transformeret sådan for tusinde år siden. Det vigtigste er, at han kan anvende disse ord.

Hvad skal der til for at finde sit første job som udvikler?

Aleksey Shtyrnyaev: Der findes næppe en universel opskrift på, hvordan man skal forberede en junior.

Hvis du kommer ind i en virksomhed, vil du ikke blive ansat for at du kender Django, JSON og lidt algoritmer. Du vil højst sandsynligt blive hyret for de færdigheder, som virksomheden har brug for lige nu.

Der er mange virksomheder, og alle har forskellige krav. Der findes ikke et universelt vidensniveau, man skal have for at kunne forberede et CV og starte jobjagten.

Grigory Petrov: Da vi i VoxImplant søgte flere juniorer, formulerede vores tekniske chef det grundlæggende krav som følger: personen skal kunne løse opgaver. Det er klart, at en junior ikke altid vil gøre det effektivt, best muligt eller korrekt, men ideelt set giver du personen en opgave, så spænder han an og løser den. Det er den færdighed, som arbejdsgivere først og fremmest søger.

Zlata Obukhovskaya: Personer, der søger job og skifter fra andre områder, har nogle forretningsmæssige fordele, fordi de allerede har gennemgået en vis rejse og er i stand til at løse opgaver hurtigt. Det er bløde færdigheder, som jeg vil kalde arbejdsmentalitet. Ofte har nyuddannede ikke denne arbejdsmentalitet endnu.

Men jeg vil alligevel forsøge at give en slags opskrift til begyndere.

Første skridt for en ny udvikler

Zlata Obukhovskaya: For det første er det vigtigt at have et eget projekt, fordi der skal stå noget i CV'et, så man kan vise et minimum af portefølje. Det er endnu bedre, hvis disse projekter er lavet for andre, ikke bare for sig selv, men som freelance arbejde.

Efter de første projekter kan man lave et CV og sende det til alle virksomheder, hvor der er junior stillinger. Jobsamtaler vil give dig indsigt i, hvad virksomhederne har brug for. Før eller siden vil du finde en, der ansætter dig, om ikke andet så i en lille virksomhed. Senere vil denne arbejdserfaring give dig mulighed for at komme ind i en større og mere interessant virksomhed.

Valentin Dombrovski: Vi forbereder studerende på at få deres eget projekt i løbet af 10 ugers undervisning. Desuden træner vi færdigheder i teamudvikling. Det er netop de soft skills, som Zlata nævnte.

Aleksey Shtyrnyaev: Ud fra erfaring kan jeg sige, at det kan tage lang tid at finde det første job. At søge i en måned eller to er helt normalt. Hvis du sender dit CV til alle virksomheder og deltager i jobsamtaler, vil du helt sikkert finde noget inden for den tredje måned.

Valentin Dombrovski: Du kan arbejde på dine egne projekter eller tage simple freelance-projekter og samtidig sende dit CV ud.

Hvilke perspektiver har en Python-udvikler?

Zlata Obukhovskaya: En Python-udvikler kan gå i mange retninger. Du kan starte med testning, fortsætte med at udvikle dig til senior-architect. Eller endda gå ind i ledelse. Der findes forskellige tekniske ledere, og man kan nå op til topledelsen. Du kan også udvikle dig inden for data science, DevOps, automatiseret testning eller maskinlæring.

Valentin Dombrovski: Der er masser af muligheder, herunder vores kurser. Du behøver ikke at have meget viden i starten, men det ville være ideelt at dække et bredere spektrum senere, for jo mere du kan, desto bedre er det for dig.

***

Dette er blot en del af episoden. Python Junior.. Den fulde version af episoden kan lyttes til..

Eller endda ses:

Afspil video

RSS til podcasten.

Tak fordi du har læst, lyttet til eller set.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster