Девман для питонистов
532 subscribers
144 photos
3 videos
186 links
Веб-разработка на Python. Канал от практиков.

Сайт школы Девман: https://dvmn.org/
Контакт для связи: @yulya_devman
Download Telegram
Проводим трансляцию с итогами
Anonymous Poll
55%
Сейчас
45%
Завтра с утра
В этой тяжелой борьбе победил вариант "Сейчас") Начнем трансляцию через 5 минут
4👍1
Live stream finished (7 minutes)
Победитель 1️⃣: @otolstova

Победитель 2️⃣: @Ilyaangreevich

Победитель 3️⃣: @annfike

Поздравляем!🥳🥳🥳
Завтра с вами свяжется наш менеджер @andrey_from_devman

❤️- лайк на пост, если хотите больше розыгрышей😉
Please open Telegram to view this post
VIEW IN TELEGRAM
40👍7🔥5
Привет, это «Девман»!

🥳 Мы вернулись и будем делиться с вами полезными и интересными материалами по всему, что связано с Python, курсами и программированием! Не переключайтесь, будет интересно!

Пока мы готовим для вас сюрприз ко Дню знаний, предлагаем познакомиться поближе и пройти небольшой опрос, чтобы мы могли делиться материалами, которые будут вам полезны!
🥰9🔥41👍1
Скидки 25% на мини-курсы «Основы Python» и «Git и GitHub» с 1 по 6 сентября — отличный повод начать сентябрь с изучения Python! 🎉

➡️ Мини-курс «Основы Python» — это стартовый учебный курс из 8 уроков. С ним вы разберетесь с базовыми конструкциями языка и попрактикуетесь в отладке кода. Он подойдет вам, даже если вы никогда не пробовали программировать!

Получить скидку можно здесь

➡️ Мини-курс «Git и GitHub» состоит из 5 уроков. С ним вы освоите универсальные инструменты, которые позволяют совместно работать над кодом и сохранять историю изменений, когда над проектом работают несколько разработчиков. Это незаменимая штука для всех, кто связан с программированием.

Мини-курс будет полезен не только будущим разработчикам, но и тестировщикам, системным администраторам и верстальщикам!

Получить скидку можно здесь

Уже работаете в IT и знаете основы? Расскажите про скидки друзьям, которые давно хотели изучать Python!
🔥53🥰2
Во время обучения и работы программистом часто приходится задавать вопросы, уточнять задание, просить помощи у более опытных коллег.

Грамотный и полный вопрос может ускорить решение задачи или вовсе закрыть её, а сформулированный «на скорую руку» — погрузить во многочасовое обсуждение абстракций без гарантий результата.

Как же задавать вопросы своевременно и эффективно?

Сегодня расскажем о частых ошибках и поделимся рекомендациями.

Читайте в энциклопедии «Девман» полезные статьи на тему вопросов:
- Как гуглить
- Откуда берутся нерешаемые проблемы
- Не знаешь что выбрать — спроси у заказчика
- Метод утёнка
🔥6👍21🥰1
⚡️ Всем привет! Это Devman. Предлагаем вам размяться и поискать улучшения для кода для чат-бота!

Описание продукта: чат-бот в Телеграм для обмена вещами позволяет пользователям обмениваться, если они лайкнули вещи друг друга.

Данные лежат в нереляционной базе данных redis json, уникальный id пользователя — chat_id Телеграма. Фрагмент кода ищет совпадение между лайками пользователей. Результат — булевое значение, указывающее доступна ли вещь для обмена.

Найдите проблемы в коде и предложите улучшение кода:

is_available = False
for stuff in users_stuff:
if stuff.status_like_users == False:
pass
else:
for user in stuff.status_like_users:
if user == username_2.external_id:
is_available = True

Предлагайте решения в комментариях, а мы вернемся завтра с нашим вариантом!
🔥62
⚡️ Возвращаемся с нашим вариантом улучшения!

В первоначальном фрагменте кода мы нашли несколько проблем, которые стоит поправить:

➡️ Избавьтесь от сравнений с True/False

➡️Уточните названия переменных: users_stuff, username_2, external_id, status_like_users

➡️ Разверните if, сделайте код плоским

➡️ Высушите код

➡️ Сократите валидаторы с использованием any

⚡️ И в результате нашли такое изящное решение:

# Лайкнул ли владелец чужой вещи что-то из вещей пользователя
has_match = any(
foreign_stuff_owner.chat_id in my_stuff.liked_by_chat_ids
for my_stuff in my_stuff_items if my_stuff.liked_by_chat_ids # liked_by_chat_ids can be False
)


➡️ То, что явно не было указано в задании — liked_by_chat_ids может быть пустой, тогда redis возвращает False, поэтому добавили проверочку.

➡️ По неймингу предлагаем использовать противопоставление «мое-чужое», чтобы явно различать пользователей.

➡️ Поскольку stuff во множественном числе не используется, то в этом случае корректно использовать stuff_items для указания на коллекцию вещей

Мы увидели много классных вариантов в комментариях!

➡️ Конструкцию с any предложил почти сразу @thunderhawkk.
➡️ @IlyaShirko озвучил и начал ремонт нейминга — liked_by утащили даже в наш итоговый вариант
➡️ @LuSP7 продолжил успешно чинить нейминг

Всем спасибо за активность! Кому понравился формат — ставьте 🔥 и мы пойдем искать еще фрагменты для улучшайзинга!
🔥12
Скидки 25% на мини-курсы «Асинхронный Python», «Чат-боты на Python», «Django», «Знакомство с Django: ORM» с 12 по 18 сентября ко Дню программиста! 🎉

Спешим поздравить вас с наступающим праздником и дарим скидки на мини-курсы, чтобы вы могли усилить свое резюме новыми скиллами!

С мини-курсом «Асинхронный Python» вы сможете упрощать архитектуру ПО и создавать сложные проекты, не теряя в скорости разработки.

👉 Получить скидку здесь

С мини-курсом «Чат-боты на Python» вы получите боевые навыки создания ботов — научитесь разворачивать их на серверах, работать с базами данных и заглянете «под капот» к популярным библиотекам.

👉 Получить скидку здесь

С мини-курсом «Знакомство с Django: ORM» погрузитесь в мир баз данных, научитесь работать с ними и писать сложные запросы.

👉 Получить скидку здесь

С мини-курсом «Django» изучите самый популярный веб-фреймворк на Python — сможете создавать современные сайты, строить стартапы и работать над проектами крупных IT-компаний!

👉 Получить скидку здесь
👍4🔥31
Цель курсов Девмана — подготовить программистов, умеющих писать код, который легко читать, поддерживать и расширять.
Девман изначально появился именно как решение проблемы недостатка квалифицированных бэкендеров.

💻 Уметь писать код — значит автоматизировать навык, проделать это много раз. А не просто прочитать книгу/статью/документацию и пересказать.

🗣 Лекции. Сначала пробовали пойти по классическому пути чтобы обучить разработчиков — Евгений читал курс по выбору в МГТУ им. Н.Э. Баумана.
Результат — всего двое студентов выполняли домашние задания и смогли что-то показать на выходе. Но и они не были готовы с ходу включиться в проект и усваивали лишь малую часть материала. Так классический подход был отметён.

🚀 Обучение действием. По данным исследований уже в течение первого часа забывается до 60% всей прочитанной или услышанной информации, через 10 часов в памяти остаётся 35% от изученного.
Learning-by-doing или обучение действием — это практический метод обучения, который популяризировали в 80-е, а начали применять еще в древние времена.
Идея простая: чтобы стать программистом, надо программировать. Мы решили использовать этот подход и собрали из реальных проектов учебные. Ученик выполняет проект, пишет код с самого первого урока «Раскрутите планету», а теорию читает под конкретную задачу.

🎬 Видео или текст? Видео в уроках Девмана почти нет. Разовые исключения сделаны в случаях, когда надо познакомить с интерфейсом или с основными концептами новой технологии.
Текст экономит время — больше останется на программирование.
Текстом удобно пользоваться — искать фрагменты, копировать код.
Чтение — активный мыслительный процесс, который может быть эффективнее для запоминания. Долой видео, да здравствует Энциклопедия!

Практические уроки Девмана сами по себе лишь наметили бы маршрут для самообучения, если бы не секретный ингредиент… код-ревью!

👉 Попробуйте написать свой первый код на Python в уроке «Раскрутите планету» (кстати, он бесплатный!) или победите первого чат-бота со статьей «Как учить Python с нуля с удовольствием: пишем своего чат-бота».

Какие форматы уроков вам нравятся больше всего и что помогает запоминать информацию? Поделитесь своим опытом обучения в комментариях ➡️
🔥6👍21
Делимся историей нашего ученика Тимура о том, как Devman помогает решать реальные практические задачи.

Тимур пришел к нам с конкретным запросом — нужен курс, в результате прохождения которого, он сможет сам разработать платформу для трекинга командировок.

👉 Читайте, что из этого вышло в статье!
👍3🔥3
Код-ревью — это практика в разработке программного обеспечения, когда более опытный специалист просматривает код и по итогам дает автору список улучшений, которые нужны, чтобы влить код в основную ветку проекта.

Ревью не столько помогает отловить баги и ошибки в работе программы — это все-таки больше к тестированию, сколько – сделать код легко читаемым, масштабируемым, стабильным и безопасным.

⚡️ Код-ревью от действующего разработчика — ключевое звено методики Девмана. Ученик получает список улучшений, которые расскажут про best practice, помогут сделать код оптимальнее, изящнее, чище. Код-ревью позволяет сократить время обучения в разы, подняв планку качества кода наших выпускников до уровня джун+/миддл.

⚡️ Чистота кода. В Python есть обязательный стандарт PEP8, в котором рассмотрены правила форматирования и наименования объектов.
В интернете можно найти много книг по чистоте кода. Но в требованиях к коду нет единства. Общепринятого списка лучших практик в одном учебнике не найти.

⚡️ Улучшения Девмана. Улучшения всегда имеют блок мотивации — чем предложенный вариант кода лучше и в какой ситуации.
Почти всегда улучшение сводится к усовершенствования читаемости, возможностей поддержки и/или наращивания функционала.

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

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

⚡️ Контекст важен. Код оценивается только применительно к конкретной ситуации. ООП незаменимо для Django ORM, но использование его для пары запросов через API усложняет поддержку и чтение кода. Не надо забивать гвозди микроскопом!

⚡️ Накопление опыта. В Девмане накоплен почти 20-летний опыт веб-разработки, которые позволяет сделать код стабильный, расширяемым и простым для поддержки.
Да-да, автор курса Евгений начинал, когда еще даже первую Джангу только готовили к релизу! База улучшений Девмана – это больше, чем опыт одного разработчика. Это копилка, куда мы собираем опыт многих специалистов.

⚡️ Критика или советы. Улучшения не нужно рассматривать как список ошибок или критику. Вы выполнили урок, код работает! Уже победа! Но предусмотреть все проблемы, не имея опыта разработки и поддержки ПО невозможно.
Во время обучения лучше максимально «наступить на грабли» и разобраться во всех неудачных решениях, которые приходили в голову. Чтобы на выходе действительно владеть и применять к месту лучшие практики Python.

⚡️ Пропустить нельзя. Все улучшения придется выполнить.
Во-первых, вы получаете проект, который не стыдно добавить в портфолио.
Во-вторых, вы не будете повторять неудачные решения в последующих уроках. По этой же причине нельзя получить доступ к следующему уроку, не сдав предыдущий.
А вот проходить несколько тем параллельно наоборот рекомендуем. Так и разнообразнее, и не теряется время, пока ждёте ревью.
В разработке часто используют именно блокирующие код-ревью, когда без него нельзя влить код в main-ветку проекта. Правило блокирующих ревью действует для всех уроков Девмана.

➡️ Попробуйте код-ревью при прохождении бесплатных уроков в модулях «Основы Python», «API веб-сервисов» и «Знакомство с Django: ORM». Или записывайтесь на тестовый урок курса «Профессия Middle Python/Django разработчик» — расскажем подробно о том, как проходит код-ревью!

Узнайте в Энциклопедии, какой код называется чистым и наши рекомендации по форматированию кода:
➡️ Что такое чистая функция
➡️ Понятные названия
➡️ Форматирование кода

У вас был опыт код-ревью на курсах или на работе? Делитесь впечатлениями в комментариях!➡️
🔥4👍3