Mēs izveidojām īsu atšifrējumu ar galvenajām domām no Python Junior Podcast: tajā mēs apspriedām, ar ko sākt un kur doties kā iesācējam Python izstrādātājam. Pēdējā laikā mums ir daudz satura vidējiem un senioriem, taču šī epizode noteikti ir paredzēta junioriem.

Galvenās tēmas:
- Kādas zināšanas ir jāpraktizē iesācējam programmētājam
web izstrāde? - Ko darba devēji sagaida no izstrādātājiem?
- Ko darīt, lai atrastu darbu bez pieredzes?
- Kā Python izstrādātājs var attīstīties?
Python Junior Podcast ir programmēšanas aplāde tiem, kas vēlas labāk izprast Python. Raidījumus vada kopienas evaņģēlisti un kursu pasniedzēji .
Sarunas dalībnieki:
- Valentīns Dombrovskis,Maskavas Python līdzdibinātājs
- Zlata Obukhovskaja, NVIDIA komandas vadītājs
- Grigorijs Petrovs, evaņģēlists MoscowPython
- Aleksejs Štirņajevs, FinEx izstrādātājs, Learn kursu pasniedzējs
Pitons
Kāpēc Python ir labs tīmekļa izstrādei
Valentīns Dombrovskis: Kāpēc Python ir piemērots tīmekļa izstrādei? Kāpēc ne PHP vai JavaScript, piemēram?
Grigorijs Petrovs: Tāpēc nav daudz izvēles. Neskatoties uz to, ka mūsdienu tīmeklī faktiski var izveidot vienas lapas lietojumprogrammu vai progresīvu tīmekļa lietojumprogrammu bez aizmugursistēmas - tikai izmantojot priekšgala tehnoloģijas, izmantojot JavaScript - tas joprojām ir pārāk sarežģīts, slikti indeksēts un prasa foršus izstrādātājus.
Ja mēs vēlamies izveidot vietni vai pakalpojumu, mēs izmantojam kombinētu pieeju: dažas aizmugursistēmas īsteno loģiku un izveido tīmekļa lapas, bet dažas priekšgals zīmē šīs tīmekļa lapas pārlūkprogrammā. Un, kad mums ir nepieciešams ātri kaut ko apvienot, mums nav īsti izvēles.
Apskatīsim iespējamos variantus.
- C#. Microsoft ir patiešām lielisks, viņi izveidoja .NET Core un reklamē to visos iespējamos veidos. Bet, pirmkārt, šī ir jauna starpplatformu tehnoloģija, un tur vēl ne viss ir gludi. Otrkārt, tas tiešām ir dārgi, C# izstrādātāju ir maz - vienkārši tāpēc, ka tas ir nepopulārs.
- Java Tas ir sarežģīti. Lai izveidotu parastu vietni Java, nav vajadzīgas 10 koda rindiņas, piemēram, Python. Tas ir daudz koda, tie ir ietvari, un jums ir jāzina Java serveru iestatīšanas specifika. Kopumā nepārtrauktas sāpes un ciešanas.
- PHP. Jaunākajās versijās tas ir brīnišķīgi. Es pat teikšu tā: PHP 7.2 nav sliktāks par Python. Bet jūs nevarat vienkārši paņemt un izmantot PHP 7.2. Ja parasts, nevis izcils izstrādātājs taisa vietni PHP, viņš nerakstīs tikai 7.2: viņam joprojām būs jālasa dažas mācību grāmatas, pamācības, visur ir daudz mantotā koda, un tas nav īpaši labi.
- JavaScript un Node.js. Tas ir lieliski un ļoti moderni, ja gan priekšgalā, gan aizmugurē ir viena valoda. Tikai ne pārāk stabils. Node.js ir laba lieta, taču ir problemātiski to izvietot ražošanā, lai tas nebojātu un darbotos stabili. Turklāt, ja mēs vēlamies rakstīt kvalitatīvu JavaScript kodu, mums nav nepieciešams JavaScript, bet gan TypeScript. Bet TypeScript ir negaidīti sarežģīts, un vidusmēra izstrādātāja smadzenes sāk vārīties, kad viņi to redz.
Atstāsim Ruby, Haskell, Erlang un citas nišas lietas, un mums atliek... Python. Valoda ar konsekventu sintaksi, vienotu standarta bibliotēku, labāko dokumentāciju, populāriem vieglajiem ietvariem un ļoti populāro Django kombināciju.
Izrādās, ka, neskatoties uz visplašāko izvēli, ja mums ir parastie, nevis top izstrādātāji, esam parasts bizness, kas grib taisīt parastas mājaslapas, mums nav izstrādes nodaļas uz 50 cilvēkiem, tad ņemam Python.
Kādas zināšanas ir nepieciešamas, lai iestātos profesijā?
Zlata Obukhovskaja: Es uzskatu, ka jums ir labi jāzina viens ietvars un jāzina, kādi citi pastāv un kad tie tiek izmantoti. Kur ir Tornado, kur ir Django, kur ir Flask, kur ir aiohttp un tā tālāk.
Būs noderīgi zināt, ka pastāv tāda lieta kā protokoli. Konkrēti, zināšanas par http protokolu ir būtiskas tīmekļa lietojumprogrammu izveidē.
Jums arī vismaz aptuveni jāsaprot, kā tīmekļa projektos darbojas priekšgals: kas ir HTML, CSS, JS.
Aleksejs Štirņajevs: Un zināt, kur atrodas dokumentācija. Tas ir vissvarīgākais.
Grigorijs Petrovs: Šeit mēs kāpjam uz ļoti nestabilas zemes. Ja mums nepaveicas un mēs kaut kā sāksim nopietni pētīt moderno frontend, tad tas būs apmēram 10 reizes sarežģītāks nekā Python backend. Iesācējam izstrādātājam ir jāierobežo uzmanība, lai viņš varētu sākt mācīties HTML, bet nepazust visos šajos divos, laidumos, pludiņos, kā viss ir izlīdzināts un sakārtots.
Aleksejs Štirņajevs: Nepieciešams Bootstrap pamatkurss. Un HTML pamati.
Pirmajā gadā jums nevajadzētu iedziļināties JS ietvaros (ja koncentrējaties uz aizmuguri). Bootstrap pamatkursā jau ir gatavi moduļi: ja gribi slīdni, taisi slīdni, ja gribi peldošu izvēlni, taisi peldošo izvēlni.
Zlata Obukhovskaja: Es domāju, ka, pētot frontend, jūs varat īpaši iedziļināties tajā, kā statika parasti tiek piešķirta tīmekļa lietojumprogrammām. Tāpēc izstrādātājs vienmērīgi pāriet uz priekšu, lai uzzinātu, kā principā darbojas tīmekļa lietojumprogrammu arhitektūra un kā tās darbojas ražošanā.
Grigorijs Petrovs: Jā, es to ieteikšu uzreiz gadījumā, ja izvēlējāties Python kā aizmugursistēmas izstrādes valodu un, piemēram, Django kā ietvaru: Django ir dokumentācija Django grāmatā, tas ir ļoti foršs, tajā ir viss, ko Zlata teica, viņa patiešām labs iesācējam.
Aleksejs Štirņajevs: Dažas Django meitenes ir piemērotas arī ātram sākumam, ja jūsu mērķis ir iemācīties Django. Šī ir apmācība, kurā vienas dienas laikā varat izprast visu, izprast pamatus un to, uz ko ietvars ir spējīgs.
Valentīns Dombrovskis: Gatavojoties podkāsta ierakstīšanai, mēs izveidojām sarakstu ar to, kas Python programmētājam ir nepieciešams tīmekļa izstrādei, kurā ir apkopots iepriekš teiktais.
Kas ir iekļauts tīmekļa izstrādes pamatnostādnēs Python
- Tīmekļa ietvari Django, Flask, aiohttp, Tornado uc (un zināt par citu esamību).
- Protokoli un API: galvenokārt http, JSON-RPC, protokolu buferi, gRPC.
- ORM un migrācijas, relāciju datu bāzes, SQLAlchemy, SQL, PostgreSQL, MySQL.
- HTML, CSS, Bootstrap, kā arī JS ietvaru un JQuery pamati.
- Lietojumprogrammu darbības principi ražošanā, testēšana, vienību testi, autotesti, versiju kontroles sistēmas, git.
Vai junioriem ir nepieciešami algoritmi?
Zlata Obukhovskaja: Sākumā jums nav jāzina algoritmi, tie pakāpeniski parādīsies jūsu galvā, ja pietiekami ilgi iesaistīsities attīstībā. Es zinu daudz labu inženieru, kuriem nav bijis labu formālo algoritmu kursu.
Grigorijs Petrovs: Es gribu pieliet eļļu ugunij. No kurienes nāk mūsu tieksme pēc algoritmiem?
Mums šobrīd nav algoritmu fundamentālās izglītības, nemākam apmācīt programmētājus, nav tehniskās bāzes.
Viņi cenšas to darīt, bet šeit mums ir stāsts par Cūkkārpu: mēs nevaram izveidot burvju skolu, kamēr mums nav neviena burvja. Tāpēc, ko universitātei vajadzētu darīt, kad viņi ierodas pie viņiem un jautā: “Sāciet apmācīt programmētājus”, bet viņiem nav programmētāju, jo visi strādā Mail.ru, Rambler un Yandex, vai viņi tur ir apmierināti?
Universitāte paskatās un saka:
- Labi, programmēšana. Atradīsim kādu saistītu zināšanu jomu un pieaicināsim no turienes speciālistus. Aicināsim žurnālistus, kas prot rakstīt kopiju, elektroinženieri, kas var izgatavot elektriskās ķēdes, un matemātiķus, kas prot izmantot algoritmus.
Beigās izrādās, ka tas ir tikpat praktiski kā mācīt būvniekam daļiņu fiziku tikai tāpēc, ka ķieģelis un cements ir izgatavoti no elementārdaļiņām.
Tajā pašā laikā viņi paši nerunā par cementu un ķieģeļiem, jo fiziķis, kurš mēģina apmācīt celtnieku, nezina, kā būvēt mājas. Rezultātā iegūstam celtnieku, kurš spēj lieliski aprakstīt, kā darbojas “cements”, taču to nekad nav redzējis un neprot no tā neko uztaisīt.
Algoritmi un datu struktūras ir ļoti labas, taču šī ir ļoti maza lietojuma joma. Tie ir steidzami nepieciešami, piemēram, ja rakstāt spēļu dzinēju, kompilatoru vai tīkla protokolu.
Lielākā daļa programmētāju risina biznesa problēmas, kur nav nepieciešami algoritmi un datu struktūras.
Sarežģītākā matemātika ir divreiz saskaitīt un pēc tam dalīt. Tas prasa pavisam citas zināšanas. Uzņēmējdarbības problēmu risināšanai nepieciešamas galvenokārt lietišķas, nevis fundamentālas zināšanas.
Iesācējam izstrādātājam labāk ir izpratne par biznesu un to, kā pareizi un ātri salikt nepieciešamās konstrukcijas no gataviem blokiem, kā tās atkļūdot, kā pārliecināties, ka tās nesadalās, zināt, kāpēc tās sadalās, kas notiek, kad mainās prasības un programma sāk "nosēsties uz pamatiem" kā māja pēc lietus.
Tās ir praktiskas lietas un izpratne par to, kā rakstīt programmatūru. Viņam jāzina, ka papildus atkļūdotājam viņam ir rīku komplekts, kas precīzi parādīs, kur programma palēninās.
Valentīns Dombrovskis: Man ienāca prātā šāds salīdzinājums: šis ir tulkojums no biznesa valodas valodā, kurā var sazināties ar datoru. Tas ir, programmētājs ir sava veida specifisks valodnieks.
Grigorijs Petrovs: Biznesam vajadzīgs rakstnieks, nevis valodnieks. Rakstniekam nav jāzina, kāpēc pirms tūkstoš gadiem šis vārds tika pārveidots par šo. Viņam ir jāspēj pielietot šos vārdus.
Kas jums nepieciešams, lai atrastu savu pirmo izstrādātāja darbu
Aleksejs Štirņajevs: Droši vien nav universālas receptes, kā pagatavot junioru.
Ja ieradīsities kādā uzņēmumā, viņi jūs pieņems darbā nevis tāpēc, ka zināt Django, JSON un dažus algoritmus. Visticamāk, jūs tiksiet pieņemts darbā, lai iegūtu prasmes, kas šim uzņēmumam ir vajadzīgas šeit un tagad.
Ir daudz uzņēmumu, un tiem visiem ir atšķirīgas prasības. Nav tāda universāla zināšanu apjoma, kas jāiegūst, lai tālāk sagatavotu CV un dotos meklēt darbu.
Grigorijs Petrovs: Kad mēs VoxImplant meklējām vairākus inženierus, mūsu tehniskais direktors pamatprasību formulēja šādi: cilvēkam ir jāspēj risināt problēmas. Ir skaidrs, ka juniors ne vienmēr to izdarīs efektīvi, ne vislabākajā veidā un ne vienmēr pareizi, bet ideālā gadījumā jūs uzdodat cilvēkam uzdevumu, viņš sasprindzina un atrisina to. Šī ir prasme, ko galvenokārt meklē darba devēji.
Zlata Obukhovskaja: Cilvēkiem, kuri meklē darbu citās jomās, ir zināmas priekšrocības no biznesa viedokļa, jo viņi jau ir nogājuši kādu ceļu un spēj ātri atrisināt problēmas. Tās ir mīkstās prasmes, es to pat sauktu par darba kultūru. Bieži vien augstskolu absolventiem šī darba kultūra vēl nav izveidojusies.
Bet es tomēr gribētu mēģināt iedot kaut kādu recepti iesācējiem.
Pirmie soļi iesācējam izstrādātājam
Zlata Obukhovskaja: Pirmais ir tas, ka tas joprojām ir kaut kāds jūsu pašu projekts, jo jums ir jāieraksta kaut kas savā CV un jāuzrāda minimāls portfolio. Ir foršāk, ja šie projekti tiek veidoti nevis sev, bet gan kā ārštata projekts - kādam.
Pēc pirmajiem projektiem jau var taisīt CV un sūtīt visiem uzņēmumiem, kur ir jūnija vietas. Intervijas sniegs ieskatu par to, kas uzņēmumiem nepieciešams. Agrāk vai vēlāk kāds jūs pieņems darbā, vismaz nelielā uzņēmumā. Pēc tam šī darba pieredze dos iespēju iekļūt lielākā un interesantākā uzņēmumā.
Valentīns Dombrovskis: Starp citu, savos kursos mēs sagatavojam studentus savam projektam 10 nedēļu laikā pēc apmācības. Turklāt mēs apmācām komandas attīstības prasmes. Tieši par tām runāja Zlata.
Aleksejs Štirņajevs: No pieredzes varu teikt, ka pirmā darba meklēšana var aizņemt ļoti ilgu laiku. Kad jūs meklējat mēnesi vai divus, tas ir normāli. Ja iesniegsi savu CV visos uzņēmumos, aizej uz intervijām, trešajā mēnesī noteikti kaut ko atradīsi.
Valentīns Dombrovskis: Jūs varat samazināt savus projektus vai uzņemties vienkāršus ārštata projektus un tajā pašā laikā nosūtīt savu CV.
Kādas ir Python izstrādātāja izredzes?
Zlata Obukhovskaja: Python izstrādātājs var doties jebkur. Jūs varat doties uz testēšanu un turpināt attīstīties līdz vecākajam arhitektam. Vai pat vadībā. Ir dažādi tehnisko vadītāju veidi, un jūs varat izaugt līdz augstākajai vadībai. Varat attīstīties datu zinātnē, DevOps, iesaistīties automatizētā testēšanā vai mašīnmācībā.
Valentīns Dombrovskis: Kopumā ir daudz iespēju un iespēju, arī mūsu kursi. Pie ieejas nav vajadzīgas lielas zināšanas, taču tad vēlams aptvert plašāku diapazonu, jo jo vairāk vari, jo labāk.
***
Šī ir tikai daļa no izlaiduma . Ir pieejama pilna epizodes versija .
Vai pat paskaties:

Paldies, ka lasījāt, klausāties vai skatāties.
Avots: www.habr.com
