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
