Python for nettet: hva en junior trenger å vite for å jobbe og utvikle seg

Vi laget en kort transkripsjon med hovedtankene fra Python Junior Podcast: i den diskuterte vi hvor vi skulle begynne og hvor vi skulle gå som nybegynner Python-utvikler. I det siste har vi mye innhold for mellom- og seniorer, men denne episoden er definitivt for juniorer.

Python for nettet: hva en junior trenger å vite for å jobbe og utvikle seg

Hovedemner:

  • Hvilken kunnskap trenger en nybegynner programmerer for å øve på
    webutvikling?
  • Hva forventer arbeidsgivere av utviklere?
  • Hva skal man gjøre for å finne en jobb uten erfaring?
  • Hvordan kan en Python-utvikler utvikle seg?

Python Junior Podcast er en programmeringspodcast for de som ønsker å forstå Python bedre. Sendinger ledes av samfunnsevangelister Moskva Python og kurslærere Lær python.

Deltakere i samtalen:

  • Valentin Dombrovsky,medgründer av MoscowPython
  • Zlata Obukhovskaya, NVIDIA-teamleder
  • Grigory Petrov, evangelist Moskva Python
  • Alexey Shtyrnyaev, utvikler i FinEx, lærer i Lær-kurs
    Python

Hvorfor Python er bra for webutvikling

Valentin Dombrovsky: Hvorfor er Python egnet for webutvikling? Hvorfor ikke PHP eller JavaScript, for eksempel?

Grigory Petrov: Så det er ikke mye valg. Til tross for at du i det moderne nettet faktisk kan bygge en enkeltsideapplikasjon eller en progressiv nettapplikasjon uten backend - rent ved bruk av front-end-teknologier, ved bruk av JavaScript - er det fortsatt for komplisert, dårlig indeksert og krever kule utviklere.

Hvis vi ønsker å lage et nettsted eller en tjeneste, bruker vi en kombinert tilnærming: vi har noen backend som implementerer logikken og lager nettsider, og noen frontend som tegner disse nettsidene i nettleseren. Og når vi raskt trenger å sette alt sammen på noe, har vi egentlig ikke noe valg.

La oss se på de mulige alternativene.

  • C#. Microsoft er virkelig flott, de laget .NET Core og promoterer det på alle mulige måter. Men for det første er dette en ny tverrplattformteknologi, og ikke alt er glatt der ennå. For det andre er det veldig dyrt, det er få C#-utviklere – rett og slett fordi det er upopulært.
  • Java. Det er komplisert. Å lage en vanlig nettside i Java tar ikke 10 linjer med kode, som i Python. Dette er mye kode, dette er rammeverk, og du må kjenne til detaljene for å sette opp Java-servere. Generelt kontinuerlig smerte og lidelse.
  • PHP. I de siste versjonene er det fantastisk. Jeg vil til og med si dette: PHP 7.2 er ikke verre enn Python. Men du kan ikke bare plukke opp og bruke PHP 7.2. Hvis en vanlig, ikke topputvikler lager et nettsted i PHP, vil han ikke bare skrive i 7.2: han vil fortsatt måtte lese noen lærebøker, opplæringsprogrammer, det er mye eldre kode overalt, og dette er ikke veldig bra.
  • JavaScript og Node.js. Det er fantastisk og veldig moderne når det er ett språk på både front-end og back-end. Bare ikke veldig stabil. Node.js er en god ting, men det er problematisk å distribuere det i produksjon slik at det ikke krasjer og fungerer stabilt. I tillegg, hvis vi ønsker å skrive JavaScript-kode av høy kvalitet, trenger vi ikke JavaScript, men TypeScript. Men TypeScript er uventet komplekst, og den gjennomsnittlige utviklerens hjerner koker når de ser det.

La oss utelate Ruby, Haskell, Erlang og andre nisje-ting, og vi sitter igjen med... Python. Et språk med konsekvent syntaks, et enhetlig standardbibliotek, den beste dokumentasjonen, populære lette rammeverk og den megapopulære Django-kombinasjonen.

Det viser seg at, til tross for det bredeste utvalget, hvis vi har vanlige, ikke topputviklere, er vi en vanlig bedrift som ønsker å lage vanlige nettsider, vi har ikke en utviklingsavdeling for 50 personer, så tar vi Python.

Hvilken kunnskap trengs for å komme inn i yrket?

Zlata Obukhovskaya: Jeg mener at man må kjenne ett rammeverk godt – og vite hva andre finnes og når de brukes. Hvor er Tornado, hvor er Django, hvor er Flask, hvor er aiohttp og så videre.
Det vil være nyttig å vite at det finnes noe slikt som protokoller. Spesielt er kunnskap om http-protokollen sentral for å bygge nettapplikasjoner.

Du må også i det minste forstå hvordan grensesnittet fungerer i nettprosjekter: hva er HTML, CSS, JS.

Alexey Shtyrnyaev: Og vet hvor dokumentasjonen er. Det er viktigst.

Grigory Petrov: Her tråkker vi på svært gyngende grunn. Hvis vi er uheldige og vi på en eller annen måte begynner seriøst å studere den moderne frontend, så vil den være omtrent 10 ganger mer komplisert enn backend i Python. En nybegynner utvikler må begrense fokuset sitt slik at han kan begynne å lære HTML, men ikke falle inn i alle disse divene, spennene, flytene, hvordan alt er justert og stilt opp.

Alexey Shtyrnyaev: Trenger et grunnleggende Bootstrap-kurs. Og det grunnleggende om HTML.

Det første året bør du ikke fordype deg i JS-rammeverk (hvis du fokuserer på backend). Det grunnleggende Bootstrap-kurset har allerede ferdige moduler: hvis du vil ha en skyveknapp, lag en skyveknapp; hvis du vil ha en flytende meny, lag en flytende meny.

Zlata Obukhovskaya: Jeg tror at mens du studerer frontend, kan du fordype deg, spesielt i hvordan statikk generelt gis til webapplikasjoner. Så utvikleren går jevnt videre for å begynne å lære hvordan arkitekturen til webapplikasjoner fungerer i prinsippet og hvordan de lever i produksjon.

Grigory Petrov: Ja, jeg vil anbefale det med en gang i tilfelle du valgte Python som et backend-utviklingsspråk og for eksempel Django som rammeverk: Django har dokumentasjon i Django-boken, den er veldig kul, den inneholder alt som Zlata sa, hun virkelig bra for en nybegynner.

Alexey Shtyrnyaev: Noen Django Girls er også egnet for en rask start hvis målet ditt er å lære Django. Dette er en opplæring hvor du på en dag kan gå over toppen, forstå det grunnleggende og hva rammeverket er i stand til.

Valentin Dombrovsky: Som forberedelse til opptak av podcasten har vi satt sammen en liste over hva en Python-programmerer trenger for nettutvikling, som oppsummerer det vi sa tidligere.

Hva er inkludert i det grunnleggende for webutvikling i Python

  • Nettrammeverk Django, Flask, aiohttp, Tornado, etc. (og vet om eksistensen av andre).
  • Protokoller og APIer: primært http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM og migreringer, relasjonsdatabaser, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Grunnleggende om HTML, CSS, Bootstrap, samt JS-rammeverk og JQuery.
  • Prinsipper for applikasjonsdrift i produksjon, testing, enhetstester, autotester, versjonskontrollsystemer, git.

Trenger juniorer algoritmer?

Zlata Obukhovskaya: Til å begynne med trenger du ikke å kjenne algoritmene; de ​​vil gradvis dukke opp i hodet ditt hvis du engasjerer deg i utvikling lenge nok. Jeg kjenner massevis av flinke ingeniører som ikke har hatt et godt formelt algoritmekurs.

Grigory Petrov: Jeg vil fylle bensin på bålet. Hvor kommer vårt begjær etter algoritmer fra?

Vi har for øyeblikket ingen grunnleggende utdannelse i algoritmer, vi vet ikke hvordan vi skal trene programmerere, vi har ikke en teknisk base.

De prøver å gjøre dette, men her har vi historien om Galtvort: vi kan ikke lage en skole for trollmenn mens vi ikke har en eneste trollmann. Derfor, hva skal et universitet gjøre når de kommer til dem og spør: "Begynn å trene programmerere," men de har ikke programmerere, fordi alle jobber på Mail.ru, Rambler og Yandex, er de glade der?

Universitetet ser og sier:
- Ok, programmering. La oss finne noe relatert kunnskapsområde og invitere spesialister derfra. La oss invitere journalister som kan skrive kopi, elektroingeniører som kan lage elektriske kretser, og matematikere som kan bruke algoritmer.

Til slutt viser det seg at dette er like praktisk som å lære en bygger partikkelfysikk bare fordi murstein og sement er laget av elementærpartikler.

Samtidig snakker de ikke om sement og murstein selv, fordi fysikeren som prøver å lære opp en byggmester ikke vet hvordan man bygger hus. Som et resultat får vi en byggherre som er i stand til perfekt å beskrive hvordan "sement fungerer", men som aldri har sett det og ikke vet hvordan man lager noe av det.

Algoritmer og datastrukturer er veldig gode, men dette er et veldig lite applikasjonsområde. De er påtrengende, for eksempel hvis du skriver en spillmotor, kompilator eller nettverksprotokoll.

De fleste programmerere løser forretningsproblemer der algoritmer og datastrukturer ikke er nødvendig.

Den vanskeligste matematikken der er å addere to ganger og deretter dele. Det krever helt annen kunnskap. Å løse forretningsproblemer krever hovedsakelig anvendt snarere enn grunnleggende kunnskap.

