Python për Web: çfarë duhet të dijë një junior për të punuar dhe zhvilluar

Ne kemi përgatitur një përmbledhje të shkurtër me mendimet kryesore nga Python Junior Podcast: në të diskutuam se nga të fillojë dhe ku të shkojë një zhvillues i ri në Python. Kohët e fundit kemi shumë përmbajtje për zhvilluesit mesatarë dhe të avancuar, por ky episod është sigurisht për fillestarët.

Python për Web: çfarë duhet të dijë një junior për të punuar dhe zhvilluar

Temat kryesore:

  • Cilat janë njohuritë që i nevojiten një programuesi të ri për të u angazhuar në
    zhvillimin e uebit?
  • Çfarë presin punëdhënësit nga zhvilluesit?
  • Çfarë të bëni për të gjetur punë pa përvojë?
  • Si mund të zhvillohet një zhvillues Python?

Python Junior Podcast — një podcast për programimin për ata që duan të kuptojnë më mirë Python. Episodet udhëhiqen nga evangjelistët e komunitetit MoscowPython dhe mësues të kurseve Learn Python.

Në bisedë morën pjesë:

  • Valentin Dombrovski,bashkreatori i MoscowPython
  • Zlata Obukhovskaya, shefi i ekipit në NVIDIA
  • Grigory Petrov, evangjelist i MoscowPython
  • Aleksey Shternyaev, zhvillues në FinEx, mësues i kurseve Learn
    Python

Pse Python është i mirë për zhvillimin e uebit

Valentin Dombrovski: Pse pikërisht Python është i përshtatshëm për zhvillimin e uebit? Pse jo PHP ose JavaScript, për shembull?

Grigory Petrov: Nuk ka shumë mundësi. Megjithatë, edhe pse në uebin modern është e mundur të krijohet një aplikacion i vetme faqeje ose një aplikacion progresiv thjesht me teknologji frontend si JavaScript, prapëseprapë kjo është shumë e komplikuar, është e vështirë për t'u indeksohen dhe kërkon zhvillues të shkëlqyer.

Nëse duam të krijojmë një faqe ose një shërbim, përdorim një qasje të kombinuar: kemi një backend që realizon logjikën dhe krijon faqet e internetit dhe një frontend që vizaton këto faqe në shfletues. Dhe kur duhet ta ndërtojmë shpejt këtë, nuk kemi shumë mundësi.

Le të shqyrtojmë mundësitë e mundshme.

  • C#. Microsoft në të vërtetë po bën një punë të shkëlqyer, ata krijuan .NET Core dhe po e promovojnë në çdo mënyrë. Por, së pari, kjo është një teknologji e re multicelulare dhe nuk është gjithmonë e lehtë. Së dyti, është me të vërtetë e shtrenjtë; zhvilluesit C# janë të pakët — thjesht për shkak se ajo nuk është e njohur.
  • Java. Kjo është e komplikuar. Të krijosh një faqe të mirë në Java — nuk janë 10 rreshta kodi si në Python. Kjo kërkon shumë kod, ka frameworke, dhe duhet të njohësh specifikat e konfigurimit të serverëve Java. Në përgjithësi, është plot dhimbje dhe vuajtje.
  • PHP. Në versionet e fundit është e shkëlqyer. Madje do të thosha: PHP 7.2 nuk është më i keq se Python. Por nuk mund ta përdorësh PHP 7.2 thjesht kështu. Nëse një zhvillues jo i nivelit të lartë krijon një faqe në PHP, ai nuk do të shkruajë vetëm në 7.2; prapë do t'i duhet të lexojë disa libra mësimorë, tutoriale; ka shumë kod legacy, dhe kjo nuk është shumë e mirë.
  • JavaScript dhe Node.js. Kjo është e shkëlqyer dhe shumë moderne, kur një gjuhë përdoret në frontend dhe backend. Por nuk është shumë e qëndrueshme. Node.js është gjë e mirë, por është problematike ta vendosësh në prodhim në mënyrë që të mos bjerë dhe të funksionojë stabilisht. Për më tepër, nëse duam të shkruajmë kod cilësor në JavaScript, na nevojitet jo JavaScript, por TypeScript. Dhe TypeScript është papritmas shumë i komplikuar; kur zhvilluesi i zakonshëm e sheh atë, i ngrihet truri.

Le t'i lëmë mënjanë Ruby, Haskell, Erlang dhe gjëra të tjera niçe, dhe na mbetet... Python. Një gjuhë me sintaksë konsistente, një bibliotekë standartësh uniforme, dokumentacion të shkëlqyer, frameworke të popullarizuar dhe megashumëpopullarizuara si Django.

Pra, ndonëse kemi një shtrirje të gjerë mundësish, nëse kemi zhvillues të zakonshëm, jo të nivelit të lartë, ne jemi një biznes i zakonshëm që dëshiron të krijojë faqe të zakonshme, nuk kemi një departament zhvillimi me 50 njerëz, atëherë ne zgjidhim Python.

Cilat janë njohuritë e nevojshme për të hyrë në profesion

Zlata Obukhovskaya: Mendoj se duhet të njohësh mirë një framework — dhe të dish se çfarë tjetër ekziston dhe kur përdoren. Ku janë Tornado, Django, Flask, aiohttp e kështu me radhë.
Do të jetë e dobishme të dish se ka një gjë, siç janë protokollet. Sidomos, njohja e protokollit http është thelbësore për ndërtimin e aplikacioneve në internet.

Gjithashtu, duhet të kesh një ide të përgjithshme se si janë organizuar projektet e internetit për frontend: çfarë është HTML, CSS, JS.

Aleksey Shternyaev: Dhe të dish se ku ndodhet dokumentacioni. Kjo është më e rëndësishmja.

Grigory Petrov: Këtu hyjmë në një tokë shumë të pasigurt. Nëse nuk kemi pasur fat dhe kemi filluar të studiojmë thellësisht frontendin modern, atëherë ai do të jetë rreth 10 herë më i komplikuar se backend në Python. Një zhvillues i ri duhet ta kufizojë fokusin e tij në mënyrë që të fillojë të studiojë HTML, por pa u zhytur në të gjitha këto div, span, float, si rregullohet dhe vendoset gjithçka.

Aleksey Shternyaev: Në nevojitet një kurs bazë për Bootstrap. Dhe bazat e HTML.

Në vitin e parë, nuk është e nevojshme të thellohemi në frameworke JS (nëse fokusohemi në backend). Në kursin bazë të Bootstrap tashmë ka module të gatshme: nëse do slider — bëj një slider, nëse do menu flottante — bëj një menu flottante.

Zlata Obukhovskaya: Mendoj se përmes studimit të front-end-it mund të thellohet në atë që është mënyra se si statika ofrohet aplikacioneve web. Kështu programuesi kalon gradualisht në momentin kur fillon të kuptojë si funksionon në thelb arkitektura e aplikacioneve web dhe si ato jetojnë në prodhim.

Grigory Petrov: Po, do ta rekomandoja menjëherë për rastin nëse keni zgjedhur Python si gjuhën e zhvillimit të backend dhe, për shembull, Django si framework: Django ka dokumentacionin në Django Book, që është vërtet i shkëlqyer, aty është gjithçka që tha Zlata, është me të vërtetë e mirë për fillestarët.

Aleksey Shternyaev: Një tjetër opsion i shpejtë është ndonjë Django Girls, nëse qëllimi është të studioni pikërisht Django. Ky është një tutorial ku gjatë një dite mund të kaloni nëpër përmbajtjen bazë, të kuptoni themelet dhe atë çfarë është e aftë të bëjë frameworku.

Valentin Dombrovski: Kur po përgatiteshim për regjistrimin e podcastit, përgatitëm një listë të asaj që i nevojitet një programuesi në Python për zhvillimin web, me çfarë përmbledhim ato që thamë më parë.

Çfarë përfshihet në bazën për zhvillimin web në Python

  • Frameworket web si Django, Flask, aiohttp, Tornado etj. (duhet të dini edhe për ekzistencën e të tjerëve).
  • Protokolet dhe API-të: para së gjithash http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM dhe migrimet, bazat e dhënash relacional, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Themelet e HTML, CSS, Bootstrap, si dhe frameworket JS dhe jQuery.
  • Parimet e funksionimit të aplikacioneve në prodhim, testimi, testet njësi, testet automatike, sistemet e kontrollit të versioneve, git.

A janë të nevojshme algoritmet për një junior

Zlata Obukhovskaya: Në fillim nuk është e nevojshme të dini algoritmet, ato do të shfaqen ngadalë në mendje nëse angazhoheni mjaftueshëm në zhvillim. Njoh shumë inxhinierë të mirë që nuk kanë pasur një kurs të mirë formal mbi algoritmet.

Grigory Petrov: Dua të hedh më shumë benzinë në zjarri. Cila është origjina e dëshirës sonë për algoritme?

Aktualisht nuk kemi arsimim themelor mbi algoritmet, nuk dimë të mësojmë programuesit, nuk kemi bazën teknike.

Kjo përpiqet të bëhet, por historia është si të Hogwartsit: nuk mund ta bëjmë një shkollë magjike, përderisa s’kemi asnjë magjistar. Pra, çfarë duhet të bëjë një universitet që merr kërequests për të filluar të edukojë programuesit, kur nuk ka programues, sepse të gjithë punojnë në Mail.ru, Rambler dhe Yandex, atje janë mirë?

Në universitet shohin dhe thonë:
— Po, programim. Le të gjejmë ndonjë fushë të ngjashme njohurie dhe të ftojmë specialistë nga aty. Le të ftojmë gazetarë që dinë të shkruajnë tekst, inxhinierë elektrikë që dinë të bëjnë skemat elektrike, dhe matematikanë që dinë për algoritmet.

Në përfundim del se kjo është po aq e arsyeshme sa të mësohet një ndërtues në fizikën e grimcave elementare vetëm sepse tulla dhe cimenti përbëhen nga grimca elementare.

Në të njëjtën kohë, për cimentin dhe tullat nuk flitet, sepse një fizikant që përpiqet të mësojë një ndërtues, vetë nuk di të ndërtojë shtëpi. Në fund marrim një ndërtues që është në gjendje të përshkruajë përkryer se si "funksionon cimentin", por që nuk e ka parë asnjëherë dhe nuk di të bëjë asgjë me të.

Algoritmet dhe strukturat e të dhënave janë shumë të mira, por janë një fushë shumë e vogël e aplikueshme. Ato janë jashtëzakonisht të nevojshme, për shembull, nëse po shkruan një motor lojrash, një kompilator, ose një protokoll rrjeti.

Shumica e programuesve zgjidhin probleme biznesi ku algoritmet dhe strukturat e të dhënave nuk janë të nevojshme.

Aty matematikat më të komplikuara janë dy herë të mbledhësh, e mund të përfundosh me një zbritje. Aty të nevojiten të tjera njohuri. Për zgjidhjen e problemeve të biznesit, kërkohen kryesisht njohuri aplikative, jo të thella.

Një programues fillestar është më mirë të ketë një ide mbi biznesin dhe se si të ndërtojë shpejt dhe me saktësi strukturat e nevojshme nga blloqe të gatshme, si t'i shkaktojë ato të mos shemben, e të dijë pse ato shemben, çfarë ndodh kur kërkesat ndryshojnë dhe programi fillon "të mbushë themelin", si një shtëpi pas shiut.
Këto aspekte praktike dhe kuptimi se si të shkruhet software. Ai duhet të dijë se përveç debugger-it, ka një set mjetesh që do të tregojë se ku saktësisht programi përhape.

Valentin Dombrovski: Më erdhi një krahasim: është si të përkthesh nga gjuha e biznesit në gjuhën me të cilën mund të komunikosh me kompjuterin. Pra, programuesi është një lloj gjuhëtar i veçantë.

Grigory Petrov: Biznesit i nevojitet një shkrimtar, jo një gjuhëtar. Shkrimtari nuk ka nevojë të dijë pse një mijë vjet më parë kjo fjalë u transformua në atë. Ai duhet të dijë si t'i zbatojë këto fjalë.

Çfarë është e nevojshme për të gjetur punën e parë si zhvillues

Aleksey Shternyaev: Ndoshta nuk ka një recetë universale për të përgatitur një junior.

Nëse vijni në ndonjë kompani, nuk do t'ju marrin sepse dini Django, JSON dhe pak algoritme. Në vend të kësaj, shumë për gjasat do t'ju marrin për aftësitë që janë të nevojshme këtu dhe tani nga kjo kompani.

Ka shumë kompani, dhe secila ka kërkesa të ndryshme. Nuk ka një volum universitar njohurish që duhet të fitohet për të përgatitur një CV dhe për t'u angazhuar në punësim.

Grigory Petrov: Kur ne në VoxImplant kërkonim disa juniorë, drejtori ynë teknikal formuloi kërkesën themelore kështu: personi duhet të dijë të zgjidhë probleme. Natyrisht, një junior nuk do ta bëjë këtë gjithmonë me efikasitet, as me mënyrën më të mirë dhe as gjithmonë saktë, por në ideale, ti i jep atij një detyrë, ai e merr seriozisht dhe e zgjidh. Kjo është aftësia që në radhë të parë kërkojnë punëdhënësit.

Zlata Obukhovskaya: Njerëzit që kërkojnë punë dhe kalojnë nga fusha të tjera kanë një avantazh të caktuar përsa i përket biznesit, sepse ata tashmë kanë kaluar një rrugë dhe dinë të zgjidhin probleme shpejt. Këto janë soft skills, unë do ta quaja madje kulturë pune. Shpesh, diplomantët e universiteteve nuk e kanë akoma të zhvilluar këtë kulturë pune.

Por ndoshta do të doja të jap një recetë për ata që po fillojnë.

Hapat e parë për një zhvillues të ri

Zlata Obukhovskaya: E para është që të kesh një projekt personal, sepse në CV duhet të ketë diçka të shkruar, të tregosh një portofol minimal. Më mirë është kur këto projekte janë bërë jo për vete, por për ndonjë klient në mënyrë freelance.

Pas projekteve të para, mund të bësh një CV dhe t'i dërgosh atë të gjitha kompanive që kanë pozita për juniorë. Intervistat do të japin një kuptim më të mirë të asaj që kërkojnë kompanitë. Herë pas here, dikush do të të marrë, edhe në një kompani të vogël. Për më tepër, kjo përvojë do të të japë mundësinë të kalosh në një kompani më të madhe dhe më interesante.

Valentin Dombrovski: Përveç kësaj, ne në kurse përgatisim nxënësit për të krijuar projektin e tyre brenda 10 javëve të mësimit. Gjithashtu, stërvitim në aftësitë e zhvillimit në grup. Këto janë ato soft skills për të cilat fliste Zlata.

Aleksey Shternyaev: Nga përvoja, mund të them se kërkimi për punën e parë mund të zgjasë shumë. Kur e kërkoni për një muaj ose dy — kjo është normale. Nëse dërgoni CV në të gjitha kompanitë, shkoni në intervista, në muajin e tretë patjetër do të gjeni diçka.

Valentin Dombrovski: Mund të punoni në projektet tuaja ose të merrni projekte të thjeshta në mënyrë freelance dhe paralelisht të angazhoheni në dërgimin e CV-ve.

Çfarë mundësish ka për një zhvillues Python

Zlata Obukhovskaya: Një zhvillues Python mund të shkojë kudo. Mund të kalosh në testim, të vazhdosh të zhvillohesh deri në arkitekt të lartë. Ose madje në menaxhim. Menaxherët teknikë janë të ndryshëm, dhe mund të arrish deri në menaxhimin e lartë. Mund të zhvillosh në data science, DevOps, të shkosh në testimin automatik ose machine learning.

Valentin Dombrovski: Në përgjithësi, ka shumë mundësi, përfshirë edhe kurset tona. Njohuritë e nevojshme në fillim nuk janë shumë, por është e dëshirueshme që më pas të përfshijë një gamë më të gjerë, sepse sa më shumë të dish, aq më mirë për ty.

***

Kjo është vetëm një pjesë e episodit Python Junior. Mund të dëgjosh versionin e plotë të episodit këtu.

Ose madje ta shikosh:

Luaj videon

RSS i podcastit

Faleminderit që e lexuat, dëgjua ose shikuat.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster