Nag-ipon kami ng maikling transcript kasama ang mga pangunahing takeaway mula sa Python Junior Podcast: tinalakay namin kung saan magsisimula at kung saan pupunta para sa mga nagnanais na mga developer ng Python. Nag-publish kami ng maraming nilalaman para sa mga middle at senior na developer kamakailan, ngunit ang episode na ito ay talagang para sa mga junior.

Pangunahing paksa:
- Anong kaalaman ang kailangan ng isang baguhan na programmer upang makapagsimula?
pagbuo ng web? - Ano ang inaasahan ng mga employer mula sa mga developer?
- Ano ang dapat gawin upang makahanap ng trabaho na walang karanasan?
- Paano mabubuo ang isang developer ng Python?
Ang Python Junior Podcast ay isang programming podcast para sa mga gustong makakuha ng mas mahusay na pag-unawa sa Python. Ang mga broadcast ay hino-host ng mga ebanghelista ng komunidad. at mga guro ng kurso .
Ang mga sumusunod na tao ay nakibahagi sa pag-uusap:
- Valentin Dombrovsky,co-founder ng MoscowPython
- Zlata Obukhovskaya, Nangunguna sa pangkat ng NVIDIA
- Grigory Petrov, Ebanghelista ng MoscowPython
- Alexey Shtyrnyaev, Developer sa FinEx, Learn course instructor
Sawa
Bakit Maganda ang Python para sa Web Development
Valentin Dombrovsky: Bakit angkop ang Python para sa pagbuo ng web? Bakit hindi PHP o JavaScript, halimbawa?
Grigory Petrov: Wala talagang choice. Kahit na sa modernong web, maaari kang bumuo ng isang solong-pahinang application o progresibong web application na halos walang backend—gamit ang mga teknolohiya sa frontend at JavaScript—napakakomplikado pa rin nito, hindi maganda ang pagkaka-index, at nangangailangan ng mga bihasang developer.
Kapag gusto naming bumuo ng isang website o serbisyo, gumagamit kami ng pinagsamang diskarte: mayroon kaming backend na nagpapatupad ng logic at gumagawa ng mga web page, at isang frontend na nag-render ng mga web page na ito sa browser. At kapag kailangan nating mabilis na pagsamahin ang lahat, kakaunti ang pagpipilian.
Tingnan natin ang mga posibleng opsyon.
- C#. Ang Microsoft ay tunay na napakatalino; lumikha sila ng .NET Core at isinusulong ito sa lahat ng posibleng paraan. Ngunit, una, ito ay isang bagong cross-platform na teknolohiya, at hindi pa perpekto ang lahat. Pangalawa, talagang mahal ito, at kakaunti ang mga developer ng C#—dahil hindi ito sikat.
- Java. Ito ay kumplikado. Ang pagbuo ng isang disenteng website sa Java ay hindi lamang 10 linya ng code, tulad ng sa Python. Ito ay maraming code, frameworks, at kailangan mong malaman ang mga intricacies ng pag-set up ng mga Java server. Talaga, ito ay purong sakit at pagdurusa.
- PHP. Ang pinakabagong mga bersyon ay hindi kapani-paniwala. Gusto ko pa ngang sabihin na ang PHP 7.2 ay hindi mas masama kaysa sa Python. Ngunit hindi ka maaaring tumalon lamang at gumamit ng PHP 7.2. Kung ang isang regular at hindi nangungunang developer ay bubuo ng isang website sa PHP, hindi sila gagamit ng 7.2 eksklusibo: kakailanganin pa rin nilang magbasa ng mga textbook at tutorial, at mayroong isang toneladang legacy code sa lahat ng dako, at hindi iyon magandang bagay.
- JavaScript at Node.js. Napakaganda at napakamoderno na magkaroon ng isang wika para sa frontend at backend. Hindi lang masyadong stable. Ang Node.js ay isang magandang bagay, ngunit ang pagde-deploy nito sa produksyon nang walang pag-crash at paggana nang mapagkakatiwalaan ay may problema. Dagdag pa, kung gusto naming magsulat ng mataas na kalidad na JavaScript code, kailangan namin ng TypeScript, hindi JavaScript. Ngunit ang TypeScript ay hindi inaasahang kumplikado, at ang pagkakita nito ay nagpapakulo sa utak ng karaniwang developer.
Iwanan natin sina Ruby, Haskell, Erlang, at iba pang mga angkop na bagay, at naiwan sa atin ang... Python. Isang wika na may pare-parehong syntax, isang pinag-isang karaniwang library, ang pinakamahusay na dokumentasyon, sikat na magaan na frameworks, at ang mega-popular na Django harvester.
Lumalabas na, sa kabila ng pinakamalawak na pagpipilian, kung mayroon kaming ordinaryong, hindi nangungunang mga developer, kami ay isang ordinaryong negosyo na gustong gumawa ng mga ordinaryong website, wala kaming departamento ng pag-unlad na 50 tao, pagkatapos ay kumukuha kami ng Python.
Anong kaalaman ang kailangan para makapasok sa propesyon?
Zlata Obukhovskaya: Naniniwala ako na mahalagang malaman ang isang balangkas nang mabuti—at pagkatapos ay malaman kung ano ang iba pang mga balangkas sa labas at kung kailan ginagamit ang mga ito. Nasaan ang Tornado, nasaan si Django, nasaan ang Flask, nasaan ang aiohttp, at iba pa.
Kapaki-pakinabang na malaman na mayroong isang bagay tulad ng mga protocol. Sa partikular, ang kaalaman sa HTTP protocol ay sentro sa pagbuo ng mga web application.
Kailangan mo ring magkaroon ng hindi bababa sa isang magaspang na ideya kung paano nakaayos ang front end sa mga proyekto sa web: kung ano ang HTML, CSS, at JS.
Alexey Shtyrnyaev: At alam kung nasaan ang dokumentasyon. Iyon ang pinakamahalagang bagay.
Grigory Petrov: Dito kami tumatapak sa napakaalog na lupa. Kung hindi tayo pinalad na seryosong pag-aralan ang modernong frontend, magiging 10 beses na mas mahirap kaysa sa Python backend. Kailangang paliitin ng isang baguhang developer ang kanilang pagtuon para makapagsimula silang mag-aral ng HTML nang hindi nababagabag sa lahat ng mga div, span, float, at kung paano inihanay at inilalatag ang lahat.
Alexey Shtyrnyaev: Kailangan ko ng pangunahing kurso sa Bootstrap at ang mga pangunahing kaalaman sa HTML.
Sa unang taon, hindi na kailangang mag-deve sa JS frameworks (kung nakatutok ka sa backend). Kasama na sa pangunahing kurso ng Bootstrap ang mga nakahanda nang module: kung gusto mo ng slider, gumawa ng slider; kung gusto mo ng floating menu, gumawa ka ng floating menu.
Zlata Obukhovskaya: Sa tingin ko, habang pinag-aaralan ang frontend, malalaman ng isa, sa partikular, kung paano karaniwang inihahatid ang static na data sa mga web application. Sa ganitong paraan, maayos na masisimulan ng developer na matutunan kung paano gumagana ang arkitektura ng web application at kung paano gumagana ang mga ito sa produksyon.
Grigory Petrov: Oo, irerekomenda ko ito kaagad kung sakaling pinili mo ang Python bilang iyong backend development language at, halimbawa, ang Django bilang iyong balangkas: Ang Django ay may dokumentasyon sa Django Book, ito ay talagang cool, mayroon itong lahat ng binanggit ni Zlata, ito ay talagang mahusay para sa isang baguhan.
Alexey Shtyrnyaev: Ang isa pang magandang lugar para mabilis na magsimula ay ang Django Girls, kung ang layunin mo ay partikular na matutunan ang Django. Isa itong tutorial na sumasaklaw sa mga pangunahing kaalaman at nagbibigay sa iyo ng mahusay na pag-unawa sa mga kakayahan ng framework sa isang araw.
Valentin Dombrovsky: Bilang paghahanda para sa podcast, nag-compile kami ng isang listahan ng kung ano ang kailangan ng isang Python programmer para sa web development, na nagbubuod sa kung ano ang nasabi namin sa ngayon.
Ano ang kasama sa Python web development framework?
- Web frameworks Django, Flask, aiohttp, Tornado, atbp. (at alam ang tungkol sa pagkakaroon ng iba).
- Mga Protocol at API: pangunahin ang http, JSON-RPC, Protocol Buffers, gRPC.
- ORM at migrasyon, relational database, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Mga pangunahing kaalaman ng HTML, CSS, Bootstrap, pati na rin ang mga JS framework at JQuery.
- Mga prinsipyo ng pagpapatakbo ng aplikasyon sa produksyon, pagsubok, mga pagsubok sa yunit, mga awtomatikong pagsubok, mga sistema ng kontrol sa bersyon, git.
Kailangan ba ng isang junior developer ng mga algorithm?
Zlata Obukhovskaya: Hindi mo kailangang malaman ang mga algorithm sa simula; unti-unting lilitaw ang mga ito sa iyong ulo kung matagal ka nang umuunlad. Marami akong kilala na mahuhusay na inhinyero na walang magandang pormal na kurso sa algorithm.
Grigory Petrov: Gusto kong magdagdag ng gasolina sa apoy. Saan nanggagaling ang ating pagkahumaling sa mga algorithm?
Kasalukuyan kaming kulang sa pangunahing edukasyon sa mga algorithm, hindi namin alam kung paano sanayin ang mga programmer, at wala kaming teknikal na base.
Sinusubukan nilang gawin iyon, ngunit ito ay tulad ng Hogwarts: hindi kami makakagawa ng isang wizarding school hangga't wala kaming isang wizard. Kaya ano ang dapat gawin ng isang unibersidad kapag ang mga tao ay pumunta dito at nagtanong, "Simulan ang pagsasanay sa mga programmer," ngunit wala silang anumang mga programmer dahil lahat ay nagtatrabaho sa Mail.ru, Rambler, at Yandex, at masaya sila doon?
Sa unibersidad ay tumingin sila at nagsabi:
"Okay, programming. Maghanap tayo ng kaugnay na larangan ng kaalaman at mag-imbita ng mga espesyalista mula doon. Mag-imbita tayo ng mga mamamahayag na marunong magsulat ng text, mga electrical engineer na marunong gumuhit ng mga circuit diagram, at mga mathematician na marunong gumamit ng mga algorithm."
Sa huli, lumalabas na ito ay halos kasing-kapaki-pakinabang ng pagtuturo sa isang builder particle physics dahil lang sa brick at semento ay gawa sa elementarya na mga particle.
Kasabay nito, hindi nila pinag-uusapan ang tungkol sa semento at ladrilyo mismo, dahil ang pisisista na sinusubukang sanayin ang tagabuo ay hindi alam kung paano magtayo ng bahay. Ang resulta ay isang tagabuo na perpektong naglalarawan kung paano "gumagana ang semento," ngunit hindi pa ito nakita at hindi alam kung paano gumawa ng anuman gamit ito.
Ang mga algorithm at istruktura ng data ay mahusay, ngunit ang mga ito ay isang limitadong lugar ng aplikasyon. Mahalaga ang mga ito, halimbawa, kung nagsusulat ka ng game engine, compiler, o network protocol.
Karamihan sa mga programmer ay nilulutas ang mga problema sa negosyo na hindi nangangailangan ng mga algorithm at istruktura ng data.
Ang pinakamahirap na matematika doon ay ang pagdaragdag ng dalawang beses at pagkatapos ay paghahati. Nangangailangan ito ng ganap na magkakaibang hanay ng mga kasanayan. Ang paglutas ng mga problema sa negosyo ay nangangailangan ng pangunahing inilapat, sa halip na pangunahing, kaalaman.
Ang isang baguhang developer ay makabubuting magkaroon ng pag-unawa sa negosyo at kung paano tama at mabilis na tipunin ang mga kinakailangang istruktura mula sa mga handa na mga bloke, kung paano i-debug ang mga ito, kung paano maiiwasan ang mga ito mula sa pagkawatak-watak, at malaman kung bakit sila nagkakawatak-watak, kung ano ang mangyayari kapag ang mga kinakailangan ay nagbago at ang programa ay nagsimulang "tumira sa pundasyon nito," tulad ng isang bahay pagkatapos ng ulan.
Ito ay mga praktikal na bagay at pag-unawa sa kung paano magsulat ng software. Kailangan niyang malaman na, bilang karagdagan sa debugger, mayroon siyang isang hanay ng mga tool na eksaktong magpapakita kung saan ang programa ay nahuhuli.
Valentin Dombrovsky: Isang paghahambing ang naisip: isa itong pagsasalin mula sa wika ng negosyo patungo sa wikang ginagamit ng isa sa pakikipag-usap sa isang computer. Sa madaling salita, ang programmer ay isang uri ng dalubhasang linguist.
Grigory Petrov: Ang negosyo ay nangangailangan ng isang manunulat, hindi isang linguist. Ang isang manunulat ay hindi kailangang malaman kung bakit ang salitang ito ay nagbago sa isang libong taon na ang nakalilipas. Kailangan lang nilang magamit ang mga salitang iyon.
Ano ang kinakailangan upang mahanap ang iyong unang trabaho bilang isang developer
Alexey Shtyrnyaev: Marahil ay walang unibersal na recipe para sa paghahanda ng isang junior.
Kung sasali ka sa isang kumpanya, hindi ka nila kukunin dahil alam mo ang Django, JSON, at ilang algorithm. Malamang na kukunin ka nila para sa mga kasanayang kailangan ng kumpanya ngayon.
Mayroong maraming mga kumpanya, at bawat isa ay may iba't ibang mga kinakailangan. Walang unibersal na dami ng kaalaman na kailangan upang maghanda ng resume at mag-aplay para sa isang trabaho.
Grigory Petrov: Noong naghahanap kami ng ilang junior engineer sa VoxImplant, binuo ng aming CTO ang pangunahing pangangailangan tulad ng sumusunod: mga kasanayan sa paglutas ng problema. Siyempre, hindi ito palaging gagawin ng isang junior engineer nang epektibo, sa pinakamahusay na posibleng paraan, o palaging tama, ngunit sa isip, binibigyan mo sila ng isang gawain, nagsusumikap sila, at lutasin ito. Ito ang kasanayang hinahanap ng mga employer una sa lahat.
Zlata Obukhovskaya: Ang mga taong naghahanap ng trabaho mula sa ibang mga larangan ay may isang tiyak na kalamangan mula sa isang pananaw sa negosyo dahil sila ay dumaan na sa ilang trabaho at mabilis na nalutas ang mga problema. Ito ay mga malambot na kasanayan, tatawagin ko pa silang kultura ng trabaho. Kadalasan, hindi pa nabubuo ng mga nagtapos sa unibersidad ang kulturang ito sa trabaho.
Ngunit gusto ko pa ring subukan na magbigay ng ilang recipe sa mga nagsisimula.
Mga unang hakbang para sa isang baguhan na developer
Zlata Obukhovskaya: Una, ito ay isang personal na proyekto pa rin, dahil kailangan mong isama ang isang bagay sa iyong resume at magpakita ng isang minimal na portfolio. Mas mabuti kapag ang mga proyektong ito ay hindi ginawa para sa iyong sarili, ngunit bilang isang freelancer—para sa ibang tao.
Pagkatapos ng iyong unang ilang mga proyekto, maaari kang magsimulang lumikha ng isang resume at ipadala ito sa lahat ng mga kumpanya na may mga junior na posisyon. Ang mga panayam ay magbibigay sa iyo ng pag-unawa sa kung ano ang hinahanap ng mga kumpanya. Maya-maya, may kukuha sa iyo, kahit maliit lang. Ang karanasang ito sa trabaho ay magbibigay sa iyo ng pagkakataon na sumali sa isang mas malaki, mas kawili-wiling kumpanya.
Valentin Dombrovsky: Sa pamamagitan ng paraan, ang aming mga kurso ay naghahanda sa mga mag-aaral na magkaroon ng kanilang sariling proyekto sa loob ng 10 linggo ng pagsasanay. Nagsasanay din kami ng mga kasanayan sa pagbuo ng pangkat. Ito talaga ang mga soft skills na binanggit ni Zlata.
Alexey Shtyrnyaev: Mula sa karanasan, masasabi kong ang paghahanap ng iyong unang trabaho ay maaaring tumagal ng napakatagal. Normal na gumugol ng isa o dalawang buwan sa pagtingin. Kung mag-aplay ka sa bawat kumpanya at pumunta sa mga panayam, tiyak na may makikita ka sa ikatlong buwan.
Valentin Dombrovsky: Maaari kang bumuo ng iyong sariling mga proyekto o kumuha ng mga simpleng freelance na proyekto habang sabay na nagpapadala ng mga resume.
Ano ang mga prospect para sa isang developer ng Python?
Zlata Obukhovskaya: Ang isang developer ng Python ay maaaring pumunta kahit saan. Maaari silang pumunta sa pagsubok, magpatuloy sa pag-unlad upang maging isang senior architect, o maging sa pamamahala. Ang mga teknikal na tagapamahala ay dumating sa lahat ng mga hugis at sukat, at posibleng tumaas sa senior management. Maaari silang maging data science, DevOps, automated na pagsubok, o machine learning.
Valentin Dombrovsky: Sa pangkalahatan, maraming mga opsyon at pagkakataon, kabilang ang aming mga kurso. Hindi mo kailangan ng maraming kaalaman upang makapagsimula, ngunit ipinapayong palawakin ang iyong kaalaman sa ibang pagkakataon, dahil kung mas marami kang magagawa, mas magiging mas mahusay ka.
***
Ito ay bahagi lamang ng pagpapalabas Ang buong bersyon ng episode ay matatagpuan .
O kahit na tingnan:

Salamat sa pagbabasa, pakikinig o panonood.
Pinagmulan: www.habr.com
