Python для Вэба: што трэба ведаць джуніёру, каб працаваць і развівацца

Мы зрабілі скарочаную расшыфроўку з галоўнымі думкамі з Python Junior Podcast: у ім мы абмеркавалі, з чаго пачынаць і куды падацца пачаткоўцу распрацоўніку на Python. У апошні час у нас шмат кантэнту для мідлаў і сеньёраў, але гэты выпуск - сапраўды для джуноў.

Python для Вэба: што трэба ведаць джуніёру, каб працаваць і развівацца

Галоўныя тэмы:

  • Якія веды патрэбны пачаткоўцу праграмісту, каб займацца
    вэб-распрацоўкай?
  • Чаго чакаюць працадаўцы ад распрацоўшчыкаў?
  • Што рабіць, каб знайсці працу без досведу?
  • Як можа развівацца Python-распрацоўшчык?

Python Junior Podcast – падкаст аб праграмаванні для тых, хто хоча лепш разбірацца ў Python. Эфіры вядуць евангелісты супольнасці MoscowPython і выкладчыкі курсаў Вывучайце Python.

У размове ўдзельнічалі:

  • Валянцін Дамброўскі,сузаснавальнік MoscowPython
  • Злата Абухоўская, тымлід NVIDIA
  • Рыгор Пятроў, евангеліст MoscowPython
  • Аляксей Штырняеў, распрацоўшчык у FinEx, выкладчык курсаў Learn
    Пітон

Чаму Python добры для вэб-распрацоўкі

Валянцін Дамброўскі: Чаму менавіта Python падыходзіць для вэб-распрацоўкі? Чаму не PHP ці JavaScript, напрыклад?

Рыгор Пятроў: Дык жа выбару асабліва няма. Нягледзячы на ​​тое што ў сучасным Інтэрнэце можна практычна без бэкенда – чыста на фронтенд-тэхналогіях, на JavaScript – сабраць сабе single page application або progressive web application, усё роўна гэта занадта складана, дрэнна індэксуецца і патрабуе стромкіх распрацоўнікаў.

Калі мы хочам зрабіць сайт ці сэрвіс, мы выкарыстоўваем камбінаваны падыход: у нас нейкі бэкэнд ажыцьцяўляе лёгіку і стварае вэб-старонкі і нейкі фронтэнд малюе гэтыя вэб-старонкі ў браўзэры. І калі нам трэба хутка гэта ўсё на нечым сабраць, то выбару асабліва няма.

Давайце разгледзім магчымыя варыянты.

  • C#. Microsoft сапраўды малайцы, яны зрабілі .NET Core і ўсяляк яе прасоўваюць. Але, па-першае, гэта новая кросплатформавая тэхналогія, і там яшчэ не ўсё гладка. Па-другое, гэта сапраўды дорага, распрацоўшчыкаў C # мала - проста таму, што яна непапулярная.
  • Java. Гэта складана. Зрабіць нармальны сайт на Java - гэта не 10 радкоў кода, як на Python. Гэта шмат кода, гэта фрэймворкі, і трэба ведаць спецыфіку налады Java-сервераў. Увогуле, суцэльныя боль і пакуты.
  • PHP. У апошніх версіях ён цудоўны. Я нават так скажу: PHP 7.2 не горш за Python. Але нельга проста так узяць і выкарыстоўваць PHP 7.2. Калі звычайны, не топавы распрацоўшчык робіць сайт на PHP, ён не будзе пісаць толькі на 7.2: усё роўна давядзецца чытаць нейкія падручнікі, тутарыялы, усюды куча legacy-кода, і гэта не вельмі добра.
  • JavaScript і Node.js. Гэта выдатна і вельмі сучасна, калі адна мова і на франтэндзе, і на бэкендзе. Толькі ня вельмі стабільна. Node.js - добрая штука, але праблематычна разгарнуць яе ў прадакшэне так, каб яна не падала і працавала ўстойліва. Плюс, калі мы жадаем пісаць якасны код на JavaScript, нам патрэбен не JavaScript, а TypeScript. А вось TypeScript нечакана складаны, пры выглядзе яго ў радавога распрацоўніка закіпаюць мазгі.

Давайце апусцім Ruby, Haskell, Erlang ды іншыя нішавыя штукі, і ў нас застаецца… Python. Мова з кансістэнтным сінтаксісам, аднастайнай стандартнай бібліятэкай, лепшай дакументацыяй, папулярнымі лёгкімі фрэймворкамі, мегапапулярным камбайнам Django.

Атрымліваецца, што, нягледзячы на ​​найшырэйшы выбар, калі ў нас звычайныя, не топавыя распрацоўшчыкі, мы звычайны бізнэс, які хоча рабіць звычайныя сайты, у нас няма аддзела распрацоўкі на 50 чалавек, то мы бярэм Python.

Якія веды патрэбны для ўваходу ў прафесію

Злата Абухоўская: Я лічу, што адзін фрэймворк трэба ведаць добра - і ведаць, якія яшчэ бываюць і калі яны выкарыстоўваюцца. Дзе Tornado, дзе Django, дзе Flask, дзе aiohttp і гэтак далей.
Спатрэбіцца ведаць, што ёсць такая штука, як пратаколы. У прыватнасці, веданне пратакола http - цэнтральнае для пабудовы вэб-прыкладанняў.

Яшчэ трэба хоць бы прыблізна ўяўляць сабе, як у вэб-праектах уладкованы фронтэнд: што ёсць HTML, CSS, JS.

Аляксей Штырняеў: І шляхта, дзе ляжыць дакументацыя. Гэта самае галоўнае.

Рыгор Пятроў: Тут мы ступаем на вельмі зыбкую глебу. Калі нам не павезла і мы пачалі неяк сур'ёзна вывучаць сучасны фронтэнд, то ён будзе прыкладна разоў у 10 складаней, чым бэкенд на Python. Пачынальнаму распрацоўніку трэба абмежаваць свой фокус так, каб пачаць вывучаць HTML, але каб не праваліцца ва ўсе гэтыя div, span, float, як тамака ўсё выраўноўваецца і выбудоўваецца.

Аляксей Штырняеў: Патрэбны базавы курс па Bootstrap. І асновы HTML.

У першы год не варта паглыбляцца ў JS-фрэймворкі (калі вы факусуецеся на бэкендзе). У базавым курсе па Bootstrap ужо ёсць гатовыя модулі: хочаш слайдэр - рабі слайдэр, хочаш плаваючае меню - зрабі плаваючае меню.

Злата Абухоўская: Думаю, што за вывучэннем фронтэнда можна пагрузіцца, у прыватнасці, у тое, як наогул статыка аддаецца вэб-прыкладанням. Так распрацоўшчык плаўна пераходзіць да таго, каб пачаць даведвацца, як у прынцыпе ўладкованая архітэктура вэб-прыкладанняў і як яны жывуць на прадакшэне.

Рыгор Пятроў: Так, парэкамендую адразу на той выпадак, калі вы абралі Python у якасці мовы бэкэнд распрацоўкі і, напрыклад, Django у якасці фрэймворка: у Django ёсць дакументацыя ў Django Book, яна рэальна клёвая, у ёй усё тое, пра што сказала Злата, яна і праўда добрая для пачаткоўца.

Аляксей Штырняеў: Яшчэ для хуткага старту падыдзе які-небудзь Django Girls, калі мэта вывучыць менавіта Django. Гэта такі тутарыял, дзе за адзін дзень можна прайсці па вярхах, зразумець асновы і тое, на што здольны фрэймворк.

Валянцін Дамброўскі: Рыхтуючыся да запісу падкасьця, мы склалі спіс таго, што трэба праграмісту на Python для вэба-распрацоўкі, чым і які рэзюмуецца раней сказанае.

Што ўваходзіць у базіс для вэб-распрацоўкі на Python

  • Вэб-фрэймворкі Django, Flask, aiohttp, Tornado і т. д. (і ведаць аб існаванні астатніх).
  • Пратаколы і API: у першую чаргу http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM і міграцыі, рэляцыйныя базы дадзеных, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Асновы HTML, CSS, Bootstrap, а таксама JS-фрэймворкі і JQuery.
  • Прынцыпы працы прыкладанняў на прадакшэне, тэсціраванне, юніт-тэсты, аўтатэсты, сістэмы кантролю версій, git.

Ці патрэбныя джуніёру алгарытмы

Злата Абухоўская: Спачатку не трэба ведаць алгарытмы, яны самі паступова з'явяцца ў галаве, калі займацца распрацоўкай дастаткова доўга. Я ведаю кучу добрых інжынераў, у якіх не было добрага фармальнага курса алгарытмаў.

Рыгор Пятроў: Я хачу падліць масла ў агонь. Вось адкуль увогуле бярэцца наша цяга да алгарытмаў?

У нас зараз няма фундаментальнай адукацыі па алгарытмах, у нас не ўмеюць навучаць праграмістаў, няма тэхнічнай базы.

Гэта спрабуюць рабіць, але тут у нас гісторыя Хогвартса: мы не можам зрабіць школу чараўнікоў, пакуль у нас няма ніводнага чараўніка. Таму што рабіць універсітэту, у які прыходзяць і просяць: "Пачніце навучаць праграмістаў", а праграмістаў у іх няма, таму што ўсе працуюць у Mail.ru, Rambler і "Яндэксе", ім там добра?

Ва ўніверсітэце глядзяць і кажуць:
- О'кей, праграмаванне. Давайце знойдзем нейкую сумежную вобласць ведаў і запросім спецыялістаў адтуль. Давайце запросім журналістаў, якія ўмеюць пісаць тэкст, інжынераў-электрыкаў, якія ўмеюць рабіць электрычныя схемы, і матэматыкаў, якія ўмеюць у алгарытмы.

У выніку атрымліваецца, што гэта настолькі ж мэтазгодна, як навучаць будаўніка фізіцы элементарных часціц толькі таму, што цэгла і цэмент складаюцца з элементарных часціц.

Пры гэтым пра сам цэмент і цэглу не расказваюць, таму што фізік, які спрабуе навучыць будаўніка, дома будаваць не ўмее. У выніку атрымліваем будаўніка, які ў стане выдатна распісаць, як "працуе цэмент", але ні разу яго не бачыў і рабіць з яго нічога не ўмее.

Алгарытмы і структуры дадзеных - гэта вельмі добра, але гэта вельмі маленькая прыкладная вобласць. Яны востра патрэбныя, напрыклад, калі ты пішаш гульнявы ​​рухавічок, кампілятар, сеткавы пратакол.

Большасць праграмістаў вырашаюць бізнес-задачы, дзе не патрэбны алгарытмы і структуры дадзеных.

Там самая складаная матэматыка - гэта два разы скласці, а потым падзяліць. Там патрэбны зусім іншыя веды. Для вырашэння бізнес-задач патрабуюцца ў асноўным прыкладныя, а не фундаментальныя веды.

Распрацоўніку-пачаткоўцу лепш мець уяўленне пра бізнэс і пра тое, як правільна і хутка збіраць з гатовых блокаў патрэбныя канструкцыі, як іх адладжваць, як рабіць так, каб яны не развальваліся, ведаць, чаму яны развальваюцца, што адбываецца, калі змяняюцца патрабаванні і праграма пачынае. "асядаць на падмурку", як дом пасля дажджу.
Вось гэтыя прыкладныя штукі і разуменне таго, як пісаць софт. Яму трэба ведаць, што акрамя адладчыка ў яго ёсць набор прылад, які пакажа, дзе менавіта праграма тармозіць.

Валянцін Дамброўскі: Мне такое параўнанне прыйшло на розум: гэта пераклад з мовы бізнэсу на мову, на якой можна мець зносіны з кампутарам. Гэта значыць праграміст - гэтакі спецыфічны лінгвіст.

Рыгор Пятроў: Бізнэсу патрэбен пісьменнік, а не лінгвіст. Пісьменніку не трэба ведаць, чаму тысячу гадоў таму гэтае слова трансфармавалася вось у тое. Яму трэба ўмець ужываць гэтыя словы.

Што трэба, каб знайсці першую працу распрацоўшчыкам

Аляксей Штырняеў: Мусіць, няма ўніверсальнага рэцэпту, па якім трэба рыхтаваць джуніёра.

Калі вы прыходзіце ў нейкую кампанію, вас возьмуць не за тое, што вы ведаеце Django, JSON і крыху алгарытмаў. Вас, хутчэй за ўсё, возьмуць за тыя скілы, якія тут і зараз патрэбны гэтай кампаніі.

Кампаній шмат, і ва ўсіх розныя патрабаванні. Няма такога ўніверсальнага аб'ёму ведаў, якія трэба атрымаць, каб далей падрыхтаваць рэзюмэ і ісці працаўладкоўвацца.

Рыгор Пятроў: Калі мы ў VoxImplant шукалі некалькіх джунаў, наш тэхнічны дырэктар сфармуляваў базавую патрабаванне так: чалавек павінен умець вырашаць задачы. Зразумела, што джун гэта будзе рабіць не заўсёды эфектыўна, не найлепшым спосабам і не заўсёды правільна, але ў ідэале ты ставіш чалавеку задачу, ён напружваецца і вырашае яе. Гэта той скіл, які найперш шукаюць працадаўцы.

Злата Абухоўская: Людзі, якія шукаюць працу, пераходзячы з іншых абласцей, маюць з пункту гледжання бізнесу некаторую перавагу, таму што ўжо прайшлі нейкі шлях і ўмеюць вырашаць задачы хутка. Гэта soft skills, я б гэта назвала нават працоўнай культурай. Часта ў выпускнікоў ВНУ гэта працоўная культура яшчэ не напрацавана.

Але мне б хацелася ўсё ж паспрабаваць даць нейкі рэцэпт пачаткоўцам.

Першыя крокі для распачыналага распрацоўніка

Злата Абухоўская: Першае - гэта ўсё ж такі нейкі свой праект, таму што ў рэзюмэ трэба нешта напісаць, паказаць мінімальнае партфоліё. Страмчэй, калі гэтыя праекты зроблены не для сябе, а на фрылансе — для кагосьці.

Пасля першых праектаў ужо можна рабіць рэзюмэ і рассылаць яго ва ўсе кампаніі, дзе ёсць джунаўскія пазіцыі. Гутаркі дадуць разуменне таго, што трэба кампаніям. Рана ці позна вас хто-небудзь возьме, хаця б у маленькую кампанію. Пасля гэты досвед працы дасць вам магчымасць патрапіць у кампанію пабольш і цікавей.

Валянцін Дамброўскі: Дарэчы, мы на курсах рыхтуем вучняў да таго, каб у іх з'явіўся свой праект за 10 тыдняў навучання. Плюс трэніруем навык каманднай распрацоўкі. Гэта якраз тыя soft skills, пра якія казала Злата.

Аляксей Штырняеў: Па досведзе скажу, што першую працу можна шукаць вельмі доўга. Калі вы шукаеце месяц-два - гэта нармальна. Калі вы падаеце рэзюмэ ва ўсе кампаніі, хадзіце на сумоўі, на трэці месяц вы абавязкова нешта знойдзеце.

Валянцін Дамброўскі: Можна пілаваць свае праекты або браць простыя праекты на фрылансе і паралельна займацца рассыланнем рэзюмэ.

Якія перспектывы ёсць у Python-распрацоўніка

Злата Абухоўская: Python-распрацоўшчык можа пайсці куды заўгодна. Можна пайсці ў тэсціраванне, працягнуць развівацца да senior-архітэктара. Або нават у менеджмент. Тэхнічныя менеджэры бываюць розныя, і можна дарасці да топ-мэнэджменту. Можна развівацца ў data science, DevOps, пайсці ў аўтатэсты ці machine learning.

Валянцін Дамброўскі: Увогуле варыянтаў маса, магчымасцяў таксама, у тым ліку нашыя курсы. Ведаў на ўваходзе трэба не так шмат, але пажадана потым ахапіць шырэйшы спектр, таму што чым больш вы зможаце, тым лепш для вас.

***

Гэта толькі частка выпуску Python Junior. Поўную версію эпізоду можна паслухаць.

Або нават паглядзець:

Прайграванне відэа

RSS падкасьце

Дзякуй, што прачыталі, паслухалі ці паглядзелі.

Крыніца: habr.com

Дадаць каментар