Python vir die web: wat 'n junior moet weet om te werk en te ontwikkel

Ons het 'n kort transkripsie gemaak met die hoofgedagtes van die Python Junior Podcast: daarin het ons bespreek waar om te begin en waarheen om te gaan as 'n beginner Python-ontwikkelaar. Ons het die afgelope tyd baie inhoud vir middel- en seniors, maar hierdie episode is beslis vir juniors.

Python vir die web: wat 'n junior moet weet om te werk en te ontwikkel

Hoofonderwerpe:

  • Watter kennis het 'n beginner programmeerder nodig om te oefen
    webblad ontwikkeling?
  • Wat verwag werkgewers van ontwikkelaars?
  • Wat om te doen om werk te kry sonder ondervinding?
  • Hoe kan 'n Python-ontwikkelaar ontwikkel?

Python Junior Podcast is 'n programmering podcast vir diegene wat Python beter wil verstaan. Uitsendings word deur gemeenskapsevangeliste uitgevoer Moskou Python en kursusonderwysers Leer Python.

Deelnemers aan die gesprek:

  • Valentin Dombrovsky,medestigter van MoscowPython
  • Zlata Obukhovskaya, NVIDIA-spanleier
  • Grigory Petrov, evangelis Moskou Python
  • Alexey Shtyrnyaev, ontwikkelaar by FinEx, onderwyser van Leer-kursusse
    Python

Waarom Python goed is vir webontwikkeling

Valentin Dombrovsky: Waarom is Python geskik vir webontwikkeling? Hoekom nie PHP of JavaScript, byvoorbeeld nie?

Grigory Petrov: Daar is dus nie veel keuse nie. Ten spyte van die feit dat jy in die moderne web eintlik 'n enkele bladsy-toepassing of progressiewe webtoepassing sonder 'n backend kan bou - suiwer deur gebruik te maak van front-end-tegnologieë, met behulp van JavaScript - is dit steeds te ingewikkeld, swak geïndekseer en vereis koel ontwikkelaars.

As ons 'n webwerf of diens wil maak, gebruik ons ​​'n gekombineerde benadering: sommige backend implementeer die logika en skep webblaaie, en sommige frontend teken hierdie webblaaie in die blaaier. En wanneer ons dit alles vinnig moet saamvoeg op iets, het ons nie regtig 'n keuse nie.

Kom ons kyk na die moontlike opsies.

  • VS#. Microsoft is regtig wonderlik, hulle het .NET Core gemaak en bevorder dit op elke moontlike manier. Maar eerstens is dit 'n nuwe kruisplatform-tegnologie, en alles is nog nie glad daar nie. Tweedens is dit baie duur, daar is min C#-ontwikkelaars – bloot omdat dit ongewild is.
  • Java. Dis ingewikkeld. Om 'n normale webwerf in Java te maak, neem nie 10 reëls kode nie, soos in Python. Dit is baie kode, dit is raamwerke, en jy moet die besonderhede van die opstel van Java-bedieners ken. In die algemeen, voortdurende pyn en lyding.
  • PHP. In die nuutste weergawes is dit wonderlik. Ek sal selfs dit sê: PHP 7.2 is nie erger as Python nie. Maar jy kan nie net PHP 7.2 optel en gebruik nie. As 'n gewone, nie topontwikkelaar 'n webwerf in PHP maak nie, sal hy nie net in 7.2 skryf nie: hy sal steeds 'n paar handboeke, tutoriale moet lees, daar is oral baie nalatenskapkode, en dit is nie baie goed nie.
  • JavaScript en Node.js. Dit is wonderlik en baie modern as daar een taal op beide die voorkant en die agterkant is. Net nie baie stabiel nie. Node.js is 'n goeie ding, maar dit is problematies om dit in produksie te ontplooi sodat dit nie ineenstort nie en stabiel werk. Plus, as ons kwaliteit JavaScript-kode wil skryf, het ons nie JavaScript nodig nie, maar TypeScript. Maar TypeScript is onverwags kompleks, en die gemiddelde ontwikkelaar se brein kook wanneer hulle dit sien.

Kom ons los Ruby, Haskell, Erlang en ander nisgoed uit, en ons sit met ... Python. 'n Taal met konsekwente sintaksis, 'n eenvormige standaardbiblioteek, die beste dokumentasie, gewilde liggewigraamwerke en die megagewilde Django-kombinasie.

Dit blyk dat, ten spyte van die wydste keuse, as ons gewone, nie top-ontwikkelaars het nie, ons 'n gewone besigheid is wat gewone webwerwe wil maak, ons het nie 'n ontwikkelingsafdeling vir 50 mense nie, dan neem ons Python.

Watter kennis is nodig om die beroep te betree?

Zlata Obukhovskaya: Ek glo dat jy een raamwerk goed moet ken – en weet wat ander bestaan ​​en wanneer dit gebruik word. Waar is Tornado, waar is Django, waar is Flask, waar is aiohttp en so aan.
Dit sal nuttig wees om te weet dat daar iets soos protokolle is. Veral kennis van die http-protokol is sentraal vir die bou van webtoepassings.

Jy moet ook ten minste min of meer verstaan ​​hoe die voorkant in webprojekte werk: wat is HTML, CSS, JS.

Alexey Shtyrnyaev: En weet waar die dokumentasie is. Dit is die belangrikste.

Grigory Petrov: Hier trap ons op baie wankelrige grond. As ons ongelukkig is en ons op een of ander manier die moderne frontend ernstig begin bestudeer, dan sal dit ongeveer 10 keer meer ingewikkeld wees as die backend in Python. 'n Beginner ontwikkelaar moet sy fokus beperk sodat hy HTML kan begin leer, maar nie verdwaal in al hierdie divs, spans, floats, hoe alles in lyn en in lyn is nie.

Alexey Shtyrnyaev: Benodig 'n basiese Bootstrap-kursus. En die basiese beginsels van HTML.

In die eerste jaar moet jy nie in JS-raamwerke delf nie (as jy op die agterkant fokus). Die basiese Bootstrap-kursus het reeds klaargemaakte modules: as jy 'n glyer wil hê, maak 'n skuifbalk; as jy 'n drywende spyskaart wil hê, maak 'n drywende spyskaart.

Zlata Obukhovskaya: Ek dink dat terwyl u die voorkant bestudeer, u uself veral kan verdiep in hoe statika oor die algemeen aan webtoepassings gegee word. Die ontwikkelaar gaan dus glad voort om te begin leer hoe die argitektuur van webtoepassings in beginsel werk en hoe hulle in produksie leef.

Grigory Petrov: Ja, ek sal dit dadelik aanbeveel vir ingeval jy Python as 'n backend-ontwikkelingstaal gekies het en byvoorbeeld Django as 'n raamwerk: Django het dokumentasie in die Django Book, dit is regtig gaaf, dit bevat alles wat Zlata gesê het, sy het regtig goed vir 'n beginner.

Alexey Shtyrnyaev: Sommige Django-meisies is ook geskik vir 'n vinnige begin as jou doel is om Django te leer. Dit is 'n tutoriaal waar jy in een dag oor die top kan gaan, die basiese beginsels kan verstaan ​​en waartoe die raamwerk in staat is.

Valentin Dombrovsky: Ter voorbereiding vir die opname van die podcast, het ons 'n lys saamgestel van wat 'n Python-programmeerder vir webontwikkeling nodig het, wat 'n opsomming gee van wat ons vroeër gesê het.

Wat is ingesluit in die basiese beginsels vir webontwikkeling in Python

  • Webraamwerke Django, Flask, aiohttp, Tornado, ens. (en weet van die bestaan ​​van ander).
  • Protokolle en API's: hoofsaaklik http, JSON-RPC, Protokolbuffers, gRPC.
  • ORM en migrasies, relasionele databasisse, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Basiese beginsels van HTML, CSS, Bootstrap, sowel as JS-raamwerke en JQuery.
  • Beginsels van toepassingswerking in produksie, toetsing, eenheidstoetse, outotoetse, weergawebeheerstelsels, git.

Het juniors algoritmes nodig?

Zlata Obukhovskaya: Aanvanklik hoef jy nie die algoritmes te ken nie; hulle sal geleidelik in jou kop verskyn as jy lank genoeg aan ontwikkeling deelneem. Ek ken 'n klomp goeie ingenieurs wat nie 'n goeie formele algoritmekursus gehad het nie.

Grigory Petrov: Ek wil brandstof by die vuur gooi. Waar kom ons drang na algoritmes vandaan?

Ons het tans nie 'n fundamentele opleiding in algoritmes nie, ons weet nie hoe om programmeerders op te lei nie, ons het nie 'n tegniese basis nie.

Hulle probeer dit doen, maar hier het ons die storie van Hogwarts: ons kan nie 'n skool vir towenaars skep terwyl ons nie 'n enkele towenaar het nie. Daarom, wat moet 'n universiteit doen as hulle na hulle kom en vra: "Begin programmeerders oplei," maar hulle het nie programmeerders nie, want almal werk by Mail.ru, Rambler en Yandex, is hulle gelukkig daar?

Die universiteit kyk en sê:
- Goed, programmering. Kom ons vind 'n verwante area van kennis en nooi spesialiste van daar af. Kom ons nooi joernaliste wat kopie kan skryf, elektriese ingenieurs wat elektriese stroombane kan maak, en wiskundiges wat algoritmes kan gebruik.

Op die ou end blyk dit dat dit so prakties is soos om 'n bouerdeeltjiefisika te leer net omdat baksteen en sement van elementêre deeltjies gemaak is.

Terselfdertyd praat hulle nie self van sement en bakstene nie, want die fisikus wat 'n bouer probeer oplei, weet nie hoe om huise te bou nie. Gevolglik kry ons ’n bouer wat perfek kan beskryf hoe “sement werk”, maar dit nog nooit gesien het nie en nie weet hoe om iets daarvan te maak nie.

Algoritmes en datastrukture is baie goed, maar dit is 'n baie klein toepassingsarea. Hulle is dringend nodig, byvoorbeeld as jy 'n speletjie-enjin, samesteller of netwerkprotokol skryf.

Die meeste programmeerders los besigheidsprobleme op waar algoritmes en datastrukture nie nodig is nie.

Die moeilikste wiskunde daar is twee keer optel en dan deel. Dit verg heeltemal ander kennis. Die oplossing van sakeprobleme vereis hoofsaaklik toegepaste eerder as fundamentele kennis.

Dit is beter vir 'n beginner ontwikkelaar om 'n begrip van besigheid te hê en hoe om die nodige strukture korrek en vinnig uit klaargemaakte blokke saam te stel, hoe om hulle te ontfout, hoe om seker te maak dat hulle nie uitmekaar val nie, weet hoekom hulle uitmekaar val, wat gebeur as vereistes verander en die program begin "vestig op die fondament" soos 'n huis na reën.
Dit is praktiese dinge en 'n begrip van hoe om sagteware te skryf. Hy moet weet dat hy, benewens die ontfouter, 'n stel gereedskap het wat presies sal wys waar die program vertraag.

Valentin Dombrovsky: Hierdie vergelyking het by my opgekom: dit is 'n vertaling uit die taal van besigheid in 'n taal waarin jy met 'n rekenaar kan kommunikeer. Dit wil sê, 'n programmeerder is 'n soort spesifieke taalkundige.

Grigory Petrov: Besigheid het 'n skrywer nodig, nie 'n taalkundige nie. Die skrywer hoef nie te weet hoekom hierdie woord duisend jaar gelede hierin omskep is nie. Hy moet hierdie woorde kan toepas.

Wat jy nodig het om jou eerste werk as 'n ontwikkelaar te vind

Alexey Shtyrnyaev: Daar is waarskynlik geen universele resep vir hoe om junior te kook nie.

As jy na een of ander maatskappy kom, sal hulle jou nie huur nie, want jy ken Django, JSON en 'n paar algoritmes. Jy sal heel waarskynlik gehuur word vir die vaardighede wat hierdie maatskappy hier en nou nodig het.

Daar is baie maatskappye, en hulle het almal verskillende vereistes. Daar is nie so 'n universele hoeveelheid kennis wat verkry moet word om 'n CV verder voor te berei en 'n werk te gaan soek nie.

Grigory Petrov: Toe ons by VoxImplant verskeie ingenieurs gesoek het, het ons tegniese direkteur die basiese vereiste soos volg geformuleer: 'n persoon moet in staat wees om probleme op te los. Dit is duidelik dat 'n junior dit nie altyd effektief sal doen nie, nie op die beste manier nie en nie altyd korrek nie, maar ideaal gesproke gee jy 'n persoon 'n taak, hy span en los dit op. Dit is die vaardigheid waarna werkgewers hoofsaaklik soek.

Zlata Obukhovskaya: Mense wat werk uit ander velde soek, het 'n mate van voordeel uit 'n besigheidsoogpunt omdat hulle reeds 'n pad gegaan het en probleme vinnig kan oplos. Dit is sagte vaardighede, ek sou dit selfs werkskultuur noem. Dikwels het universiteitsgraduandi nog nie hierdie werkskultuur ontwikkel nie.

Maar ek wil nog steeds probeer om 'n soort resep vir beginners te gee.

Eerste stappe vir 'n beginner ontwikkelaar

Zlata Obukhovskaya: Die eerste is dat dit steeds 'n soort projek van jou eie is, want jy moet iets in jou CV skryf en 'n minimale portefeulje wys. Dit is cooler as hierdie projekte nie vir jouself gemaak word nie, maar as 'n vryskutprojek - vir iemand.

Na die eerste projekte kan jy reeds 'n CV maak en dit aan alle maatskappye stuur waar daar Junie-poste is. Onderhoude sal insig gee in wat maatskappye nodig het. Vroeër of later sal iemand jou aanstel, ten minste in 'n klein maatskappy. Vervolgens sal hierdie werkservaring jou die geleentheid gee om by 'n groter en interessanter maatskappy te kom.

Valentin Dombrovsky: Terloops, in ons kursusse berei ons studente voor om hul eie projek binne 10 weke van opleiding te hê. Boonop lei ons spanontwikkelingsvaardighede op. Dit is presies die sagte vaardighede waaroor Zlata gepraat het.

Alexey Shtyrnyaev: Ek kan jou uit ondervinding sê dat dit baie lank kan neem om jou eerste werk te soek. As jy 'n maand of twee soek, is dit normaal. As jy jou CV by alle maatskappye indien, gaan na onderhoude, in die derde maand sal jy beslis iets vind.

Valentin Dombrovsky: Jy kan jou eie projekte sny of eenvoudige vryskutprojekte aanpak en terselfdertyd jou CV uitstuur.

Watter vooruitsigte het 'n Python-ontwikkelaar?

Zlata Obukhovskaya: 'n Python-ontwikkelaar kan enige plek gaan. Jy kan gaan toets en voortgaan om te ontwikkel tot 'n senior argitek. Of selfs in bestuur. Daar is verskillende tipes tegniese bestuurders, en jy kan groei tot topbestuur. U kan ontwikkel in datawetenskap, DevOps, in outomatiese toetsing of masjienleer gaan.

Valentin Dombrovsky: Oor die algemeen is daar baie opsies en geleenthede, insluitend ons kursusse. Jy het nie veel kennis by die ingang nodig nie, maar dit is raadsaam om dan 'n wyer reeks te dek, want hoe meer jy kan, hoe beter vir jou.

***

Dit is net deel van die vrystelling Python Junior. Die volledige weergawe van die episode is beskikbaar luister.

Of selfs kyk:

Speel video

Podcast RSS

Dankie vir die lees, luister of kyk.

Bron: will.com

Voeg 'n opmerking