Як стати Python-розробником. План дій для початківців

Python — одна з найпопулярніших мов програмування серед українських розробників, яка має широку сферу застосування. Мова має порівняно простий синтаксис і її легко вивчити, тому Python часто обирають новачки як першу мову для входу в ІТ.

У межах рубрики для початківців «Код професії» розповідаємо про те, як вивчити Python та знайти першу роботу. Для цього ми поспілкувалися з досвідченими Python-розробниками Володимиром Обрізаном, Віталієм Мірошніченком, Сергієм Галабурдою і Михайлом Кашкіним та зібрали їхні поради в один матеріал.

Що таке Python

Python — інтерпретована об’єктноорієнтована мова програмування високого рівня зі суворою динамічною типізацією. Розробив її 1990 року Гвідо ван Россум.

Сфера застосування мови досить широка. Python використовують у веброзробці, для машинного навчання та роботи з даними, для автоматизованого тестування. На Python пишуть ігри, сервіси, вебзастосунки, крон-скрипти для бекапу, програми з юніт-тестування, з її допомогою навчають нейромережі. У проєктах Python застосовують і як основну мову програмування, і для створення розширень та інтеграції застосунків. Ще її активно використовують для створення прототипів майбутніх програм.

Згідно з останнім рейтингом мов програмування від DOU, Python — на 4-му місці серед мов, які опитані ІТ-фахівці використовують для роботи, — нею пишуть 11,2% спеціалістів. Серед мов, які використовують як додаткові, Python на третьому місці.

За цим посиланням можна подивитись середні зарплати Python-розробників з різним досвідом.

На момент публікації медіанна зарплата Python-розробника становить $2600. Зарплата Trainee: $330–900; Junior: $700–1163; Middle: $2000–3500; Senior: $4000–6000.

А тут можна переглянути відкриті вакансії в категорії Python. На момент публікації статті є 180 вакансій.

Чому мову Python варто обрати початківцю

Для новачків, які не мають досвіду програмування іншими мовами, вивчення Python є гарним способом освоїти частину базових концептів (таких як арифметичні операції, розгалуження, цикли, функції) мов програмування та прокачати логіку.

Розглянемо переваги мови для початківців за порядком:

  • Python порівняно легко вивчити, у неї простий і зрозумілий синтаксис. Легко підключати сторонні бібліотеки.
  • Є багато літератури, зразків коду, онлайн-курсів, відео, питань і відповідей на Stack Overflow, тому початківець не залишиться без інформації.
  • Велика спільнота розробників, оскільки Python є однією з найпопулярніших мов. Це полегшує пошук ментора або відкритого чату підтримки.
  • У Python-розробників є багато варіантів розвитку. Цю мову використовують для автоматизації рутинних справ системні адміністратори, інженери з тестування використовують Python для автоматизації тестування вебсайтів (Selenium), програмісти пишуть програми для ПК (PyQT), вебсайтів (Django), вебсервісів (Flask, FastAPI тощо), для обробки даних (Pandas, NumPy), навіть можна писати нові плагіни для великих програм (QGis, Gimp). І це не вичерпний перелік!
  • На ринку праці є достатньо пропозицій роботи як в Україні, так і віддалено.

Більше про плюси та мінуси Python у порівнянні з іншими мовами ми писали у статті «Велика кількість бібліотек, сувора динамічна типізація та проста логіка. Розробники — про переваги та недоліки Python».

Оскільки ми бачимо, що мова підходить для початківців, перейдімо до питання про те, як її вивчити.

Які технології варто вивчити в межах Python

Насамперед треба опанувати синтаксис мови. Важливо, що мова розвивається, тому сьогодні потрібно вчити зразки коду, які розроблені для Python 3.10 або вище.

Також варто довідатись про:

  • Алгоритми й структури даних, а також їхню реалізацію у стандартних пакетах мови Python.
  • Багатопотоковість (concurrency) — для того, щоб дізнатися про програмування багатопотокових застосунків і те, чому у Python багатопотоковість обмежена.
  • Flask, FastAPI — щоб створити свій перший сервіс для обробки HTTP-запитів.
  • NumPy, pandas для роботи з даними та математичних розрахунків (візуалізація даних, множення матриць тощо).

Варто володіти такими інструментами:

  • Black — автоматичне форматування коду програми.
  • Pylint — перевірка базових правил написання коду, проєктування та підказка типових помилок e коді. Це важливо для початківців, тому що спочатку помилок буде дуже багато, треба, щоб цей інструмент вчасно підказав, де саме.
  • Unittest, Pytest — автоматична перевірка програми. Гарні інструменти, щоб писати надійний код без логічних помилок.
  • Mypy — перевірка коректного вживання типів.
  • Git — система керування версіями файлів та спільної роботи.

Крім того, на вибір технологій впливає запит розробника. Якщо ви плануєте займатися аналізом даних або створенням штучного інтелекту, варто вивчати візуалізацію та обробку даних, а ще математику. Якщо хочете створювати застосунки, треба більше уваги приділити вивченню бібліотек і технологій, що пов’язані з бекендом, і багатопотоковості.

Якщо йдеться про професійне застосування мови, то в різних напрямах є свій обовʼязковий мінімум технологій.

Автоматизація тестування: unittest, pytest, Selenium, HTML, CSS.

Програмування для ПК: PyQT.

Розробка вебсайтів: Django, HTML, JavaScript, SQL.

Розробка вебсервісів: Flask, FastAPI, JSON, SQL.

Як краще вчити мову програмування — на курсах чи самостійно

Це питання є індивідуальним і відповідь залежить від можливостей, часу, бажання та інших факторів. Можна вивчити мову самостійно, на курсах або під час стажування в компанії.

Щоб легше було визначитись з тим, як краще навчатись, поговорімо про переваги та недоліки кожного зі способів.

Самостійне навчання

Переваги:

  • Матеріалів в інтернеті багато, і є великий вибір доступних і якісних гайдів.
  • Це безкоштовно або дешево (за вартістю книги чи підписки на певний ресурс).
  • Швидкість і темп свого навчання ви контролюєте самі, можете займатися, коли вам зручно, і не підлаштовуватися під когось.
  • Якщо ви вже маєте досвід у розробці, зможете витратити менше часу на вивчення мови, ніж якби пішли на курси, що тривають пів року чи рік.
  • Можна власноруч обирати формат споживання інформації — відео або текстом.

Недоліки:

  • Без ментора може бути складно розпізнати та зрозуміти свої помилки, а з кожною наступною нерозвʼязаною задачею може знижуватися і мотивація до навчання.
  • Складно розібратися, що й за чим вчити, де і як знайти необхідні ресурси.
  • Складно зрозуміти, чи досягли ви вже рівня, з яким можна йти на стажування чи шукати роботу.
  • Вивчення мови може затягнутись, якщо немає навичок самоорганізації.

Досвідчені розробники радять знайти ментора, якщо ви обрали шлях самостійного вивчення мови. Оскільки на певному етапі ви можете потрапити в глухий кут і не знайти рішення. Крім того, часом самому важко побачити свої помилки, а ментор підкаже, як зробити код чистішим та якіснішим, пояснить особливості його написання на прикладі кожної окремої ситуації. Втім, хороший ментор — це дорого.

Курси

Переваги:

  • Ви перебуваєте в колективі людей, які вивчають те саме, можуть поділитися знаннями та досвідом, допомогти уникнути блокерів чи проблем.
  • У вас є викладач або ментор, який може дати відповіді на ваші запитання.
  • Ви потрапляєте в оточення мотивованих людей, це дає змогу підтримувати належний рівень натхнення.
  • Графік занять на курсі не дасть вам «забити» на навчання.
  • Якщо курси проводить ІТ-компанія, то є великі шанси, що вас навчать саме того, що потрібно цій компанії, і ви зможете претендувати на стажування чи посаду в ній.

Однак розробники радять серйозно поставитися до вибору курсів: читати відгуки, розпитати тих, хто там навчався, довідатися про досягнення учнів, майбутнього викладача. Більше інформації про те, які в Україні є ІТ-курси та як їх обрати, ви можете знайти на DOU за тегом «курси». Радимо звернути увагу на статтю «Інструкція з вибору IT-курсів для початківців».

Недоліки:

  • Курси — це дорого. Тривалі курси можуть коштувати як семестр навчання в престижному університеті, а такі гроші є не у всіх.
  • Якщо ви недостатньо мотивовані, навчатися буде важко, а відставши від решти, є великий шанс все покинути.
  • Курси не гарантують працевлаштування та карʼєри (самостійне навчання теж не гарантує, проте ви хоча б не платите за це гроші).
  • Курси можуть тривати довго, близько року.
  • На навчання потрібно буде знаходити час і підлаштовуватись під графік.
  • Щоб потрапити на безкоштовні курси при ІТ-компаніях, потрібно мати базові знання та часто гарне володіння англійською.

Корисні ресурси для вивчення Python

«Learning Python» Марка Лутца. Є два томи: перший розповідає про синтаксис і базові можливості мови, другий — про об’єктноорієнтоване програмування. Книга велика — понад 1500 сторінок, автор має багато чого розповісти початківцю.

Офіційний туторіал мови, який від самого початку покроково демонструє можливості мови.

Pycharm Edu. Це безплатна версія середовища для розробки для Python. Тут є багато завдань для початківців з автоматичною перевіркою.

Learn Python in Y minutes. Довідник для вивчення мови.

LeetСode. Для розв’язування алгоритмічних задач.

LearnPython. Мінімалістичний інтерактивний туторіал.

Python for Absolute Beginners! Безплатний курс на Udemy для абсолютних початківців.

Python for Everybody Specialization. Безплатні курси з Python від Coursera.

Python Lectures. Набір лекцій з Python від Rajath Kumar у вигляді Jupyter notebooks.

Pylot.me. Курс Михайла Кашкіна для початківців.

Корисні статті на DOU

Що має знати Senior Python Back-end Developer. Аналіз вакансій в Україні та Каліфорнії.

Серія статей «Python дайджест».

Советы сеньоров: как прокачать знания junior Python.

Python Challenge, или Как я ознакомился с автоматизированным тестированием за месяц.

Безсерверні веб-застосунки на Python з використанням Lambda і Flask.

Як шукати роботу початківцю в Python

Перед пошуком роботи розробники радять реалізувати два-три простеньких проєкти й залити їх на GitHub. Можливість на етапі відбору кандидатів подивитись на код може стати вашою перевагою.

Також тренуйтеся розв’язувати задачки й будьте готові це робити під час інтерв’ю. Не відмовляйтеся виконувати тестове завдання. Зараз є безліч сервісів, де можна потренуватись. Наприклад: LeetCode, Codewars, HackerRank.

Підтягніть свою англійську. В реаліях українського ІТ-ринку гарна англійська значно збільшує шанси знайти роботу.

Ще одним альтернативним джерелом для досвіду може бути відкритий код програмного забезпечення. Періодично проєкти з відкритим кодом мають задачі для людей без досвіду, але з бажанням працювати. Іноді таку роботу навіть оплачують — вам потрібно серфити GitHub у пошуках цікавих проєктів і корисного досвіду.

✅ Що варто вказати в резюме

  • Посаду, на яку ви претендуєте.
  • Технології, з якими мали справу: навіть якщо це стандартні пакети Python.
  • Усі завдання, які ви виконали, з указанням технологій і пакетів. Залийте свій код у публічний репозиторій на GitHub і вкажіть посилання. Наприклад: «Написав програму, яка читає CSV-файл виписки з карткового рахунку «ПриватБанку» та робить аналітику за різними групами витрат. Результат у вигляді Excel-файлу або png-графіка. Використав пакети: csv, pyexcel, Matplotlib, pytest, Pylint.
  • Стажування, якщо десь проходили. Опишіть, що там робили, які були завдання та чого досягли.
  • Курси та навчання, освіта. Вона не гарантує ваших знань, але показує рекрутеру, що ви хоча б орієнтуєтесь у сфері.
  • Англійська мова — її знання на старті карʼєри може компенсувати прогалини в розумінні Python.
  • Soft skills. Вміння працювати під тиском чи в стислі терміни, бути командним гравцем чи вирішувати конфлікти, заменеджерити певні процеси.

❌ Про що краще не писати

  • Досвід, який взагалі не повʼязаний з позицією — не потрібно в резюме на фронтенд-розробника писати про те як, ви працювали барменом, офіціантом тощо.
  • Негатив про попередню роботу чи колег — таких кандидатів намагаються уникати.
  • Не припускайтеся граматичних помилок. Якщо сумніваєтесь, попросіть вичитати резюме редактора/коректора.

Більше про те, як написати хороше резюме, читайте в цих статтях:

Також варто перед підготовкою до співбесіди звернути увагу на статтю «Співбесіда з Python. 100+ запитань для Junior, Middle, Senior».

Роботу розробники радять шукати на Djinni та DOU. На DOU є розділ «Перша робота» з курсами, стажуваннями та вакансіями лише для початківців. Також варто створити акаунт в LinkedIn і додати в друзі якомога більше розробників та рекрутерів. Про те, як правильно заповнювати LinkedIn-профіль, читайте тут. Після перших відмов запитуйте в інтерв’юєрів, що варто підтягнути.

Бажаємо успіху у вивченні Python і віримо, що вам все вдасться!

Раніше ми писали про те, як вивчити JavaScript. Напишіть у коментарях, про яку мову ви б хотіли почитати наступного разу.

Все про українське ІТ в Телеграмі — підписуйтеся на канал редакції DOU

👍ПодобаєтьсяСподобалось27
До обраногоВ обраному32
LinkedIn



25 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Черговиий клікбейтний крео рівня емсітудей, який формує якісь дивні очікування у починаючих. До чого на початку статті про те, як стати Python-розробником, приводити поточні зарплати? Це повинно якось вплинути на вибір першої мови програмування, ви серйозно? Для початку, ви забули сказати, що для розробника мова програмування, навіть основна, це у кращому випадку третина необхідних навичок. Навіть якщо у вакансії написано «Python розробник» (максимально тупо, ну але ок, це реалії місцевого ринку), від розробника все ж очікується вміння вирішувати досить широкий спектр проблем, і далеко не всі взагалі пов‘язані безпосередньо з програмуванням. Навіщо так д****и на окремі мови? Навіщо пов‘язувати зарплати з мовами? (підказка: кореляції немає. Є кореляція зі складністю завдань, які ви вирішуєте, та рівнем відповідальності; від технологій це безпосередньо не залежить).

Олександре, вітаю! Все ж зарплати відображають поточні реалії ринку і можуть вплинути на вибір мови. Ми не ставимо за мету просунути думку «йдіть туди, де більше платять».

Иванна, большое спасибо за приглашение поучаствовать в написании этой статьи и за вопросы, которые задали. Очень люблю работать и вообще любые коммуникации с командой ДОУ. К моему сожалению, статья на ДОУ вышла чуть раньше, чем мы успели со своими планами. В этом году вообще планы вторичны.

В дополнение к нашим профессиональным курсам на Pylot.me в июле я запускаю бесплатный вводный курс по Python’у. Специально для тех, кто еще определяется в каком направлении двигаться, возможно у меня получится убедить вас, что Python — это лучшее направление. Пока нет какой-то страницы с анонсом, но лекции будут выкладываться на моем канале www.youtube.com/...​/UCzClGkSdFfjursCUsp6T_bQ. Или подписывайтесь в фейсбуке и там буду держать в курсе www.facebook.com/mkashkin

Безкоштовний курс Python Стартовий українською мовою.

Посоветую еще webformyself и skillbox видео курсы, качал бесплатно с торрента.

А сколько из 185 вакансий готовы взять без коммерческого опыта? Это же статья для новичков, верно? А как этот опыт получить, если всем сейчас нужны с опытом 100+ лет?

Это простой вопрос, но ответ нравится далеко не всем. Собственно причина, по которой я создал свои курсы обучению заключается в том, что большинство курсов, книжки и сайты дают только кусок теории, редко дают немного практики. Хотя при этом для того, чтобы получить полноценный навык надо 3 составляющие:

— теория, которая тянет максимум процентов на 15% от времени, которое надо потратить на приобретения навыка. Хотя кажется, что на собеседованиях вас будут спрашивать именно ней. С теорией есть известная проблема, что ее слишком много, а новичок, введя слово python на любом книжном сайте получит сотни названий. Но тут вам может помочь дерево навыков, или матрица компетенций. Курсы, которые воруют друг у друга программы, а потом дают читать джунам, не сильно помогают в этом деле.
— практика, все это слышали, все понимают. Те, кто не понял, но поймут, то поймут сразу. Меня очень неприятно удивило, что многие из бесплатных или платных платформ, которые дают практику требуют реализацию каких-то зубодробильных и замудренных алгоритмов, которые не имеют отношения к рабочей практике. Такое впечатление, что синдром советского препода перепрыгнул сразу в наше цифровое время.
— экспертное мышление. Часть, которую вообще игнорируют очень многие школы пытаясь как можно быстрее впарить свои курсы. И то, что вообще невозможно получить из учебников. Это совместное общение и совместное решение проблем с человеком который повидал некоторое дерьмо в этой сфере.

И теперь после куска этой душещипательной теории вернусь к вопросу о прохождении собеседований на вакансии джунов. Джунов без года опыта работы стараются не брать на работу. Но что же отличает этих джунов с годом опыта и тех, у кого его нет? Ну вот допустим человек прочитал книги, сделал практические проекты, даже за пиво попросил ревью своего кода у бывшего одноклассника и даже выложил код на гитхаб. Вроде бы прошелся по всем трем направлениям: теория, практика, экспертное мышление.

Помимо навыка, который называется хард-скиллом нужна вторая часть. Возможно, вы слышали, что берут на работу за хард-скиллы, а увольняют за софт-скиллы. Как открыть тикет, как закрыть тикет, что такое код-ревью, как проходят коммуникации в компаниях и какие виды их бывают. Даже банально как не опаздывать, как распознать работодателя, о котором потом будут писать на кохане.айті. Как правильно оформить резюме чтобы оно выглядело как от человека, которому можно доверять. Как не бояться проходить собеседования, какие вопросы задают, как устроен процес найма и т.д. Это все о коммуникациях и это называется софт-скиллы.

Я этому уделяю половину времени вебинаров на наших курсах. Уже накопилось часов 30-40 разбора этих вопросов. Собственно, работодатель объективно не хочет тратить на них свое время. Во-первых, не везде готовы обучать новичков, а во-вторых, мало кто умеет объяснять и вообще развивает навык объяснять так чтобы было понятно, нужно быстрее грести. Проще дождаться чтобы кто-то потратил это время на человека, а потом его уже можно брать. Даже можно выдать почетную грамоту стронг-джуна.

И вот возвращаюсь к первому предложению. Оказывается, помимо учебника, чтобы стать программистом и получать триста тысяч сыров в секунду за нажатие кнопки надо еще уметь общаться, уметь производить впечатление, выглядеть как надежный партнер.

Но чтобы мои рассуждения не выглядели как какая-то сложная и непробиваемая история.

Я провел за свою жизнь много интервью думаю около 2000. Бывало, по 200 и более год, на позиции от джунов до СТО. И, конечно, проходил собеседования сам. И не однократно попадал в ситуации, когда компании приглашали собеседовать закомплексованных и неуверенных в себе людей, вместо проверки просто самоутверждались в попытке поднять свою самооценку. По сути это направленная агрессия и хорошо бы уметь с ней разбираться. Но в любом случае — это опыт. Да, вам может попасться что-то типа Интеллиас, и если вы без опыта успешных собеседований, то будете думать, что проблема в вас. Мусорных компаний в Украине много. Но вы дотачиваете свой опыт и это отражается на вас. Прохождение собеседований — это навык. Как ездить на велосипеде. У кого-то быстрее, у кого-то медленнее, а кому-то приходится этому учиться по учебнику. Но вы можете управлять процессом и потратив нужное количество часов вы сможете проехать первый круг.

Роботу розробники радять шукати на Djinni та DOU. На DOU є розділ «Перша робота» з курсами, стажуваннями та вакансіями лише для початківців.

Зайшов подивитись, що ж там є для python-початківців, а там — ніц. Виходить, що python, всьо?
Інакше, який сенс вчити технологію, в якої немає входу?
Можливо хтось знає компанії, де можна знайти роботу\стажування для початківців?

У EPAM і Genesis на регулярній основі відбуваються набори на курси за різними напрямками.

Дякую за відповідь!
З моїх спостережень, Python наборів там не було. Можливо, я помиляюсь?

В Epam точно були, намагався на декілька з них попасти.

Я в Ялантис до войны начал обучаться, так там «без опыта» тестовое задание было API автопарка на Django REST Framework построить.

Ви знайшли там роботу/стажування по Python? Я бачу лише платні курси, які не гарантують працевлаштування. Початківцям, які пройшли курси і шукають роботу, цей варіант не підійде.

Стаття називається «Як стати Python-розробником. План дій для початківців», а інформації про те як ним стати 10% від всієї статті. 90% води. Кілька посилань на кілька ресурсів і титоріалів, і то не найркащих, і кінець. Прикольно. Америка відкрита.
Так можна статті і про AI строчити по 3 на день.

С другой стороны, иногда заношу подобные пустопорожные статьи в закладки, в надежде, что в комментах что-то по делу накидают (литературу, ссылки, советы).

Один из лучших ресурсов для изучения Python это канал Corey Schafer. Corey великолепно объясняет как базовый синтаксис Python, так и особенности языка: decorators, generators, context managers, meta classes.

p.s. Начинающему не стоит начинать изучение языка программирования по книге на 1500 страниц!

Дякую, що поділились посиланням на канал!

Я б ще додав канал Sentdex www.youtube.com/c/sentdex/playlists. Там класні туторіали про саму мову та різні бібліотеки.

Программирование для ПК: PyQT.

— кому це взагалі зараз треба? Навіть на погратися час не треба витрачати, на мою думку.

Дивлячись для яких потреб. На PyQT можна за тиждень дуже швидко написати рішення яке під web пишеться місяць, а то й більше. .

А що треба, Tcl/Tk? )) Звісно, краще чистий Qt ніж PyQt, але для прототипів або single-dialog утиліт цілком собі рішення.

Начинающему не стоит начинать изучение языка программирования по книге на 1500 страниц

Чому? «Learning Python» Лутца був першою книгою по програмуванню, яку я прочитав до кінця, і вважаю, що це дуже хороший варіант, інформація вичерпна, подана добре структуровано та зрозуміло для початківця.

Підписатись на коментарі