Python for the Web: what a junior developer needs to know to work and grow

Ne kemi bërë një përmbledhje të shkurtër me mendimet kryesore nga Python Junior Podcast: aty kemi diskutuar për nga ku të fillojmë dhe ku të shkojmë si një zhvillues fillestar në Python. Kohët e fundit kemi shumë përmbajtje për midlevel dhe seniorët, por ky episod është për të vërtetë për juniorët.

Python for the Web: what a junior developer needs to know to work and grow

Temat kryesore:

  • Cilat njohuri i duhen një programuesi fillestar për të marrë pjesë
    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 është një podcast mbi programimin për ata që duan të kuptojnë më mirë Python. Emisionet drejtohen nga evangelistët e komunitetit MoscowPython dhe mësuesit e kurseve Learn Python.

Në bisedë morën pjesë:

  • Valentin Dombrovski,bashkëthemelues i MoscowPython
  • Zlata Obukhovskaya, lider ekipi në NVIDIA
  • Grigory Petrov, evangelist i MoscowPython
  • Aleksey Shtyrnyaev, zhvillues në FinEx, mësues i kurseve Learn
    Python

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

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

Grigory Petrov: Nuk ka shumë zgjedhje, në fakt. Megjithëse në Uebin modern mund të bësh një aplikacion njëfaqesh ose aplikacion uebi progresiv vetëm me teknologjitë frontend, me JavaScript, përsëri, kjo është shumë e komplikuar, indikohet keq dhe kërkon zhvillues të shkëlqyer.

Nëse duam të bëjmë një faqe interneti ose një shërbim, ne përdorim një qasje të kombinuar: një backend ekzekuton logjikën dhe krijon faqet e uebit, ndërsa një frontend vizaton këto faqe në shfletues. Dhe kur na nevojitet të bëjmë gjithçka shpejt, zgjedhja nuk është shumë e madhe.

Le të shqyrtojmë opsionet e mundshme.

  • C#. Microsoft është vërtet i mrekullueshëm, ata krijuan .NET Core dhe e promovojnë atë në çdo mënyrë. Por, nga ana tjetër, kjo është një teknologji e re ndërplatformës dhe gjithçka nuk është plotësisht e lehtë akoma. Në të dytën, është me të vërtetë e shtrenjtë, zhvilluesit e C# janë të paktë — thjesht sepse nuk është e njohur.
  • Java. Kjo është e komplikuar. Të krijosh një faqe të mirë në Java nuk është 10 rreshta kod, si në Python. Kjo është shumë kod, kjo janë framework-e, dhe duhet të dish karakteristikat e konfigurimit të serverëve Java. Në thelb, një përvojë e plotë e dhimbjeve dhe vuajtjeve.
  • PHP. Në versionet e fundit, ai është i mrekullueshëm. Madje do të thoja: PHP 7.2 nuk është më i keq se Python. Por nuk mund ta përdorësh thjesht PHP 7.2. Nëse një zhvillues i zakonshëm, jo më i larti, bën një faqe me PHP, ai nuk do të shkruajë vetëm në 7.2: prapë do të duhet të lexojë disa libra, tutoriale, kudo ka shumë kod legacy, dhe kjo nuk është shumë mirë.
  • JavaScript dhe Node.js. Kjo është e mrekullueshme dhe shumë moderne, kur një gjuhë përdoret si në front-end, ashtu edhe në back-end. Vetëm se nuk është shumë e qëndrueshme. Node.js është një gjë e mirë, por është problematike ta zbatosh në prodhim në mënyrë që të mos bjerë dhe të funksionojë qëndruar. Plus, nëse duam të shkruajmë kod me cilësi të lartë në JavaScript, na nevojitet jo JavaScript, por TypeScript. Dhe TypeScript, befas, është befasueshëm i komplikuar, kur e shohin, zhvilluesit e zakonshëm i ndizet truri.

Le të anashkalojmë Ruby, Haskell, Erlang dhe gjërat e tjera niçë, dhe ne mbetemi... Python. Një gjuhë me një sintaksë konsistente, një bibliotekë standarde uniforme, dokumentacionin më të mirë, frame të njohura të lehta, dhe një kombajn mega popullor, Django.

Kështu që, pavarësisht nga zgjedhja e gjerë, nëse kemi zhvillues të zakonshëm, jo më të lartët, ne jemi një biznes i zakonshëm që dëshiron të bëjë faqe të zakonshme, ne nuk kemi një departament zhvillimi me 50 njerëz, kështu që ne zgjidhim Python.

Cilat dije nevojiten për t'u futur në profesion

Zlata Obukhivska: Mendoj se duhet të njohësh mirë një framework — dhe të dish se cilët janë të tjerë dhe kur përdoren. Ku është Tornado, ku është Django, ku është Flask, ku është aiohttp dhe kështu me radhë.
Do të jetë e dobishme të dish se ekziston diçka si protokollet. Saktësisht, njohja e protokollit http është qendrore për ndërtimin e aplikacioneve web.

Gjithashtu, duhet të kesh të paktën një përfytyrim rreth se si është ndërtimi i front-end-it në projekte web: çfarë është HTML, CSS, JS.

Aleksei Shtyrnaev: Dhe të dish se ku ndodhet dokumentacioni. Kjo është më e rëndësishme.

Grigory Petrov: Këtu hyjmë në një terren të pasigurt. Nëse nuk kemi fat dhe kemi filluar të studiojmë seriozisht front-end modern, do të jetë afërsisht 10 herë më e komplikuar se back-end në Python. Një zhvillues i ri duhet të kufizojë fokusin e tij në mënyrë që të fillojë të studiojë HTML, por pa rënë në të gjithë këta div, span, float, si rregullohet dhe ndërtimi.

Aleksei Shtyrnaev: Kërkohet një kurs themelor për Bootstrap. Dhe bazat e HTML.

Në vitin e parë, nuk është e nevojshme të thellohemi në framework-et JS (nëse fokusoheni në backend). Në kursin bazë të Bootstrap janë modulet e gatshme: nëse dëshiron slider - krijo slider, nëse dëshiron menu që lëviz - krijo menu që lëviz.

Zlata Obukhivska: Mendoj se nga studimi i frontend-it mund të thellohemi, sidomos në mënyrën se si statika është dorëzuar për aplikacionet web. Kështu, zhvilluesi kalon natyrshëm në njohjen e strukturës së aplikacioneve web dhe si ato funksionojnë në prodhim.

Grigory Petrov: Po, do të rekomandoja menjëherë në rastin nëse keni zgjedhur Python si gjuhën e zhvillimit backend dhe, për shembull, Django si framework: Django ka dokumentacionin e tij në Django Book, i cili është realisht i shkëlqyer, përmban të gjitha ato që tha Zlata, është me të vërtetë i shkëlqyer për fillestarët.

Aleksei Shtyrnaev: Gjithashtu, për një fillim të shpejtë, mund të përdorni ndonjë Django Girls, nëse qëllimi është të mësoni saktësisht Django. Ky është një udhëzim ku brenda një dite mund të kaloni nëpër tema, të kuptoni bazat dhe çfarë është në gjendje framework-u.

Valentin Dombrovski: Duke u përgatitur për regjistrimin e podcastit, përgatitëm një listë të asaj që i nevojitet një programuesi në Python për zhvillimin web, duke e përmbledhur atë që u tha më parë.

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

  • Framework-et web Django, Flask, aiohttp, Tornado etj. (dhe të dihet për ekzistencën e të tjerëve).
  • Protokolet dhe API-të: në radhë të parë http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM dhe migrimet, bazat e të dhënave relacionale, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Bazat e HTML, CSS, Bootstrap, si dhe framework-et JS dhe JQuery.
  • Parimet e funksionimit të aplikacioneve në prodhim, testimi, testet unitare, testet automatike, sistemet e kontrollit të versioneve, git.

