Tuliandika nakala fupi na mawazo makuu kutoka kwa Python Junior Podcast: ndani yake tulijadili wapi pa kuanzia na wapi pa kwenda kama msanidi wa Python anayeanza. Hivi majuzi tuna maudhui mengi ya watu wa kati na wazee, lakini kipindi hiki bila shaka ni cha vijana.

Mada kuu:
- Ni maarifa gani ambayo programu ya novice anahitaji kufanya mazoezi
maendeleo ya mtandao? - Waajiri wanatarajia nini kutoka kwa watengenezaji?
- Nini cha kufanya ili kupata kazi bila uzoefu?
- Msanidi programu wa Python anawezaje kukuza?
Python Junior Podcast ni podcast ya programu kwa wale ambao wanataka kuelewa Python vyema. Matangazo yanaendeshwa na wainjilisti wa jumuiya na walimu wa kozi .
Washiriki katika mazungumzo:
- Valentin Dombrovsky,mwanzilishi mwenza wa MoscowPython
- Zlata Obukhovskaya, Kiongozi wa timu ya NVIDIA
- Grigory Petrov, mwinjilisti MoscowPython
- Alexey Shtyrnyaev, msanidi programu katika FinEx, mwalimu wa kozi za Jifunze
Chatu
Kwa nini Python ni nzuri kwa ukuzaji wa wavuti
Valentin Dombrovsky: Kwa nini Python inafaa kwa ukuzaji wa wavuti? Kwa nini sio PHP au JavaScript, kwa mfano?
Grigory Petrov: Kwa hivyo hakuna chaguo nyingi. Licha ya ukweli kwamba katika Wavuti ya kisasa unaweza kuunda programu tumizi ya ukurasa mmoja au programu ya wavuti inayoendelea bila ya nyuma - kwa kutumia teknolojia za mbele, kwa kutumia JavaScript - bado ni ngumu sana, haijaorodheshwa vibaya na inahitaji watengenezaji wa hali ya juu.
Ikiwa tunataka kutengeneza tovuti au huduma, tunatumia mbinu iliyounganishwa: baadhi ya mazingira ya nyuma hutekeleza mantiki na kuunda kurasa za wavuti, na sehemu ya mbele huchora kurasa hizi za wavuti kwenye kivinjari. Na tunapohitaji kuweka yote pamoja kwenye kitu fulani, hatuna chaguo.
Wacha tuangalie chaguzi zinazowezekana.
- VS#. Microsoft ni nzuri sana, walitengeneza .NET Core na wanaitangaza kwa kila njia inayowezekana. Lakini, kwanza, hii ni teknolojia mpya ya jukwaa, na sio kila kitu ni laini huko bado. Pili, ni ghali sana, kuna watengenezaji wachache wa C # - kwa sababu tu haipendezi.
- Java Ni ngumu. Kutengeneza tovuti ya kawaida katika Java haichukui mistari 10 ya msimbo, kama katika Python. Hii ni kanuni nyingi, hizi ni mifumo, na unahitaji kujua maalum ya kuanzisha seva za Java. Kwa ujumla, maumivu na mateso ya kuendelea.
- PHP. Katika matoleo ya hivi karibuni ni ya ajabu. Nitasema hivi: PHP 7.2 sio mbaya zaidi kuliko Python. Lakini huwezi tu kuchukua na kutumia PHP 7.2. Ikiwa msanidi wa kawaida, sio wa juu hufanya tovuti katika PHP, hataandika tu katika 7.2: bado atalazimika kusoma vitabu vya kiada, mafunzo, kuna nambari nyingi za urithi kila mahali, na hii sio nzuri sana.
- JavaScript na Node.js. Ni ya ajabu na ya kisasa sana wakati kuna lugha moja kwenye sehemu ya mbele na ya nyuma. Sio tu thabiti. Node.js ni jambo zuri, lakini ni shida kuipeleka katika uzalishaji ili isije ikaanguka na kufanya kazi kwa utulivu. Pamoja, ikiwa tunataka kuandika msimbo wa JavaScript bora, hatuhitaji JavaScript, lakini TypeScript. Lakini TypeScript ni ngumu bila kutarajia, na akili za wastani za msanidi programu huchemka zinapoiona.
Hebu tuwache Ruby, Haskell, Erlang na mambo mengine ya niche, na tumesalia na ... Python. Lugha yenye sintaksia thabiti, maktaba sanifu ya kawaida, hati bora zaidi, mifumo maarufu ya uzani mwepesi, na mchanganyiko maarufu wa Django.
Inabadilika kuwa, licha ya chaguo pana zaidi, ikiwa tuna watengenezaji wa kawaida, sio wa juu, sisi ni biashara ya kawaida ambayo inataka kufanya tovuti za kawaida, hatuna idara ya maendeleo kwa watu 50, basi tunachukua Python.
Ni ujuzi gani unahitajika kuingia katika taaluma?
Zlata Obukhovskaya: Ninaamini kuwa unahitaji kujua mfumo mmoja vizuri - na kujua ni nini zingine zipo na wakati zinatumiwa. Tornado iko wapi, Django iko wapi, Flask iko wapi, aiohttp iko wapi na kadhalika.
Itakuwa muhimu kujua kwamba kuna kitu kama itifaki. Hasa, ujuzi wa itifaki ya http ni muhimu katika kujenga maombi ya mtandao.
Pia unahitaji angalau kuelewa kwa ufupi jinsi sehemu ya mbele inavyofanya kazi katika miradi ya wavuti: HTML, CSS, JS ni nini.
Alexey Shtyrnyaev: Na ujue hati ziko wapi. Ni muhimu zaidi.
Grigory Petrov: Hapa tunakanyaga ardhi iliyotikisika sana. Ikiwa hatuna bahati na kwa njia fulani tunaanza kusoma kwa umakini sehemu ya mbele ya kisasa, basi itakuwa ngumu mara 10 zaidi kuliko ile ya nyuma huko Python. Msanidi programu anayeanza anahitaji kupunguza umakini wake ili aanze kujifunza HTML, lakini asipotee katika div, vipindi, kuelea, jinsi kila kitu kinavyopangwa na kupangwa.
Alexey Shtyrnyaev: Unahitaji kozi ya msingi ya Bootstrap. Na misingi ya HTML.
Katika mwaka wa kwanza, haupaswi kuzama katika mifumo ya JS (ikiwa unaangazia nyuma). Kozi ya msingi ya Bootstrap tayari ina moduli zilizotengenezwa tayari: ikiwa unataka kitelezi, tengeneza kitelezi; ikiwa unataka menyu inayoelea, tengeneza menyu inayoelea.
Zlata Obukhovskaya: Nadhani wakati wa kusoma sehemu ya mbele, unaweza kuzama, haswa, kwa jinsi statics kwa ujumla hupewa programu za wavuti. Kwa njia hii, msanidi husonga mbele vizuri ili kuanza kujifunza jinsi usanifu wa programu za wavuti hufanya kazi kimsingi na jinsi wanavyoishi katika uzalishaji.
Grigory Petrov: Ndio, nitaipendekeza mara moja ikiwa utachagua Python kama lugha ya maendeleo ya nyuma na, kwa mfano, Django kama mfumo: Django ana nyaraka kwenye Kitabu cha Django, ni nzuri sana, ina kila kitu ambacho Zlata alisema, yeye kweli. nzuri kwa anayeanza.
Alexey Shtyrnyaev: Baadhi ya Wasichana wa Django pia wanafaa kwa kuanza haraka ikiwa lengo lako ni kujifunza Django. Haya ni mafunzo ambapo kwa siku moja unaweza kwenda juu, kuelewa misingi na nini mfumo unaweza kufanya.
Valentin Dombrovsky: Katika maandalizi ya kurekodi podikasti, tulikusanya orodha ya kile ambacho programu ya Python inahitaji kwa ajili ya ukuzaji wa wavuti, ambayo ni muhtasari wa kile tulichosema hapo awali.
Ni nini kilichojumuishwa katika misingi ya ukuzaji wa wavuti huko Python
- Mifumo ya wavuti Django, Flask, aiohttp, Tornado, n.k. (na kujua kuhusu kuwepo kwa wengine).
- Itifaki na API: kimsingi http, JSON-RPC, Protocol Buffers, gRPC.
- ORM na uhamiaji, hifadhidata za uhusiano, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Misingi ya HTML, CSS, Bootstrap, pamoja na mifumo ya JS na JQuery.
- Kanuni za uendeshaji wa maombi katika uzalishaji, majaribio, vipimo vya kitengo, autotests, mifumo ya udhibiti wa toleo, git.
Je! Vijana wanahitaji algorithms?
Zlata Obukhovskaya: Mara ya kwanza, hauitaji kujua algorithms; zitaonekana polepole kichwani mwako ikiwa utashiriki katika maendeleo kwa muda wa kutosha. Ninajua tani ya wahandisi wazuri ambao hawajapata kozi nzuri ya algorithms rasmi.
Grigory Petrov: Ninataka kuongeza mafuta kwenye moto. Tamaa yetu ya algorithms inatoka wapi?
Kwa sasa hatuna elimu ya msingi katika algoriti, hatujui jinsi ya kutoa mafunzo kwa watayarishaji programu, hatuna msingi wa kiufundi.
Wanajaribu kufanya hivi, lakini hapa tuna hadithi ya Hogwarts: hatuwezi kuunda shule ya wachawi wakati hatuna mchawi mmoja. Kwa hiyo, chuo kikuu kinapaswa kufanya nini wanapokuja kwao na kuuliza: "Anzisha waandaaji wa programu," lakini hawana programu, kwa sababu kila mtu anafanya kazi katika Mail.ru, Rambler na Yandex, wanafurahi huko?
Chuo kikuu kinatazama na kusema:
- Sawa, programu. Hebu tutafute eneo fulani la ujuzi na tualike wataalamu kutoka huko. Hebu tuwaalike wanahabari wanaoweza kuandika nakala, wahandisi wa umeme wanaoweza kutengeneza saketi za umeme, na wanahisabati wanaoweza kutumia algoriti.
Mwishowe, zinageuka kuwa hii ni ya vitendo kama kufundisha fizikia ya chembe ya wajenzi kwa sababu tu matofali na saruji hufanywa kwa chembe za msingi.
Wakati huo huo, hawazungumzi juu ya saruji na matofali wenyewe, kwa sababu mwanafizikia ambaye anajaribu kufundisha wajenzi hajui jinsi ya kujenga nyumba. Matokeo yake, tunapata mjenzi ambaye ana uwezo wa kuelezea kikamilifu jinsi "saruji inavyofanya kazi", lakini hajawahi kuiona na hajui jinsi ya kufanya chochote kutoka kwake.
Algorithms na miundo ya data ni nzuri sana, lakini hii ni eneo ndogo sana la maombi. Zinahitajika haraka, kwa mfano, ikiwa unaandika injini ya mchezo, mkusanyaji, au itifaki ya mtandao.
Watengenezaji programu wengi hutatua matatizo ya biashara ambapo algorithms na miundo ya data haihitajiki.
Hisabati ngumu zaidi hapo ni kuongeza mara mbili na kisha kugawanya. Inahitaji maarifa tofauti kabisa. Kutatua matatizo ya biashara kunahitaji hasa kutumika badala ya maarifa ya kimsingi.
Ni bora kwa msanidi programu wa novice kuwa na uelewa wa biashara na jinsi ya kukusanya kwa usahihi na kwa haraka miundo muhimu kutoka kwa vitalu vilivyotengenezwa tayari, jinsi ya kuzitatua, jinsi ya kuhakikisha kuwa hazianguka, kujua kwa nini zinaanguka. nini hufanyika mahitaji yanapobadilika na programu inaanza "kutulia kwenye msingi" kama nyumba baada ya mvua.
Haya ni mambo ya vitendo na ufahamu wa jinsi ya kuandika programu. Anahitaji kujua kwamba pamoja na debugger, ana seti ya zana ambayo itaonyesha hasa ambapo mpango unapungua.
Valentin Dombrovsky: Ulinganisho huu ulikuja akilini mwangu: hii ni tafsiri kutoka kwa lugha ya biashara hadi lugha ambayo unaweza kuwasiliana na kompyuta. Hiyo ni, programu ni aina ya mwanaisimu maalum.
Grigory Petrov: Biashara inahitaji mwandishi, sio mwanaisimu. Mwandishi haitaji kujua kwa nini miaka elfu iliyopita neno hili lilibadilishwa kuwa hili. Anahitaji kuwa na uwezo wa kutumia maneno haya.
Unachohitaji kupata kazi yako ya kwanza kama msanidi programu
Alexey Shtyrnyaev: Pengine hakuna kichocheo cha wote cha jinsi ya kupika junior.
Ukifika kwa kampuni fulani, watakuajiri si kwa sababu unajua Django, JSON na algoriti chache. Kuna uwezekano mkubwa utaajiriwa kwa ujuzi ambao kampuni hii inahitaji hapa na sasa.
Kuna makampuni mengi, na wote wana mahitaji tofauti. Hakuna maarifa kama haya ya ulimwengu wote ambayo yanahitaji kupatikana ili kuandaa zaidi wasifu na kwenda kutafuta kazi.
Grigory Petrov: Tulipokuwa VoxImplant tulipokuwa tukitafuta wahandisi kadhaa, mkurugenzi wetu wa kiufundi alitunga hitaji la msingi kama ifuatavyo: lazima mtu awe na uwezo wa kutatua matatizo. Ni wazi kuwa kijana hatafanya hivi kwa ufanisi kila wakati, sio kwa njia bora na sio kwa usahihi kila wakati, lakini kwa kweli unampa mtu kazi, anaisumbua na kuisuluhisha. Huu ndio ujuzi ambao waajiri wanatafuta kimsingi.
Zlata Obukhovskaya: Watu ambao wanatafuta kazi kutoka nyanja zingine wana faida fulani kutoka kwa mtazamo wa biashara kwa sababu tayari wamekwenda njia fulani na wanaweza kutatua shida haraka. Hizi ni ujuzi laini, naweza hata kuuita utamaduni wa kazi. Mara nyingi, wahitimu wa chuo kikuu bado hawajaendeleza utamaduni huu wa kazi.
Lakini bado ningependa kujaribu kutoa aina fulani ya mapishi kwa Kompyuta.
Hatua za kwanza kwa msanidi wa novice
Zlata Obukhovskaya: Ya kwanza ni kwamba hii bado ni aina fulani ya mradi wako mwenyewe, kwa sababu unahitaji kuandika kitu katika resume yako na kuonyesha kwingineko ndogo. Ni vizuri zaidi wakati miradi hii haijaundwa kwa ajili yako mwenyewe, lakini kama mradi wa kujitegemea - kwa mtu.
Baada ya miradi ya kwanza, unaweza tayari kufanya resume na kutuma kwa makampuni yote ambapo kuna nafasi za Juni. Mahojiano yatatoa ufahamu juu ya kile ambacho makampuni yanahitaji. Hivi karibuni au baadaye mtu atakuajiri, angalau katika kampuni ndogo. Baadaye, uzoefu huu wa kazi utakupa fursa ya kuingia katika kampuni kubwa na ya kuvutia zaidi.
Valentin Dombrovsky: Kwa njia, katika kozi zetu tunatayarisha wanafunzi kuwa na mradi wao wenyewe ndani ya wiki 10 za mafunzo. Zaidi ya hayo tunafundisha ujuzi wa ukuzaji wa timu. Hizi ndizo stadi laini ambazo Zlata alizungumza.
Alexey Shtyrnyaev: Ninaweza kukuambia kutokana na uzoefu kwamba inaweza kuchukua muda mrefu sana kutafuta kazi yako ya kwanza. Unapotafuta mwezi mmoja au miwili, hiyo ni kawaida. Ikiwa unawasilisha resume yako kwa makampuni yote, nenda kwa mahojiano, katika mwezi wa tatu hakika utapata kitu.
Valentin Dombrovsky: Unaweza kukata miradi yako mwenyewe au kuchukua miradi rahisi ya kujitegemea na wakati huo huo kutuma wasifu wako.
Je, msanidi programu wa Python ana matarajio gani?
Zlata Obukhovskaya: Msanidi programu wa Python anaweza kwenda popote. Unaweza kwenda kwenye majaribio na kuendelea kukuza kuwa mbunifu mkuu. Au hata kwenye usimamizi. Kuna aina tofauti za wasimamizi wa kiufundi, na unaweza kukua hadi usimamizi wa juu. Unaweza kuendeleza katika sayansi ya data, DevOps, kwenda katika majaribio ya kiotomatiki au kujifunza kwa mashine.
Valentin Dombrovsky: Kwa ujumla, kuna chaguzi nyingi na fursa, ikiwa ni pamoja na kozi zetu. Huna haja ya ujuzi mwingi kwenye mlango, lakini inashauriwa kisha kufunika aina pana, kwa sababu zaidi unaweza, ni bora kwako.
***
Hii ni sehemu tu ya toleo . Toleo kamili la kipindi linapatikana .
Au hata angalia:

Asante kwa kusoma, kusikiliza au kutazama.
Chanzo: mapenzi.com
