Разработчик full-stack на Python

Напомнить о начале
О курсе

Цель курса “Разработчик full-stack на Python” – подготовить специалиста, который сможет выполнять рядовые задачи бекенд-разработки: писать поддерживаемый код, выполнять рефакторинг, проектировать схему базы данных и взаимодействие с ней, организовать работу с ошибками и профилирование, проектировать и развивать схему взаимодействие с клиенсайдом, проводить код-ревью и писать тесты.

Во время курса будет рассмотрен ряд актуальных на данный момент тем, например:
Как разбить код на чистые функции?
Когда использовать GraphQL, а когда REST?
Когда использовать ORM и когда нет?
Как и когда писать автотесты, чтобы не потратить время зря?
Что нужно проверить у каждой БД, чтобы избежать распространённых проблем?

На курсе будут использованы такие технологии как:
Python 3.6 чтобы писать код;
Flask, Django и aiohttp чтобы делать веб-сервисы;
PostgreSQL, MongoDB и Redis чтобы хранить данные; pytest чтобы писать тесты;
Django REST Framework и Graphene чтобы писать API;
Fabric и Docker чтобы не ждать админов.

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

Программа курса
1
Месяц
2
Месяц
3
Месяц
4
Месяц
Стиль кода: чистые функции, сложность, читаемость, функциональность, поддерживаемость, статический анализ.
ДЗ: отрефакторить существующую кодовую базу. Там всё: сайд-эффекты, неправильная декомпозиция, синтаксические ошибки, плохие название, лишние фичи.

Python: частые ошибки и решения (tuples/list, память, контекст менеджеры, генераторы, итераторы, декораторы, MRO)
ДЗ: доработать существующий проект: экономить ресурсы, сделать код читаемее, избавиться от копирования. Тестов нет, комментариев нет, код населён багами.

Как работает HTTP, из чего устроен Flask.
ДЗ: реализовать API на Flask для интернет-магазина. Не самая простая модель данных, много сущностей.

Что есть в Django за пределами туториала, как пользоваться Яндекс.Танком для нагрузочного тестирования.
ДЗ: собираем новостной портал, проводим нагрузочное тестирование, оптимизируем узкие места.
API: где и как проектировать, какие подходы использовать, как реализовывать
ДЗ: реализуем удобное API для фронтенда, параллелим разработку с помощью прототипов API.

Гигиенический минимум девопс-задач для разработчика (fabric, docker, настройка БД), git, gitflow
ДЗ: заворачиваем новостной портал в контейнер, выкатываем в облако.

Frontend (вёрстка на bootstrap/material). Пересборка из исходником, базовая отзывчивость интерфейса, jQuery для оживления.
ДЗ: верстаем простой интерфейс для уже готового API, тестируем в разных браузерах.

Проектирование схемы БД, оптимальная работа с ORM, автотесты без боли.
ДЗ: спроектировать БД, профилировать, оптимизировать использование ORM. Сравнить было/стало, сделать выводы
Как PostgreSQL хранит данные, основные способы оптимизации, экономия на типах данных и таблиц. Введение в Mongo и Redis.
ДЗ: оптимизируем сервис под большое количество данных, дорабатываем схему БД, генерируем фикстуры, тестируем.

Мультипроцессинг, мультитрединг, GIL
ДЗ: оптимизируем ELT-скрипт: сначала всё работает долго и ресурсоёмко, а потом – быстро и экономно.

Асинхронность, aiohttp, где хорошо и где плохо подходит.
ДЗ: реализуем асинхронное API, сравниваем нагрузку с синхронным вариантом.

Оптимизация сайта: профилирование, запросы, кеш.
ДЗ: собрать сайт на DjangoCMS, оптимизировать под большую нагрузку.
Проект на одну из рассмотренных в курсе тем.

Примеры проектов:
Игровой Телеграмм-бот, готовый к большой нагрузке.
Информационный персонализированный сайт на Django.
Своя реализация ORM.
Своя реализация асинхронного драйвера к БД.
Свой проект.
Расписание
Дата и время
Событие
18 октября, среда
20:00 — 21:30
Занятие 9
Преподаватели
Илья Лебедев
Эксперт, консультант по архитектуре приложений. Специалист по разработке серверных решений на Python. Автор курсов по веб-разработке в МГТУ им. Баумана, ВШЭ. Соорганизатор курсов Learn Python и devman.org. Старший разработчик в Itcanfy и Ngenix.
9 лет опыта программирования на C++, Python, PHP и JavaScript. Участвовал в проектах разной сложности: от разработки небольших корпоративных сайтов до планирования и реализации высоконагруженных сервисов и использованием микросервисной архитектуры.
Работодатели