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

Галоўныя тэмы:
- Якія веды патрэбны пачаткоўцу праграмісту, каб займацца
вэб-распрацоўкай? - Чаго чакаюць працадаўцы ад распрацоўшчыкаў?
- Што рабіць, каб знайсці працу без досведу?
- Як можа развівацца Python-распрацоўшчык?
Python Junior Podcast – падкаст аб праграмаванні для тых, хто хоча лепш разбірацца ў 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.
Валянцін Дамброўскі: Увогуле варыянтаў маса, магчымасцяў таксама, у тым ліку нашыя курсы. Ведаў на ўваходзе трэба не так шмат, але пажадана потым ахапіць шырэйшы спектр, таму што чым больш вы зможаце, тым лепш для вас.
***
Гэта толькі частка выпуску . Поўную версію эпізоду можна .
Або нават паглядзець:

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