A kanë nevojë juniorët për algoritme

Zlata Obukhivska: Fillimisht nuk është e nevojshme të dini algoritmet, ato do të shfaqen gradualisht në mendje, nëse merresh me zhvillimin mjaft gjatë. Njoh shumë inxhinierë të mirë, të cilët nuk kishin pasur një kurs formal të mirë për algoritmet.

Grigory Petrov: Dua të derdh pak benzinë mbi zjarr. Nga e ku e kemi këtë dëshirë për algoritme?

Aktualisht nuk kemi një edukim themelor për algoritmet, nuk dinë të edukojnë programuesit, nuk kemi bazë teknike.

Kjo po përpiqet të bëhet, por këtu kemi historinë e Hogwarts-it: nuk mund të krijojmë një shkollë magjistarësh derisa të mos kemi asnjë magjistar. Prandaj, çfarë të bëj universiteti, në të cilin vijnë dhe kërkojnë: "Filloni të trajtoni programuesit", ndërkohë që ata nuk kanë programues, sepse të gjithë punojnë në Mail.ru, Rambler dhe "Yandex", atje ndihen mirë?

Në universitet shohin dhe thonë:
— O’kej, programim. Le të gjejmë një fushë të ngjashme njohurish dhe të ftojmë specialistë nga aty. Le të ftojmë gazetarë që dinë të shkruajnë tekste, inxhinierë elektrikë që dinë të bëjnë skemat elektrike, dhe matematikë që dinë për algoritmet.

Në fund del se kjo është po aq e arsyeshme sa të trajnohet një ndërtues në fizikën e pjesëve elementare vetëm sepse pllaka dhe çimentoja përbëhen nga pjesë elementare.

Megjithatë, për vetë çimenton dhe pllakat nuk flitet, sepse fiziçisti që tenton të mësojë ndërtuesin, nuk di të ndërtojë shtëpi. Në fund marrim një ndërtues që është në gjendje të shkruaj mirë se si "punon çimentoja", por 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 me aplikim. Ato janë jashtëzakonisht të nevojshme, për shembull, nëse po shkruan një motor loje, një kompiler, një protokoll rrjeti.

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

Aty matematika më e komplikuar është të mbledhësh dy herë dhe pastaj të ndash. Atje nevojiten njohuri krejtësisht të tjera. Për zgjidhjen e problemeve të biznesit kërkohen kryesisht njohuri aplikuese, jo themelore.

Një zhvillues fillestar është më mirë të ketë një përfaqësim të biznesit dhe se si t'i mbledhë shpejt dhe saktë blloqet e nevojshme, si t'i ndreqë, si të bëjë që ato të mos shkatërrohen, të dijë pse ato shkatërrohen, çfarë ndodh kur kërkesat ndryshojnë dhe programi fillon të "zgjerohet mbi themelin", si një shtëpi pas shiut.
Këto janë ato gjëra aplikuese dhe kuptimi i mënyrës se si të shkruhet softuer. Ai duhet të dijë se përveç debugut ka një grup mjetesh që do t'i tregojnë se ku saktësisht programi ngadalësohet.

Valentin Dombrovski: Më vjen të krahasoj këtë: është një përkthim nga gjuha e biznesit në një gjuhë që mund të komunikosh me kompjuterin. Domethënë, programuesi është një llinguist i veçantë.

Grigory Petrov: Biznesi ka nevojë për një shkrimtar, jo për një llinguist. Një shkrimtar nuk ka nevojë të dijë pse një mijë vjet më parë kjo fjalë u transformua në atë. Ai duhet të dijë si t'i përdorë këto fjalë.

Çfarë nevojitet për të gjetur punën e parë si zhvillues?

Aleksei Shtyrnaev: Ndoshta, nuk ka një recetë universale, sipas së cilës duhet përgatitur një junior.

