Python för webben: vad juniorer behöver veta för att arbeta och utvecklas

Vi har gjort en sammanfattning med huvudpunkterna frÄn Python Junior Podcast: vi diskuterade vad en nybörjare ska börja med och vilka vÀgar man kan ta som Python-utvecklare. PÄ senare tid har vi haft mycket innehÄll för medel- och seniornivÄ, men detta avsnitt Àr helt klart för juniorer.

Python för webben: vad juniorer behöver veta för att arbeta och utvecklas

Huvudteman:

  • Vilka kunskaper behöver en ny programmerare för att arbeta
    med webbutveckling?
  • Vad förvĂ€ntar sig arbetsgivare av utvecklare?
  • Vad kan man göra för att hitta jobb utan erfarenhet?
  • Hur kan en Python-utvecklare utvecklas?

Python Junior Podcast Àr en podcast om programmering för dem som vill förstÄ Python bÀttre. Programmen leds av samhÀllsevangelister MoscowPython och kurslÀrare LÀr dig Python.

I samtalet deltog:

  • Valentin Dombrovski,medgrundare av MoscowPython
  • Zlata Obuchovskaya, teamledare pĂ„ NVIDIA
  • Grigory Petrov, evangelist för MoscowPython
  • Alexey Shtyrnyaev, utvecklare pĂ„ FinEx, kurslĂ€rare pĂ„ Learn
    Python

Varför Àr Python bra för webbutveckling?

Valentin Dombrovski: Varför Àr just Python lÀmpligt för webbutveckling? Varför inte PHP eller JavaScript, till exempel?

Grigory Petrov: Det finns nÀstan inget val. Trots att man i modern webb kan bygga en single page application eller progressive web application enbart med frontend-teknologier, som JavaScript, Àr det ÀndÄ för komplicerat, dÄligt indexerat och krÀver duktiga utvecklare.

Om vi vill skapa en webbplats eller tjÀnst anvÀnder vi en kombinerad metod: en backend hanterar logiken och skapar webbsidor medan en frontend ritar dessa webbsidor i webblÀsaren. Och nÀr vi snabbt behöver sÀtta ihop allt, finns det egentligen ingen annan lösning.

LÄt oss titta pÄ möjliga alternativ.

  • C#. Microsoft Ă€r verkligen duktiga, de skapade .NET Core och marknadsför det aktivt. Men för det första Ă€r det en ny plattformsoberoende teknologi, och allt Ă€r fortfarande inte helt stabilt. För det andra Ă€r det verkligen dyrt, det finns fĂ„ C#-utvecklare - helt enkelt för att det inte Ă€r populĂ€rt.
  • Java. Det Ă€r komplicerat. Att göra en normal webbplats i Java Ă€r inte tio rader kod, som i Python. Det Ă€r mycket kod, det handlar om ramverk och man mĂ„ste förstĂ„ specifikationerna för instĂ€llningen av Java-servrar. Sammanfattningsvis, det Ă€r en stĂ€ndig smĂ€rta och lidande.
  • PHP. I de senaste versionerna Ă€r den fantastisk. Jag skulle till och med sĂ€ga sĂ„ hĂ€r: PHP 7.2 Ă€r inte sĂ€mre Ă€n Python. Men man kan inte bara börja anvĂ€nda PHP 7.2 utan vidare. Om en vanlig utvecklare, inte en topputvecklare, bygger en webbplats med PHP, kommer han inte att skriva bara med 7.2: man mĂ„ste fortfarande lĂ€sa böcker, tutorials, det finns massor med legacy-kod överallt, och det Ă€r inte sĂ„ bra.
  • JavaScript och Node.js. Det Ă€r fantastiskt och mycket modernt nĂ€r ett sprĂ„k anvĂ€nds bĂ„de pĂ„ frontend och backend. Men det Ă€r inte sĂ„ stabilt. Node.js Ă€r en bra grej, men det kan vara problematiskt att fĂ„ det att fungera stabilt i produktion utan att det kraschar. Plus, om vi vill skriva kvalitetskod i JavaScript, behöver vi inte JavaScript, utan TypeScript. Men TypeScript Ă€r ovĂ€ntat komplicerat, och nĂ€r en vanlig utvecklare ser det fĂ„r de huvudvĂ€rk.

LÄt oss hoppa över Ruby, Haskell, Erlang och andra nischiga sprÄk, och vi har kvar... Python. Ett sprÄk med konsekvent syntax, enhetligt standardbibliotek, bÀttre dokumentation, populÀra lÀttanvÀnda ramverk, och det superpopulÀra ramverket Django.

Det visar sig att trots det stora utbudet, om vi har vanliga utvecklare, inte topputvecklare, om vi Àr ett vanligt företag som vill göra vanliga webbplatser, och vi har ingen utvecklingsavdelning med 50 personer, sÄ vÀljer vi Python.

Vilka kunskaper behövs för att komma in i yrket

Zlata Obukhivska: Jag anser att man bör kĂ€nna till ett ramverk vĂ€l – och veta vilka andra som finns och nĂ€r de anvĂ€nds. NĂ€r man anvĂ€nder Tornado, Django, Flask, aiohttp och sĂ„ vidare.
Det Àr ocksÄ bra att kÀnna till att det finns nÄgot som kallas protokoll. SÀrskilt kunskapen om http-protokollet Àr central för att bygga webbapplikationer.

Man behöver ocksÄ ha en uppfattning om hur frontend i webbprojekt Àr uppbyggt: vad HTML, CSS och JS Àr.

Aleksiej Shtyrniajev: Och veta var dokumentationen finns. Det Àr det viktigaste.

Grigory Petrov: HÀr trÀder vi in pÄ mycket osÀker mark. Om vi har otur och börjar studera modern frontend pÄ allvar, kommer den att vara ungefÀr tio gÄnger mer komplex Àn backend med Python. En nybörjare utvecklare bör begrÀnsa sitt fokus sÄ att de börjar studera HTML, men inte sjunka ner i alla dessa div, span, float, hur allt justeras och struktureras.

Aleksiej Shtyrniajev: En grundkurs i Bootstrap behövs. Och grunderna i HTML.

Under det första Ă„ret bör du inte fördjupa dig i JS-ramverk (om du fokuserar pĂ„ backend). I grundkursen för Bootstrap finns redan fĂ€rdiga moduler: vill du ha en slider – gör en slider, vill du ha en flytande meny – gör en flytande meny.

Zlata Obukhivska: Jag tycker att man kan dyka ner i frontend, sÀrskilt i hur statiska resurser överlÀmnas till webbapplikationer. SÄ gÄr utvecklaren smidigt över till att börja förstÄ hur arkitekturen för webbapplikationer Àr uppbyggd och hur de fungerar i produktion.

Grigory Petrov: Ja, jag rekommenderar direkt för det fall du har valt Python som backend-programmeringssprÄk och t.ex. Django som ramverk: Django har dokumentation i Django Book, den Àr verkligen bra, det innehÄller allt som Zlata nÀmnde, den Àr verkligen utmÀrkt för nybörjare.

Aleksiej Shtyrniajev: För en snabb start kan Django Girls passa bra om mÄlet Àr att lÀra sig just Django. Det Àr en sÄn hÀr tutorial dÀr man kan gÄ igenom grunderna pÄ en dag och fÄ en förstÄelse för vad ramverket kan göra.

Valentin Dombrovski: Inför inspelningen av podcasten tog vi fram en lista över vad en programmerare behöver pÄ Python för webbprogrammering, vilket sammanfattar det som sagts tidigare.

Vad som ingÄr i grunderna för webbprogrammering med Python

  • Webb-ramverk som Django, Flask, aiohttp, Tornado och sĂ„ vidare (och veta om de andra).
  • Protokoll och API: frĂ€mst http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM och migrationer, relationsdatabaser, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Grunderna i HTML, CSS, Bootstrap samt JS-ramverk och jQuery.
  • Principer för hur applikationer fungerar i produktion, testning, enhetstester, automatiserade tester, versionskontrollsystem, git.

Behöver en junior algoritmer

Zlata Obukhivska: I början behöver man inte kunna algoritmer, de kommer gradvis att sÀtta sig i huvudet om man Àr engagerad i utveckling tillrÀckligt lÀnge. Jag kÀnner mÄnga bra ingenjörer som inte har haft nÄgon bra formell algoritmkurs.

Grigory Petrov: Jag vill elda pÄ diskussionen. VarifrÄn kommer egentligen vÄr dragning till algoritmer?

Vi har för nÀrvarande ingen grundlÀggande utbildning i algoritmer, vi kan inte lÀra programmerare, det finns ingen teknisk grund.

Det Àr nÄgot man försöker göra, men hÀr har vi Hogwarts-historien: vi kan inte skapa en skola för trollkarlar utan att ha en enda trollkarl. SÄ vad ska universitetet göra nÀr de kommer och ber: "Börja utbilda programmerare", men de har inga programmerare eftersom alla arbetar pÄ Mail.ru, Rambler och Yandex, de trivs dÀr?

PÄ universitetet tittar de och sÀger:
— Okej, programmering. LĂ„t oss hitta ett nĂ€rbeslĂ€ktat kunskapsomrĂ„de och bjuda in specialister dĂ€rifrĂ„n. LĂ„t oss bjuda in journalister som kan skriva texter, ingenjörer som kan göra elektriska scheman, och matematiker som kan algoritmer.

Resultatet blir att det Àr lika logiskt som att utbilda en byggare i elementarpartikelfysik bara för att tegel och cement bestÄr av elementarpartiklar.

Samtidigt berÀttar man inte om sjÀlva cementet och tegelstenarna, eftersom fysikern som försöker lÀra byggaren att bygga inte vet hur man gör det hemma. Slutresultatet blir en byggare som kan beskriva hur "cement fungerar" perfekt, men aldrig har sett det och inte kan göra nÄgot av det.

Algoritmer och dat strukturer Àr mycket bra, men det Àr ett mycket litet tillÀmpat omrÄde. De Àr akut nödvÀndiga till exempel om du skriver en spelmotor, en kompilator eller ett nÀtverksprotokoll.

De flesta programmerare löser affÀrsproblem dÀr algoritmer och dat strukturer inte Àr nödvÀndiga.

HÀr Àr den mest komplicerade matematiken - att addera tvÄ gÄnger och sedan dela. HÀr behövs helt andra kunskaper. För att lösa affÀrsproblem krÀvs i huvudsak tillÀmpade, inte grundlÀggande kunskaper.

För en nybörjare utvecklare Àr det bÀttre att ha en förstÄelse för affÀren och hur man korrekt och snabbt samlar de nödvÀndiga konstruktionerna av fÀrdiga block, hur man felsöker dem, hur man gör sÄ att de inte faller isÀr, veta varför de faller isÀr, vad som hÀnder nÀr kraven Àndras och programmet börjar "sjunka pÄ grunden" som ett hus efter regnet.
Det Àr dessa tillÀmpade aspekter och förstÄelsen av hur man skriver mjukvara. Man mÄste veta att förutom en debugger har man ett verktyg som visar var programmet faktiskt saktar ner.

Valentin Dombrovski: Den jÀmförelse som kom till mig Àr att detta Àr en översÀttning frÄn affÀrssprÄk till ett sprÄk som datorer kan förstÄ. Det vill sÀga, en programmerare Àr en slags specifik lingvist.

Grigory Petrov: Företaget behöver en skribent, inte en lingvist. Skribenten behöver inte förstÄ varför ett ord förÀndrades för tusen Är sedan. De mÄste kunna anvÀnda dessa ord.

Vad behövs för att hitta sitt första jobb som utvecklare?

Aleksiej Shtyrniajev: Det finns nog inget universellt recept för hur man formar en junior.

Om du kommer till ett företag, kommer du att anstÀllas inte för att du kÀnner till Django, JSON och lite algoritmer. Du kommer förmodligen att anstÀllas för de fÀrdigheter som företaget behöver just nu.

Det finns mÄnga företag och alla har olika krav. Det finns ingen universell mÀngd kunskap som man mÄste skaffa sig för att förbereda sitt CV och söka jobb.

Grigory Petrov: NÀr vi pÄ VoxImplant letade efter nÄgra juniorer, formulerade vÄr tekniska chef det grundlÀggande kravet sÄ hÀr: personen mÄste kunna lösa problem. Tydligt Àr att en junior kanske inte gör detta alltid effektivt, pÄ bÀsta sÀtt eller alltid korrekt, men i idealfallet ger man personen en uppgift, de anstrÀnger sig och löser den. Det Àr den fÀrdighet som arbetsgivare frÀmst söker.

Zlata Obukhivska: Personer som söker jobb och kommer frÄn andra branscher har pÄ ett sÀtt en viss fördel ur affÀrsperspektiv, eftersom de redan har genomgÄtt en viss vÀg och kan lösa problem snabbt. Det handlar om mjuka fÀrdigheter, jag skulle kalla det arbetskultur. Ofta har nyutexaminerade frÄn universitet Ànnu inte utvecklat denna arbetskultur.

Men jag skulle vilja försöka ge nÄgon form av recept till nybörjare.

Första stegen för en nybörjande utvecklare.

Zlata Obukhivska: För det första handlar det om att ha ett eget projekt, eftersom du behöver ha nĂ„got att skriva i ditt CV och visa upp ett minimalt portfolio. Det Ă€r bĂ€ttre om dessa projekt inte Ă€r gjorda för sig sjĂ€lv, utan som frilansare — för nĂ„gon annan.

Efter dina första projekt kan du börja skapa ditt CV och skicka det till alla företag som har juniorpositioner. Intervjuer kommer att ge en insikt i vad företagen behöver. Förr eller senare kommer nÄgon att anstÀlla dig, Ätminstone i ett litet företag. Denna arbetslivserfarenhet kommer i sin tur att ge dig möjlighet att komma in i ett större och mer intressant företag.

Valentin Dombrovski: Förresten, pÄ kurserna förbereder vi studenterna för att skapa sitt eget projekt under 10 veckors utbildning. Dessutom trÀnar vi teamwork-fÀrdigheter. Det Àr precis de mjuka fÀrdigheter som Zlatta nÀmnde.

Aleksiej Shtyrniajev: Av erfarenhet kan jag sÀga att det kan ta vÀldigt lÄng tid att hitta det första jobbet. Att söka i en mÄnad eller tvÄ Àr normalt. Om du skickar in ditt CV till alla företag och gÄr pÄ intervjuer, kommer du definitivt att hitta nÄgot inom tre mÄnader.

Valentin Dombrovski: Du kan arbeta med dina egna projekt eller ta enkla frilansuppdrag och samtidigt skicka ut ditt CV.

Vilka möjligheter finns det för en Python-utvecklare

Zlata Obukhivska: En Python-utvecklare kan gÄ vart som helst. Man kan gÄ in i testning, fortsÀtta utvecklas till senior-arkitekt, eller till och med gÄ in i management. Tekniska chefer finns i mÄnga former, och man kan nÄ toppledningen. Det Àr ocksÄ möjligt att utvecklas inom data science, DevOps, eller arbeta med automatiserad testning eller maskininlÀrning.

Valentin Dombrovski: Det finns ett brett utbud av alternativ och möjligheter, inklusive vÄra kurser. Du behöver inte ha sÄ mycket kunskap frÄn början, men det Àr önskvÀrt att senare tÀcka ett bredare spektrum, för ju mer du kan, desto bÀttre Àr det för dig.

***

Detta Àr bara en del av avsnittet Python Junior. Den fullstÀndiga versionen av avsnittet kan lyssnas pÄ.

Eller till och med ses:

Spela video

RSS för podden

Tack för att du lÀste, lyssnade eller tittade.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster