Pull to refresh

Как изучать язык Python для веб-разработки в 2023 году. Общие ориентиры

Level of difficultyEasy
Reading time17 min
Views34K

Привет, Хабр!

Меня зовут Тимофей, я Python Engineer с опытом в 3+ года.

Тимофей

Python Engineer в компании Fenion GmbH

Недавно я опубликовал статью на Хабре о том, как я докатился до такой жизни и стал разработчиком на Python. Там я упоминал некоторые материалы, которые помогали мне в изучении. За последнее время нашлись люди, которые спрашивали у меня, как лучше вкатиться в веб‑разработку, изучив Python: с чего начать, в каком порядке и какие материалы использовать и т. д.

Я бы не назвал данную статью полноценным роадмэпом в том понимании, в котором это слово обычно используют. В статье нет сроков изучения, отсутствует подробный план, затрагивающей все темы и подтемы. Да и зачем нужен еще один роадмэп «под копирку», когда в сети и так хватает качественных предложений.

Скорее, я хотел бы составить абстрактный план обучения, который сможет задать общий ориентир, а также будет коррелировать с роадмэпом вроде roadmap.sh. Кроме этого, я смогу дать несколько полезных советов из своего опыта, а также составлю списки полезных ресурсов для изучения языка, сопутствующих инструментов и технологий, которые в свое время помогли или же помогают мне самому.

Также хотел отметить, что все написанное в данной статье является моим субъективным взглядом, основанным на личном опыте. Я не являюсь истиной в последней инстанции, поэтому, в конечном счете, решение следовать данному плану или нет, конечно же, остается за вами.

В любом случае, я надеюсь, что данная статься окажется полезной и вы сможете подчеркнуть что‑нибудь, что поможет вам в изучении языка Python и веб‑разработки в целом.

Что такое язык Python и где он используется

Python — это высокоуровневый интерпретируемый язык программирования, который был впервые выпущен в 1991 году(Не все знают, но язык даже старше Java!). Он известен своей простотой, удобочитаемостью и удобством использования, что делает его популярным выбором для широкого спектра приложений, от веб‑разработки до научных вычислений.

Python может быть использован для многих целей, включая:

  • Веб‑разработка: Python широко используется для создания серверной части веб‑приложений с использованием таких фреймворков, как Django, Flask или FastAPI.

  • Анализ данных и машинное обучение: Python стал фактическим языком для анализа данных, машинного обучения и искусственного интеллекта благодаря своему богатому набору библиотек, таких как NumPy, Pandas и Scikit‑learn.

  • Написание скриптов: Простота и удобство использования Python делают его популярным выбором для написания сценариев для автоматизации задач, таких как системное администрирование и сетевое программирование.

  • Разработка десктопных приложений: Python также можно использовать для создания настольных приложений с использованием библиотек GUI, таких как PyQt.

  • Разработка игр. Конечно, ААА‑проектов на питоне не делают, что что‑то простое — вполне. На YouTube есть интересный канал, на котором автор периодически выкладывает свои Pygame‑проекты.

  • Образование: Простой в освоении синтаксис Python и широкий спектр приложений делают его популярным выбором для вводных курсов в программирование в университетах и школах.

В целом, Python — это универсальный язык, который может использоваться для широкого спектра целей, от простых скриптов до сложных приложений.

Важное предисловие и некоторые советы

У меня для вас хорошая новость: любой человек может достичь хорошего уровня владения Python или же любым другим языком, благодаря правильному подходу, а именно синергией заинтересованности, мотивации и дисциплины.

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

Будучи новичком, я не сразу обрел истинный интерес к языку. На своих первых курсах мы решали математические задачки при помощи этого языка, и скажу вам так: это меня совсем не заинтересовало. Прошел достаточно продолжительный период времени(около года), прежде чем я вернулся к языку. Я вспоминал основы, после чего начал изучать фреймворк Django и сопутствующие технологии прямо во время процесса разработки.

Перейдя на любую вакансию новичок вполне может ужаснуться от списка технических требований к кандидатам: уверенное знание языка, опыт работы с N количеством фреймворков и библиотек, SQL, REST API, GIT, Docker. И данный список может расширяться в зависимости от конкретной вакансии.

Как же все выучить, работать эффективно, не потерять интерес и не сойти с ума?

Для ответа на этот вопрос, оставлю некоторые общие рекомендации:

  • Выберите удобную IDE. Процесс разработки в первую очередь должен быть комфортным для вас самих. Фактически, на рынке есть лучшая IDE для разработки на Python — это Pycharm. К сожалению, из‑за политики JetBrains их продукты больше не доступны для покупки аккаунтам из Беларуси и России. Альтернативой является VS Code, достаточно шустрый редактор кода, который благодаря плагинам оставляет большинство плюшек Pycharm.

  • Обязательно делайте перерывы: дайте вашему мозгу шанс обработать и усвоить полученную информацию. Вы можете удивиться, но эта штука практически всегда работает. Если вы видите, что у вас долго что‑то не получается — просто отдохните и отвлекитесь. Но данный отдых должен быть, в первую очередь, отдыхом для мозга. Лучшим отвлечением лично для меня является прогулка. Зачастую, после такого перерыва вы сможете по‑другому взглянуть на вашу задачу, у вас появятся новые мысли и вы увидите другие пути решения.

  • Выработайте привычку заниматься каждый день. Теория + много практики. Теоретические знания — это безусловно хорошо, но без должного количества практики они ничего не значат. Часто бывает такое, что в теории вам все кажется очевидным и понятным, но как дело касается решения вы обнаруживаете, что сильно путаетесь и голова будто бы не работает. Это нормально! Пытайтесь, пока не получится.

  • Не прыгайте между темами. Обучайтесь поэтапно и в комфортном для вас темпе. Никто не выиграет от того, что вы с утра до вечера будете сидеть за книгами и задачами, после чего сильно перегорите. Перегорание — это в целом распространенная проблема у программистов(и не только). Во время обучения и работы я тоже перегорал и знаю, что это такое. Но в итоге я нашел комфортный для себя темп и определил некоторые рабочие правила, вроде периодического отдыха.

  • Не злоупотребляйте копипастом кода. Особенно это касается проектов. Во всех курсах авторы закрепляют теорию практикой. В роли такой практики выступает создание проекта. Старайтесь думать сами. Это не значит, что вы не должны слушать автора, напротив, изучайте курс внимательно. Я говорю о том, что вы не должны слепо переписывать код и ждать чуда. Пытайтесь решить задачу сами, экспериментируйте, думайте над задачей вместе с автором.

  • Если вам нужно решить большую или же непонятную задачу, декомпозируйте ее на более мелкие подзадачи. Это работает. Так вы сможете намного быстрее найти нужное решение.

  • Присоединяйтесь к сообществу: присоединение к сообществу изучающих Python и разработчиков может быть отличным способом сохранять мотивацию и учиться у других.

  • Создавайте пет‑проекты. Создание пет‑проектов — очень важный аспект в обучении, а также способ применить полученные знания и получить практический опыт, который можно будет добавить в резюме. Начните с простых проектов, таких как калькулятор или текстовая игра, и постепенно переходите к более сложным.

Итак, после небольшого вступления вы определились с мотивацией и ознакомились со списком общих рекомендаций. Можем переходить к самим шагам.

Шаг 1. Изучение основ языка + GIT

Начните с основ Python, таких как типы данных, переменные, циклы, функции и модули. Для начало следует понять основы, уверенно ориентироваться в языке. Да, в какой‑то момент это может наскучивать, но без этих основ вы не сможете двигаться дальше.

Также хотел вынести сюда GIT — систему контроля версий. Данная технология обязательна к изучению всем разработчикам, т.к. во‑первых, это удобно, а во‑вторых, она используется повсеместно. Для начала вам понадобятся несколько базовых команд, вроде:

git init # Инициализация репозитория
git add # добавление файлов в staging area
git commit # снимок текущих изменений проекта
git pull # стягиваем последние изменения с репозитория
git push # заливаем изменения после commit'а

Шаг 2. Объектно-ориентированное программирование

Python — это объектно‑ориентированный язык программирования, здесь все является объектом. Следовательно, важно изучить объектно‑ориентированные концепции, такие как классы, объекты, наследование, полиморфизм и инкапсуляция. Концепции ООП практически всегда спрашивают на собеседованиях, поэтому вы должны хорошо в них ориентироваться. Помимо этого вы постоянно будете сталкиваться с классами в своих повседневных задачах.

Шаг 3. Алгоритмы

Для того, чтобы уметь решать поставленные задачи, нужно мыслить алгоритмически. А как это сделать? Правильно, практиковаться в решении различных задач. Книга «Грокаем алгоритмы» — это просто находка для знакомства с ними. В книге доступнейшим языком рассказывается о различных базовых алгоритмах и понятиях, вроде времени выполнения и О‑большого. Параллельно с изучением данной книги, особенно рекомендую решать разные задачки на codewars или leetcode.

Материалы для изучения. Шаг 1 - Шаг 3

Хотел бы сразу сказать, что я не говорю о том, что все материалы ниже обязательны к изучению. Я лишь оставляю список качественных и полезных на мой взгляд материалов, которые помогли мне и, возможно, помогут вам в процессе обучения.

  1. Знакомство с Python. Дэн Бейдер.

    Пытаетесь найти что‑нибудь для начинающих о языке Python в интернете? Не можете решить, с чего начать? Как структурировать это море информации? В каком порядке изучать? Если вы задаетесь подобными вопросами, потому что хотите заложить фундамент будущей карьеры питониста — эта книга для вас! Вместо скучного перечисления возможностей языка авторы рассказывают, как сочетать разные структурные элементы Python, чтобы сразу создавать скрипты и приложения. Книга построена по принципу 80/20: большую часть полезной информации можно усвоить, изучив несколько критически важных концепций. Освоив самые популярные команды и приемы, вы сразу сосредоточитесь на решении реальных повседневных задач.

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

  2. «Изучаем Python». Марк Лутц

    Многие питонисты считают данную книгу мастхэвом. И не зря, ведь данная работа уже считается классикой. Очень малое количество книг могут сравниться с Лутцом по глубине и подробности в описании своего предмета. Освоив материал книги, вы совершенно точно сможете решать с помощью Python самые разные задачи. Недостатком является форма изложения, которая зайдет далеко не всем, а также размер книги — около 1200 страниц.

  3. Укус питона. Swaroop C.H

    Книга является противоположностью учебнику Лутца. Она маленькая(около 164 страниц), совсем не является полноформатным учебником и содержит в себе самые основы в формате «записок» автора. Книгу вполне можно изучать вместе с каким‑нибудь курсом, например из пункта 4.

  4. Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих. Адитья Бхаргава

    Принято считать, что программирование — это очень сложно. Особенно если раз за разом наступать на одни и те же грабли, пытаться сделать по‑своему то, что уже и так было придумано до нас. Ведь практически для любой задачи есть готовый алгоритм решения, осталось только найти его и правильно использовать.

    В книге «Грокаем алгоритмы» Адитья Бхаргава не просто показывает примеры таких решений с детальными иллюстрациями, но и учит читателя самостоятельно находить их в дальнейшем. Читатель знакомится с понятиями бинарного поиска, массивами, связанными списками, структурами данных, рекурсией.

    Книга рассчитана на тех, кто уже знаком с основными азами программирования и интересуется алгоритмическими решениями. Автор старается доносить информацию понятным даже новичку языком, иллюстрирует все основные моменты.

  5. Вся серия курсов «Поколение Python» на степике. Очень хорошие курсы с большим количеством задач, которые познакомят вас с основными типами данных, циклами, условиями и т. д.

  6. Руководство по языку Python. Метанит. Вполне себе хорошее базовое руководство по языку. Рассматриваются все базовые темы, включая ООП. Сам когда‑то пользовался, было полезно.

  7. Git за полчаса: руководство для начинающих. Отличная статья, которая научит вас основам работы с системой контроля версий.

  8. Гуглите. Вы обучаетесь только тогда, когда сталкиваетесь с трудностями. Поиск решения задачи сильно прокачивает ваши скиллы. Ищите ответы на форумах, в статьях, видео на YouTube и т. д. Только путем проб и ошибок можно по‑настоящему понять изучаемую тему.

Шаг 3. Изучение основ SQL, работа с ORM

Работа с базой данный — неотъемлемая часть работы любого backend‑разработчика. На практике, вы будете работать с БД постоянно. Нет, на данном этапе вам не обязательно знать как руками написать JOIN запрос, в котором будут находится данные из 10 разных таблиц. Для начала, изучите основы, вроде: что такое таблицы, поля, связи и запросы. Остальное за вас сделает ORM. Да, практически во всех современных фреймворках есть наличие ORM(Object‑Relational Mapping). Это специальный инструмент, который позволяет разработчикам взаимодействовать с базами данных более объектно‑ориентированным образом. Вместо написания необработанных SQL‑запросов для взаимодействия с базой данных разработчики могут определять классы, представляющие таблицы базы данных, и использовать эти классы для запроса данных к базе и манипулирования ими.

При помощи ORM вы можете делать все то же самое, что и в самом SQL: создавать таблицы, обновлять их, использовать индексы, писать различные запросы и т. д. Например, в Django используется удобная Django ORM. Сравните сами:

Допустим, у нас есть есть три таблицы: Students, Grade и Marks. Нам нужно вывести всех учащихся 7 класса, у которых оценки выше 4.

Примерно так бы выглядел SQL‑запрос, удовлетворяющий нашей задаче:

SELECT s.*
FROM Students s
INNER JOIN Grades g ON s.grade_id = g.id
INNER JOIN Marks m ON s.id = m.student_id
WHERE g.grade = 7 AND m.mark > 4;

А вот так в Django ORM:

from django.db.models import Q
from myapp.models import Students

students = Students.objects.filter(
    Q(grade__grade=7) &
    Q(marks__mark__gt=4)
).distinct()

Вот еще пример:

Допустим, у нас есть две таблицы: Book и Author. Мы хотим вывести все книги, автором которых является Стивен Кинг.

SQL-запрос:

SELECT b.*
FROM Books b
JOIN Author a ON b.author_id = a.id
WHERE a.name = 'Steven King';

Django ORM:

from myapp.models import Book

Book.objects.filter(author__name='Steven King')

Материалы для изучения

  1. Разбираем SQL на примере PostgreSQL — SELECT, JOIN, GROUP, HAVING, Coalesce и др. YouTube канал Диджитализируй!

  2. Django ORM и его самые популярные фичи. Статья.

  3. Официальная документация Django ORM.

Шаг 4. Изучение верстки на базовом уровне

Сегодня без верстки никуда. Ее должен знать каждый, в том и числе и backend‑инженер. То же самое я бы мог сказать и о JavaScript, но на данном этапе изучать его необязательно. Вы всегда сможете вернуться к нему позже.

Без знаний верстки вы не поймете как работает ваше приложение. Вы даже не сможете нормально отобразить данные на странице. Если я вас не убедил, то вот некоторые из причин, почему вам следует изучить верстку:

  • Понимание того, как работает Web. Backend‑инженеры обычно работают на стороне сервера, но они также должны хорошо понимать, как работает клиентская часть (т. е. браузер). HTML и CSS являются основополагающими языками Интернета и необходимы для создания веб‑страниц. Знание того, как работать с HTML и CSS, помогает бэкенд‑инженерам понять весь процесс веб‑разработки.

  • Лучшее кооперирование с frontend‑разработчиками. Backend‑разработчики часто сотрудничают с frontend‑инженерами для создания веб‑приложений. Знание HTML и CSS облегчает им общение с разработчиками интерфейсов и понимание кода, над которым они работают. Это может привести к более эффективному сотрудничеству.

  • Отладка и устранение неполадок. Инженеры серверной части отвечают за обеспечение правильной работы веб‑приложений. Если есть проблемы с интерфейсом, такие как неработающий макет или смещенный элемент, знание того, как работать с HTML и CSS, может помочь backend‑разработчику быстрее диагностировать и устранять проблему.

  • Быстрое прототипирование. Backend‑инженерам часто приходится создавать быстрые прототипы или макеты веб‑страниц, чтобы протестировать их функциональность. Знание HTML и CSS позволяет им быстро и легко создавать простые веб‑страницы, не полагаясь на разработчика внешнего интерфейса.

  • Больше возможностей для трудоустройства: На современном рынке многие вакансии для бэкенд‑инженеров также требуют знания интерфейсных технологий, таких как HTML, CSS и JavaScript. Обладание этими навыками может сделать backend‑инженеров более востребованными на рынке и открыть больше возможностей для трудоустройства

Материалы для изучения Шаг 4

  1. YouTube канал Евгения Андриканича «Фрилансер по жизни». Отличнейший канал, благодаря которому я также в свое время изучал верстку. Автор доступным языком объясняет различные концепции и штуки из верстки и фронтенда в целом. На канале очень много практики, которую Женя буквально «разжевывает» для зрителя.

  2. Ресурс W3 Schools. Полезный сайт, на котором содержится куча полезный информации и практических примеров по всем html‑тегам, css‑селекторам и т. д.

  3. В целом, после знакомства с основными концепциями, я бы посоветовал набрать понравившихся макетов из тематических тг‑каналов, вроде этого и тупо верстать их. После нескольких таких макетов вы будете чувствовать себя уверенно и поймете, что верстка — это просто.

Шаг 5. Изучение фреймворка

После того, как вы изучите базовые конструкции Python, а также работу с SQL, вы можете переходить к изучению фреймворка. Во время изучения, параллельно стоит изучить как работает веб в целом: как сервер взаимодействует с клиентом, как осуществляется сохранение данных на сервере, какие HTTP‑запросы существуют и т. д. Да, это займет у вас какое‑то время, но эти знания являются обязательными.

На данный момент на Python существует три самых популярных решения для разработки веб‑приложений: Django, Flask и FastAPI. Какой из них выбрать — решать вам. В этой статье автор проводит понятное сравнение всех трех фреймворков.

В свое время я начинал с Django: меня подкупила популярность, наличие огромного множества библиотек, широкий функционал прямо из коробки, большое количество обучающего материала, а также большое комьюнити.

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

Шаг 6. Создание первого проекта

Как я упоминал выше, в свое время я изучал Django прямо во время разработки своего первого веб‑приложения, а именно книжного интернет‑магазина. Если вы будете делать также, то таким образом сможете сразу подкреплять свои теоретические знания полезной практикой.

Не стоит бросаться в крайности. Не нужно 10 часов подряд изучать сухую теорию и никак не использовать ее на практике. Но, также, в свою очередь, для начала нужно изучить основные концепции и инструменты фреймворка, вроде моделей, представлений, контроллеров и т. д., а также их взаимодействие между собой.

Итоговый совет такой: изучите основную концепцию инструмента: базовые вещи и из чего он состоит, а после следуйте примерному плану: изучили тему — внедрили функционал в свое приложение.

Как только вы подойдете к созданию пет‑проекта, у вас, как и у большинства новичков, сразу возникнет вопрос: «А какой вообще проект делать?». Тут все просто: не нужно придумывать велосипед.

Для начала вы можете делать проект с курса или книги, которые вы изучаете. После этого вам нужно будет написать что‑то свое. Подумайте. Может быть у вас есть хобби? Может быть вы любите читать книги и хотите создать интернет‑магазин по их продаже. А может вы любите играть в футбол и хотите создать сайт о спортивных мероприятиях, матчах, командах и т. д. Выбор тут и вправду огромный и он ограничивается лишь вашей фантазией.

Шаг 7. Работа с API

Вам так или иначе придется научиться работать с API (Application programming interface) — интерфейсом, при помощи которого один сайт может взаимодействовать с другим.

Грубо говоря API — это набор операций и функций, доступный внешним клиентам.

Задачи backend‑разработчика так или иначе сводятся к созданию или работе с API‑интерфейсом, который далее будет использоваться frontend‑разработчиком.

В Django для проектирования API используется библиотека Django Rest Framework, которая предоставляет все нужные инструменты для создания API прямо из коробки.

Попробуйте поработать с API разных платформ: например, с API площадки Steam, при помощи которой вы можете получить данные о всех размещенных на ней играх.

Материалы для изучения

  1. Quickstart по Django Rest Framework. Официальная документация.

  2. Официальная документация по Django.

  3. Django3 by example. Antonio Mele

    Новая обновленная версия книги Django2 by example. В книге автор разбирает создание различных проектов на Django: начиная от просто блога, заканчивая интернет‑магазином и образовательной платформой

  4. Two Scoops of Django3. Daniel Roy Greenfeld, Audrey Greenfeld

    В этой книге авторы познакомят вас с различными советами, хитростями, шаблонами, фрагментами кода и техниками, которым они научились за годы разработки на Django. Стоит отметить, что книга является обновлением и дополнением предыдущих изданий.

  5. Django for APIs: Build web APIs with Python & Django

    Django for APIs — это основанное на разработке проекта руководство по созданию современных веб‑API с использованием Django & Django REST Framework. Он подходит для начинающих, которые никогда раньше не создавали API, а также для профессиональных программистов, ищущих быстрое знакомство с основами Django и лучшими практиками. Стоит отметить, что материалы книги используют современные версии фреймворка: Django 4.0 и Rest Framework 3.13

  6. YouTube канал Django School. Автор на практике понятным языком объясняет как работать с Django. На канале есть несколько плейлистов по полноценной пошаговой разработке веб‑приложений, включая сайт по поиску фильмов.

Прочие инструменты и технологии

Я бы мог еще долго перечислять различные инструменты и технологии, которые могут понадобиться вам в работе. Например Docker или принцип работы веб‑серверов, вроде Nginx. Для того, чтобы понять, что нужно изучить в дополнение к базовым знаниям, вам обязательно нужно ходить по собеседованиям в ИТ‑компании. Так вы сможете понять свой текущий уровень и что вам нужно подтянуть, а также увидеть то, чего от вас ждет рынок в плане хард‑скиллов.

Итоги

В данной статье я описал примерный список необходимых знаний для старта в разработке веб‑приложений на Python. Да, объективно он далеко не маленький. Любое обучение, а особенно осознанное — это в принципе дело не быстрое. Но если вы добросовестно изучите все темы, описанные выше, то получите необходимый фундамент, который поможет вам в дальнейшем.

Также, хотел еще раз отметить, что у вас не должно быть цели изучить все эти темы за месяц. Обучайтесь в комфортном для вас темпе, главное — регулярность. Кто‑то сможет осилить данный объем материала за условных 6 месяцев, а кто‑то за 12. В этом нет ничего плохого. Главное, чтобы обучение проходило качественно и приносило вам реальную пользу и результат.

Спасибо за внимание! Если статья оказалась для вас полезной и интересной, то можете подписаться на мой телеграм‑канал, где я рассказываю о разработке на Python и об ИТ в целом на основе своего рабочего опыта.

Tags:
Hubs:
Total votes 4: ↑3 and ↓1+2
Comments7

Articles