Nëse bieni në një kompani, nuk do t'ju marrin për atë që dini Django, JSON dhe pak algoritma. Ka gjasa që do t'ju marrin për ato aftësi që i janë të nevojshme kësaj kompanie këtu e tani.

Ka shumë kompani dhe të gjitha kanë kërkesa të ndryshme. Nuk ka një volum universale njohurish që duhet të fitoni për të përgatitur më pas një CV dhe për të shkuar për t'u punësuar.

Grigory Petrov: Kur ne në VoxImplant kërkonim disa juniorë, drejtori ynë teknik e formuloi kërkesën themelore kështu: njeriu duhet të dijë si të zgjidhë detyra. Është e qartë se një junior nuk do ta bëjë këtë gjithmonë në mënyrë efikase, nuk do ta bëjë gjithmonë në mënyrën më të mirë dhe jo gjithmonë saktë, por në ideale ju e jepni një detyrë personit, ai përqendrohet dhe e zgjidh atë. Kjo është ajo aftësi që punëdhënësit e kërkojnë në radhë të parë.

Zlata Obukhivska: Njerëzit që kërkojnë punë duke kaluar nga fusha të tjera kanë një avantazh të caktuar nga pikëpamja e biznesit, sepse tashmë kanë kaluar një rrugë dhe dinë të zgjidhin detyra shpejt. Këto janë aftësi të buta, do t'i quaja këtë madje kulturë pune. shpesh, diplomantët e universiteteve nuk e kanë zhvilluar ende këtë kulturë pune.

Por do të doja të përpiqem megjithatë t'i jap ndonjë recetë fillestarëve.

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

Zlata Obukhivska: E para është një projekt personal, sepse duhet të kesh diçka për të shkruar në CV, të tregosh një portofol minimal. Është më mirë kur këto projekte janë bërë jo për vete, por në frelance - për dikë.

Pas projekteve të para, tashmë mund të përgatitni një CV dhe ta dërgoni në të gjitha kompanitë ku ka pozita junior. Intervistat do t'ju japin një kuptim të asaj që kërkojnë kompanitë. Në një moment do t'ju marrë ndonjë nga ato, ndoshta në një kompani të vogël. Në të ardhmen, kjo përvojë pune do t'ju ndihmojë të hyni në një kompani më të madhe dhe më interesante.

Valentin Dombrovski: Në fakt, ne përgatisim nxënësit në kurse për të ndërtuar projektin e tyre brenda 10 javëve të mësimit. Po ashtu, stërvitim aftësitë e punës në grup. Këto janë pikërisht ato aftësi të buta për të cilat folën Zlata.

Aleksei Shtyrnaev: Nga eksperienca do të them se mund të kërkoni punën e parë për një kohë të gjatë. Kur po kërkoni për një deri në dy muaj, është normale. Nëse dërgoni CV në të gjitha kompanitë dhe shkoni në intervista, në muajin e tretë sigurisht që do të gjeni diçka.

Valentin Dombrovski: Mund të punoni në projektet tuaja ose të merrni projekte të thjeshta si freelancer dhe njëkohësisht të angazhoheni në dërgimin e CV-ve.

Cilat janë perspektivat për zhvilluesin Python

Zlata Obukhivska: Një zhvillues Python mund të shkojë kudo. Mund të kaloni në testim, të vazhdoni të zhvilloheni deri në arkitektin senior. Ose madje në menaxhim. Menaxherët teknikë janë të ndryshëm, dhe është e mundur të arrini deri në nivelin e menaxhmentit të lartë. Mund të zhvilloheni në data science, DevOps, të shkoni në teste automatike ose në machine learning.

Valentin Dombrovski: Në përgjithësi, ka shumë mundësi, përfshirë dhe kurset tona. Nuk kërkohet shumë njohuri në fillim, por është e dëshirueshme të përfshini një gamë më të gjerë më vonë, sepse sa më shumë të dini, aq më mirë është për ju.

***

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

Ose madje ta shikoni:

Luaj videon

RSS i podcast-it

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

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster