Vi gjorde en kort transkription med huvudtankarna frÄn Python Junior Podcast: i den diskuterade vi var vi ska börja och vart vi ska gÄ som nybörjare som Python-utvecklare. Den senaste tiden har vi mycket innehÄll för mellan- och seniorer, men det hÀr avsnittet Àr definitivt för juniorer.

HuvudÀmnen:
- Vilken kunskap behöver en nybörjare för att öva pÄ
webbutveckling? - Vad förvÀntar sig arbetsgivarna av utvecklare?
- Vad ska man göra för att hitta ett jobb utan erfarenhet?
- Hur kan en Python-utvecklare utvecklas?
Python Junior Podcast Àr en programmeringspodcast för dig som vill förstÄ Python bÀttre. SÀndningar leds av samhÀllsevangelister och kurslÀrare .
Deltagare i samtalet:
- Valentin Dombrovsky,medgrundare av MoscowPython
- Zlata Obukhovskaya, Teamledare för NVIDIA
- Grigory Petrov, evangelist Moskva Python
- Alexey Shtyrnyaev, utvecklare pÄ FinEx, lÀrare i Learn-kurser
Python
Varför Python Àr bra för webbutveckling
Valentin Dombrovsky: Varför Àr Python lÀmplig för webbutveckling? Varför inte PHP eller JavaScript, till exempel?
Grigory Petrov: SÄ det finns inte mycket att vÀlja pÄ. Trots att man i den moderna webben faktiskt kan bygga en ensidig applikation eller en progressiv webbapplikation utan en backend - enbart med front-end-teknologier, med JavaScript - Àr det fortfarande för komplicerat, dÄligt indexerat och krÀver coola utvecklare.
Om vi ââvill göra en webbplats eller tjĂ€nst anvĂ€nder vi ett kombinerat tillvĂ€gagĂ„ngssĂ€tt: vi har en del backend som implementerar logiken och skapar webbsidor, och nĂ„gon frontend som ritar dessa webbsidor i webblĂ€saren. Och nĂ€r vi snabbt behöver sĂ€tta ihop allt pĂ„ nĂ„got, har vi egentligen inget val.
LÄt oss titta pÄ de möjliga alternativen.
- C#. Microsoft Ă€r riktigt bra, de gjorde .NET Core och marknadsför det pĂ„ alla möjliga sĂ€tt. Men för det första Ă€r detta en ny plattformsoberoende teknologi, och allt Ă€r inte smidigt dĂ€r Ă€n. För det andra Ă€r det riktigt dyrt, det finns fĂ„ C#-utvecklare â helt enkelt för att det Ă€r impopulĂ€rt.
- Java. Det Àr komplicerat. Att göra en normal webbplats i Java krÀver inte 10 rader kod, som i Python. Det hÀr Àr mycket kod, det hÀr Àr ramverk och du behöver kÀnna till detaljerna för att stÀlla in Java-servrar. I allmÀnhet, kontinuerlig smÀrta och lidande.
- PHP. I de senaste versionerna Àr det underbart. Jag sÀger till och med detta: PHP 7.2 Àr inte sÀmre Àn Python. Men du kan inte bara hÀmta och anvÀnda PHP 7.2. Om en vanlig, inte topputvecklare gör en webbplats i PHP, kommer han inte bara att skriva i 7.2: han kommer fortfarande att behöva lÀsa nÄgra lÀroböcker, tutorials, det finns mycket Àldre kod överallt, och det hÀr Àr inte sÀrskilt bra.
- JavaScript och Node.js. Det Àr underbart och vÀldigt modernt nÀr det finns ett sprÄk pÄ bÄde front-end och back-end. Inte sÀrskilt stabil helt enkelt. Node.js Àr en bra sak, men det Àr problematiskt att distribuera det i produktionen sÄ att det inte kraschar och fungerar stabilt. Plus, om vi vill skriva JavaScript-kod av hög kvalitet behöver vi inte JavaScript, utan TypeScript. Men TypeScript Àr ovÀntat komplext, och den genomsnittliga utvecklarens hjÀrna kokar nÀr de ser det.
LÄt oss utelÀmna Ruby, Haskell, Erlang och andra nischsaker, och vi har kvar... Python. Ett sprÄk med konsekvent syntax, ett enhetligt standardbibliotek, den bÀsta dokumentationen, populÀra lÀtta ramverk och den megapopulÀra Django-kombinationen.
Det visar sig att, trots det bredaste utbudet, om vi har vanliga, inte topputvecklare, sÄ Àr vi ett vanligt företag som vill göra vanliga hemsidor, vi har ingen utvecklingsavdelning för 50 personer, dÄ tar vi Python.
Vilka kunskaper behövs för att komma in i yrket?
Zlata Obukhovskaya: Jag tror att man behöver kĂ€nna till ett ramverk vĂ€l â och veta vilka andra finns och nĂ€r de anvĂ€nds. Var Ă€r Tornado, var Ă€r Django, var Ă€r Flask, var Ă€r aiohttp och sĂ„ vidare.
Det kommer att vara anvÀndbart att veta att det finns nÄgot sÄdant som protokoll. I synnerhet Àr kunskap om http-protokollet centralt för att bygga webbapplikationer.
Du mÄste ocksÄ Ätminstone grovt förstÄ hur frontend fungerar i webbprojekt: vad Àr HTML, CSS, JS.
Alexey Shtyrnyaev: Och vet var dokumentationen finns. Det Àr viktigast.
Grigory Petrov: HĂ€r gĂ„r vi pĂ„ mycket skakig mark. Om vi ââhar otur och vi pĂ„ nĂ„got sĂ€tt börjar studera den moderna fronten pĂ„ allvar, sĂ„ kommer den att vara cirka 10 gĂ„nger mer komplicerad Ă€n backend i Python. En nybörjarutvecklare mĂ„ste begrĂ€nsa sitt fokus sĂ„ att han kan börja lĂ€ra sig HTML, men inte gĂ„ vilse i alla dessa div:er, spann, flytningar, hur allt Ă€r justerat och uppstĂ€llt.
Alexey Shtyrnyaev: Behöver en grundlÀggande Bootstrap-kurs. Och grunderna i HTML.
Under det första Äret bör du inte fördjupa dig i JS-ramverk (om du fokuserar pÄ backend). Den grundlÀggande Bootstrap-kursen har redan fÀrdiga moduler: om du vill ha en slider, gör en slider, om du vill ha en flytande meny, gör en flytande meny.
Zlata Obukhovskaya: Jag tror att nÀr du studerar frontend kan du fördjupa dig, i synnerhet, i hur statik generellt ges till webbapplikationer. SÄ utvecklaren gÄr smidigt vidare för att börja lÀra sig hur arkitekturen för webbapplikationer fungerar i princip och hur de lever i produktionen.
Grigory Petrov: Ja, jag rekommenderar det omedelbart ifall du valde Python som backend-utvecklingssprÄk och till exempel Django som ramverk: Django har dokumentation i Django-boken, den Àr riktigt cool, den innehÄller allt som Zlata sa, hon verkligen bra för en nybörjare.
Alexey Shtyrnyaev: Vissa Django Girls Àr ocksÄ lÀmpliga för en snabbstart om ditt mÄl Àr att lÀra dig Django. Det hÀr Àr en handledning dÀr du pÄ en dag kan gÄ över toppen, förstÄ grunderna och vad ramverket kan.
Valentin Dombrovsky: Som förberedelse för inspelning av podcasten sammanstÀllde vi en lista över vad en Python-programmerare behöver för webbutveckling, som sammanfattar vad vi sa tidigare.
Vad ingÄr i grunderna för webbutveckling i Python
- Webbramverk Django, Flask, aiohttp, Tornado, etc. (och vet om andras existens).
- Protokoll och API:er: 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 applikationsdrift i produktion, testning, enhetstester, autotester, versionskontrollsystem, git.
Behöver juniorer algoritmer?
Zlata Obukhovskaya: Till en början behöver du inte kÀnna till algoritmerna, de kommer gradvis att dyka upp i ditt huvud om du Àgnar dig Ät utveckling tillrÀckligt lÀnge. Jag kÀnner massor av bra ingenjörer som inte har haft en bra formell algoritmkurs.
Grigory Petrov: Jag vill lÀgga brÀnsle pÄ elden. Var kommer vÄrt sug efter algoritmer ifrÄn?
Vi har för nÀrvarande ingen grundlÀggande utbildning i algoritmer, vi vet inte hur man utbildar programmerare, vi har ingen teknisk bas.
De försöker göra detta, men hÀr har vi historien om Hogwarts: vi kan inte skapa en skola för trollkarlar medan vi inte har en enda trollkarl. DÀrför, vad ska ett universitet göra nÀr de kommer till dem och frÄgar: "Börja utbilda programmerare", men de har inga programmerare, eftersom alla jobbar pÄ Mail.ru, Rambler och Yandex, Àr de nöjda dÀr?
Universitetet tittar och sÀger:
- Okej, programmering. LÄt oss hitta nÄgot relaterat kunskapsomrÄde och bjuda in specialister dÀrifrÄn. LÄt oss bjuda in journalister som kan skriva kopior, elektroingenjörer som kan göra elektriska kretsar och matematiker som kan anvÀnda algoritmer.
Till slut visar det sig att detta Àr lika praktiskt som att lÀra en byggare partikelfysik bara för att tegel och cement Àr gjorda av elementarpartiklar.
Samtidigt pratar de inte om cement och tegel sjÀlva, eftersom fysikern som försöker utbilda en byggare inte vet hur man bygger hus. Som ett resultat fÄr vi en byggare som perfekt kan beskriva hur "cement fungerar", men som aldrig har sett det och inte vet hur man gör nÄgot av det.
Algoritmer och datastrukturer Àr mycket bra, men detta Àr ett vÀldigt litet applikationsomrÄde. De behövs omgÄende, till exempel om du skriver en spelmotor, kompilator eller nÀtverksprotokoll.
De flesta programmerare löser affÀrsproblem dÀr algoritmer och datastrukturer inte behövs.
Den svÄraste matematiken dÀr Àr att addera tvÄ gÄnger och sedan dividera. Det krÀver helt andra kunskaper. Att lösa affÀrsproblem krÀver huvudsakligen tillÀmpad snarare Àn grundlÀggande kunskap.
Det Àr bÀttre för en nybörjare att ha en förstÄelse för verksamheten och hur man korrekt och snabbt monterar de nödvÀndiga strukturerna frÄn fÀrdiga block, hur man felsöker dem, hur man ser till att de inte faller isÀr, vet varför de faller sönder, vad hÀnder nÀr kraven Àndras och programmet börjar "sÀtta sig pÄ grunden" som ett hus efter regn.
Det hÀr Àr praktiska saker och en förstÄelse för hur man skriver mjukvara. Han mÄste veta att han förutom felsökaren har en uppsÀttning verktyg som visar exakt var programmet saktar ner.
Valentin Dombrovsky: Jag tÀnkte pÄ den hÀr jÀmförelsen: det hÀr Àr en översÀttning frÄn affÀrssprÄket till ett sprÄk dÀr du kan kommunicera med en dator. Det vill sÀga, en programmerare Àr en sorts specifik lingvist.
Grigory Petrov: Verksamheten behöver en författare, inte en lingvist. Författaren behöver inte veta varför detta ord för tusen Är sedan förvandlades till detta. Han mÄste kunna tillÀmpa dessa ord.
Vad du behöver för att hitta ditt första jobb som utvecklare
Alexey Shtyrnyaev: Det finns nog inget universellt recept pÄ hur man lagar junior.
Om du kommer till nÄgot företag kommer de att anstÀlla dig inte eftersom du kÀnner till Django, JSON och nÄgra algoritmer. Du kommer med största sannolikhet att anstÀllas för den kompetens som detta företag behöver hÀr och nu.
Det finns mÄnga företag och alla har olika krav. Det finns ingen sÄdan universell mÀngd kunskap som behöver erhÄllas för att ytterligare förbereda ett CV och söka jobb.
Grigory Petrov: NÀr vi pÄ VoxImplant sökte flera ingenjörer formulerade vÄr tekniska chef grundkravet sÄ hÀr: en person mÄste kunna lösa problem. Det Àr klart att en junior inte alltid kommer att göra detta effektivt, inte pÄ bÀsta sÀtt och inte alltid korrekt, men helst ger du en person en uppgift, han anstrÀnger och löser den. Det Àr den kompetens som arbetsgivarna i första hand letar efter.
Zlata Obukhovskaya: MÀnniskor som söker arbete frÄn andra omrÄden har en viss fördel ur affÀrssynpunkt eftersom de redan har gÄtt en bit och kan lösa problem snabbt. Det Àr mjuka fÀrdigheter, jag skulle till och med kalla det arbetskultur. Ofta har universitetsutbildade Ànnu inte utvecklat denna arbetskultur.
Men jag skulle ÀndÄ vilja försöka ge nÄgon form av recept till nybörjare.
Första stegen för en nybörjare
Zlata Obukhovskaya: Den första Àr att detta fortfarande Àr nÄgot slags eget projekt, eftersom du mÄste skriva nÄgot i ditt CV och visa en minimal portfölj. Det Àr coolare nÀr dessa projekt inte Àr gjorda för dig sjÀlv, utan som ett frilansprojekt - för nÄgon.
Redan efter de första projekten kan du göra ett CV och skicka det till alla företag dÀr det finns junitjÀnster. Intervjuer kommer att ge insikt i vad företag behöver. Förr eller senare kommer nÄgon att anstÀlla dig, Ätminstone i ett litet företag. DÀrefter kommer denna arbetslivserfarenhet att ge dig möjlighet att komma in i ett större och mer intressant företag.
Valentin Dombrovsky: Förresten, i vÄra kurser förbereder vi eleverna för att ha ett eget projekt inom 10 veckors utbildning. Dessutom trÀnar vi teamutvecklingsförmÄga. Det Àr precis de mjuka fÀrdigheterna som Zlata talade om.
Alexey Shtyrnyaev: Av erfarenhet kan jag sÀga att det kan ta vÀldigt lÄng tid att söka sitt första jobb. NÀr du letar efter en mÄnad eller tvÄ Àr det normalt. Om du skickar in ditt CV till alla företag, gÄ pÄ intervjuer, under den tredje mÄnaden kommer du definitivt att hitta nÄgot.
Valentin Dombrovsky: Du kan klippa dina egna projekt eller ta dig an enkla frilansprojekt och samtidigt skicka ut ditt CV.
Vilka framtidsutsikter har en Python-utvecklare?
Zlata Obukhovskaya: En Python-utvecklare kan gÄ var som helst. Du kan gÄ in i testning och fortsÀtta utvecklas till senior arkitekt. Eller till och med i ledningen. Det finns olika typer av tekniska chefer, och du kan vÀxa till högsta ledningen. Du kan utvecklas inom datavetenskap, DevOps, gÄ in pÄ automatiserad testning eller maskininlÀrning.
Valentin Dombrovsky: Generellt finns det mÄnga alternativ och möjligheter, inklusive vÄra kurser. Du behöver inte mycket kunskap vid entrén, men det Àr lÀmpligt att sedan tÀcka ett bredare utbud, för ju mer du kan, desto bÀttre för dig.
***
Detta Àr bara en del av releasen . Den fullstÀndiga versionen av avsnittet Àr tillgÀnglig .
Eller ens titta:

Tack för att du lÀser, lyssnar eller tittar.
KĂ€lla: will.com