Det er bedre for en nybegynnerutvikler å ha en forståelse av virksomheten og hvordan man riktig og raskt monterer de nødvendige strukturene fra ferdige blokker, hvordan man feilsøker dem, hvordan man sørger for at de ikke faller fra hverandre, vet hvorfor de faller fra hverandre, hva skjer når kravene endres og programmet begynner å "sette seg på grunnlaget" som et hus etter regn.
Dette er praktiske ting og en forståelse av hvordan man skriver programvare. Han trenger å vite at i tillegg til feilsøkeren har han et sett med verktøy som viser nøyaktig hvor programmet bremser ned.

Valentin Dombrovsky: Denne sammenligningen kom til meg: dette er en oversettelse fra forretningsspråket til et språk der du kan kommunisere med en datamaskin. Det vil si at en programmerer er en slags spesifikk lingvist.

Grigory Petrov: Næringslivet trenger en forfatter, ikke en lingvist. Forfatteren trenger ikke vite hvorfor dette ordet for tusen år siden ble forvandlet til dette. Han må kunne bruke disse ordene.

Hva du trenger for å finne din første jobb som utvikler

Alexey Shtyrnyaev: Det finnes sannsynligvis ingen universell oppskrift på hvordan man skal lage mat junior.

Hvis du kommer til et selskap, vil de ansette deg ikke fordi du kjenner Django, JSON og noen få algoritmer. Du vil mest sannsynlig bli ansatt for den kompetansen som dette selskapet trenger her og nå.

Det er mange selskaper, og de har alle forskjellige krav. Det er ingen slik universell mengde kunnskap som må innhentes for å forberede en CV og finne en jobb.

Grigory Petrov: Da vi i VoxImplant søkte etter flere ingeniører, formulerte vår tekniske direktør grunnkravet slik: en person må kunne løse problemer. Det er klart at en junior ikke alltid vil gjøre dette effektivt, ikke på den beste måten og ikke alltid riktig, men ideelt sett gir du en person en oppgave, han anstrenger og løser den. Dette er ferdigheten arbeidsgivere først og fremst ser etter.

Zlata Obukhovskaya: Folk som søker arbeid fra andre felt har en viss fordel fra et forretningsmessig synspunkt fordi de allerede har gått et stykke og er i stand til å løse problemer raskt. Dette er myke ferdigheter, jeg vil til og med kalle det arbeidskultur. Ofte har universitetsutdannede ennå ikke utviklet denne arbeidskulturen.

Men jeg vil likevel prøve å gi en slags oppskrift til nybegynnere.

De første trinnene for en nybegynner utvikler

Zlata Obukhovskaya: Den første er at dette fortsatt er en slags eget prosjekt, fordi du må skrive noe i CV-en din og vise en minimal portefølje. Det er kulere når disse prosjektene ikke er laget for deg selv, men som et frilansprosjekt - for noen.

Etter de første prosjektene kan du allerede lage en CV og sende den til alle bedrifter der det er junistillinger. Intervjuer vil gi innsikt i hva bedrifter trenger. Før eller siden vil noen ansette deg, i hvert fall i et lite selskap. I etterkant vil denne arbeidserfaringen gi deg muligheten til å komme inn i en større og mer interessant bedrift.

Valentin Dombrovsky: På våre kurs forbereder vi forresten studentene til å ha sitt eget prosjekt innen 10 ukers opplæring. I tillegg trener vi teamutviklingsferdigheter. Dette er akkurat de myke ferdighetene Zlata snakket om.

Alexey Shtyrnyaev: Jeg kan fortelle deg av erfaring at det kan ta veldig lang tid å se etter din første jobb. Når du leter etter en måned eller to, er det normalt. Hvis du sender inn din CV til alle selskaper, gå til intervjuer, i den tredje måneden vil du definitivt finne noe.

Valentin Dombrovsky: Du kan kutte dine egne prosjekter eller ta på deg enkle frilansprosjekter og samtidig sende ut din CV.

Hvilke utsikter har en Python-utvikler?

Zlata Obukhovskaya: En Python-utvikler kan gå hvor som helst. Du kan gå inn i testing og fortsette å utvikle deg til en seniorarkitekt. Eller til og med i ledelsen. Det finnes ulike typer tekniske ledere, og du kan vokse til toppledelse. Du kan utvikle deg innen datavitenskap, DevOps, gå inn i automatisert testing eller maskinlæring.

Valentin Dombrovsky: Generelt er det mange alternativer og muligheter, inkludert våre kurs. Du trenger ikke mye kunnskap ved inngangen, men det er lurt å dekke et bredere spekter, for jo mer du kan, jo bedre for deg.

***

Dette er bare en del av utgivelsen Python Junior. Den fullstendige versjonen av episoden er tilgjengelig lytte.

Eller til og med se:

Spill av video

Podcast RSS

Takk for at du leser, lytter eller så.

Kilde: www.habr.com

Legg til en kommentar