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

Сайт школы Девман: https://dvmn.org/
Контакт для связи: @yulya_devman
Download Telegram
Вы используете ИИ-агентов для разработки программных продуктов?
Anonymous Poll
22%
Нет, не использую
40%
Да, но не часто
35%
Да, часто
3%
Полностью отдал написание кода ИИ
Сталкивались с проблемами при использовании ИИ для разработки программных продуктов?
Anonymous Poll
11%
Нет, проблем нет
41%
Да, иногда бывают проблемы
37%
Да, проблем много
11%
Быстрее сделать самому ручками
Видим, что вы часто сталкиваетесь с проблемами при использовании ИИ в разработке. Мы уже писали о первой ловушке, которая мешает разработчикам научиться использовать ИИ в разработке. Сегодня поделимся еще двумя.

✍️Ложная автономность (proxy autonomy)
— Что это: кажется, что «агент делает», но вы всё продумываете за него;
— Симптом: чтобы получить результат, вы пишете слишком подробные инструкции до уровня «вот в этом файле поменяй эту функцию». Быстрее было бы сделать руками;
— Пример: задача выглядит как «сделай фичу», а по факту вы диктуете агенту пошаговый рецепт, потому что без него он не попадает в архитектуру.
— Лечение: поднимать глубину делегирования кодинга там, где можно описать ценность и критерии приемки, а не технические шаги. Инвестировать в контракты (например, схему API) и шаблоны задач.

✍️Разрастание скоупа (scope explosion)
— Что это: агент начинает «улучшать всё подряд»: правит форматирование, переименовывает, меняет архитектуру, добавляет лишние зависимости;
— Симптом: слишком большой набор изменений без понятной цели, много побочных правок, сложно ревьюить;
— Пример: вы попросили «починить баг», а агент параллельно переименовал половину модулей и заменил библиотеку логирования;
— Лечение: жесткие рамки (что трогаем/не трогаем), лимит на размер изменений, стоп-правила («остановись и спроси»), приоритет «минимальное изменение, которое дает ценность».

— Дополнительно: ввести бюджет код-ревью (Code Review Budget): лимит времени и внимания на ревью, под который подгоняете объем изменений;
— Дополнительно: фиксировать архитектуру и ценность ее компонентов, чтобы агент не «оптимизировал» то, что трогать нельзя.

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

👉А с какими еще ловушками при использовании ИИ-агентов вы сталкивались? Делитесь в комментариях!
🤔 Давайте вместе разберемся, что не так с этим кодом?
...
for vacancy in response.json()['items']:
...
pages = response.json()['pages']
...

👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.

➡️Пишите в комментариях, что можно исправить!
Превращение JSON строки в структуру данных Python требует много процессорного времени. Этот ресурс не безграничен, поэтому нельзя допустить, чтобы программа транжирила его на неоправданно частые вызовы метода response.json().

Код из нашего примера может выглядеть так:
...
payload = response.json()
for vacancy in payload['items']:
...
pages = payload['pages']
...


Спасибо большое, что активно писали в комменты и предлагали свои варианты!
🔥4
Зачем проходить мок-интервью

Мы часто сталкиваемся с тем, что наши ученики не понимают ценность прохождения мок-интервью. Сегодня расскажем о том, чем полезен этот инструмент!

Mock-interview (от англ. mock — имитация, тренировка) — имитация собеседования с опытным ментором. В роли ментора может быть опытный HR или сильный технический эксперт.

Мок-интервью позволяет:
— Проверить соответствие своих навыков выбранной вакансии;
— Выявить пробелы, получить подробную обратную связь о своих хард- и софт-скиллах;
— Повысить уверенность за счёт тренировки.

❗️При прохождении мок-интервью у многих есть психологический барьер, который похож на языковой, когда человек учит иностранный язык, но боится на нем говорить. Его сложно преодолеть.

✍️Вот, причины, из-за которых наши ученики откладывают мок-интервью:
— Кажется, что пока нечего рассказать о себе и своем опыте;
— Кажется, что ещё не всё прочитал/изучил, пока не готов;
— Кажется, что мне это пока не нужно.

❗️Но, это только так КАЖЕТСЯ.

📌Основная цель мок-интервью — отрепетировать будущее собеседование — выстроить самопрезентацию, ответы на вопросы интервьюера, наработать шаблоны.

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

По каким критериям мы оцениваем мок-интервью

Мы выработали следующие подходы по прохождению мок-интервью:

1️⃣Серия из 3 мок-интервью для тех, кто идет в профессию с нуля
Почему 3 интервью? Минимально, именно столько нужно, чтобы «набить руку». Мы не загоняем никого в рамки и даем время на подготовку, анализ результатов и ошибок.

Процесс выстраиваем итерациями: прошёл первое мок-интервью → получил обратную связь → ушел готовиться и закрывать пробелы.

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

2️⃣Точечная подготовка к тех.интервью по конкретной вакансии

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

🗣Вот отзыв нашего выпускника, прошедшего мок-интервью:

«Было вообще отлично, Олег рассказал проще чем в документации и понимание было нормальное, поэтому сегодня уже прошел собес, везде все ответил вроде, по ощущениям прошло успешно.»


В Devman, вне зависимости от выбранного курса, любой студент может запросить прохождение мок-интервью. Не упускайте возможности, проходите подготовку и получайте привлекательные офферы!
6
🥳🥳🥳Запускаем распродажу мини-курсов с 20 апреля по 3 мая!

Длинные майские праздники — отличный повод начать что-то новое!

Дарим вам скидку 10% на все наши мини-курсы!

Преимущества мини-курсов:
👉 Поддержка куратора в личном чате, если не удается пройти урок;
👉 Код-ревью от действующего разработчика по каждому проекту;
👉 Гибкий график занятий — занимайтесь в любое время;
👉 Прокачивайте навыки точечно — только по необходимой теме;
👉 Можно начать занятия в любое время. Курс ваш навсегда.

⚡️Выбирайте мини-курсы со скидкой здесь или задавайте вопросы нам в Telegram!
Нейросети все еще туповаты или руки кривые?

Тему ИИ обсуждают все. Есть две крайности — ИИ тупой, ничего не может vs ИИ может/сможет заменить всех. Истина, как обычно, где-то посередине)

1️⃣ Бесплатные модели отстают в развитии от текущих на 1-2 года. При это функционально каждая следующая модель выходит все чаще и при этом многократно превосходит предыдущую. А с учетом острой конкуренции и при этом внедрении самих ИИ для разработки следующего поколения ИИ, то скорость прогресса и правда космическая!

2️⃣ ИИ уже в бизнесе, обучении, быту. Мир уже изменился.

3️⃣ Сейчас ограничения возможностей не в ИИ, а в процессах и в мышлении. Будешь пытаться работать с ними как с привычными алгоритмами или 1-к-1 воспроизводить процессы без ИИ = получится 💩

Если говорить про разработку кода, то нельзя загонять ИИ на жесткие рельсы — его сила в ассоциативности и генерации нового. Нужен жесткий алгоритм - напишите скрипт и выдайте ИИ-агенту как инструмент. Оставьте место нейросети для разумного креатива. Как и человеку — нужны критерии результата и контекст, но не инструкция "жми сюда - потом сюда - затем ...". Ведь все мы немного по-разному действуем, но можем при этом достигать сопоставимых результатов. А иногда и превосходить ожидания, найдя новый путь.

4⃣ Придется обзавестись целой пачкой инструментов, которые помогут отлаживать работу ИИ, тестировать. Говоря про эффективный вайбкодинг, то надо сосредоточиться на оптимизации код-ревью, сбора требований и ревью архитектуры прежде всего, потому что это теперь узкие горлышки процесса.

Даже если пишете контент с помощью ИИ, то инструменты все равно нужны. Можно найти варианты, где они уже готовы. MCP сервера для работы с гугл-таблицами, например, есть почти во всех платформах для агентов вроде ChatGPT.
🔥1
🤔 Давайте вместе разберемся, что не так с этим кодом?

from django.db import models

class Owner(models.Model):
full_name = models.CharField('ФИО владельца', max_length=200)
owner_phonenumber = models.CharField('Номер владельца', max_length=20)
owner_flats = models.ManyToManyField(
'Flat', verbose_name='Квартиры в собственности', related_name='owners')

def __str__(self):
return self.full_name


👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.

➡️Пишите в комментариях, что можно исправить!
Нет смысла в названиях полей дублировать название модели: в прикладном коде название поля и так всегда следует за названием модели. Высушите названия полей.

Код из нашего примера может выглядеть так:
from django.db import models

class Owner(models.Model):
full_name = models.CharField('ФИО владельца', max_length=200)
phonenumber = models.CharField('Номер владельца', max_length=20)
flats = models.ManyToManyField(
'Flat', verbose_name='Квартиры в собственности', related_name='owners')

def __str__(self):
return self.full_name
Самопрезентация: что и как рассказать о себе на собеседовании

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

Кажется, что рассказать о себе не так уж и сложно. Но, когда в рамках подготовки к тех. интервью, мы просим наших студентов рассказать о своем опыте, студенты отвечают: «Я не знаю, что говорить и что именно рассказать».

Как оценивает самопрезентацию работодатель:
— «Начинка» — что вы говорите о себе;
— «Обертка» — как вы говорите о себе. Это структура рассказа, то, как вы формулируете мысли, легко ли вас слушать.

Второй критерий не очевидный, но он важен для работодателя.

Вот, что может повлиять негативно:
— несвязная речь,
— отсутствие структуры в рассказе,
— неспособность сформулировать мысль кратко,
— скачки с темы на тему,
— отсутствие или потеря логики,
— возвращение к тому, о чем уже говорили,
— неожиданные паузы (потеря мысли, забытое слово),
— долгий, монотонный рассказ,
— слова-паразиты

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

✍️Как подготовить самопрезентацию?

1️⃣Составьте письменный рассказ о себе. Вы сможете наглядно увидеть проблемы в устной речи. В тексте проще составить структуру, логику и определить последовательность, убрать лишнее. Скорее всего, вы будете возвращаться к своему черновику не единожды и с каждым разом будете улучшать свой рассказ.

📌 Вот шпаргалка, если не знаете, что рассказать и как структурировать:
Вводная часть. Представьтесь, расскажите, как пришли в разработку/почему именно эта специальность интересна, про свой опыт в разработке, про последнее или текущее место работы;

Про проекты. На каких проектах работали (не только на последнем месте работы), с какой предметной областью (финтех, ритейл и т.д.), какие продукты разрабатывали, для кого (кто заказчик, конечный пользователь), команда проектов, стек проектов.
Если опыт большой, выберите самые релевантные проекты для компании, где вы проходите интервью;

Про задачи и личные достижения. Расскажите о своих задачах и достижениях, приведите примеры. Начните с крупных, значимых, интересных задач и переходите к более мелким. Делайте упор на то, где требования в вакансии пересекаются с вашим опытом, подчеркивайте, что вы умеете именно то, что требуется в вакансии и вашей будущей команде;

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

Заключение. Почему вы сейчас в поиске работы и что ищите: какие проекты, компанию, команду, как вы видите свое профессиональное развитие.

2️⃣Перечитайте вслух то, что у вас получилось. Оцените, насколько это «ваша речь», насколько вам комфортно говорить. Засеките время вашей устной презентации. Если у вас короткий HR-скрининг, ваша презентация не должна быть дольше 2-3 минут. Если полноценное интервью, не больше 5-6 минут. Можно составить 2 текста на разную длительность.

3️⃣ Внесите корректировки в текст и порепетируйте устно наедине. В начале можно выучить самопрезентацию, чтобы чувствовать себя увереннее на встрече. Достаточно быстро вы освоитесь, отточите текст и устная речь станет более связной и логичной. Распечатайте текст и держите под рукой как шпаргалку на удаленных интервью.

Эта методика поможет не теряться и при ответах на точечные вопросы интервьюера. Когда в вашей голове уже есть отрепетированные паттерны рассказа, вам гораздо легче сориентироваться и ответить на незапланированные вопросы.
👍8🔥21🥰1
⚡️Мы завели канал в Макс!
Подписывайтесь на нас по ссылке, чтобы не потеряться!

Канал в Телеграм мы продолжим вести. Также напоминаем, что у нас есть группа в VK.

Расскажите, пользуетесь ли Макс? Выбирайте ответ в опросе!
😢3
Пока нейросети захватывают мир, холивар на тему Django vs FastAPI так и не решен

Часто видим одну и ту же боль: у вас здоровенный монолит на Django, куча легаси или сложная админка. Но задачи по API становятся всё более капризными: нужна строгая типизация, авто-доки и нормальная валидация. DRF не предлагать — с ним еще хуже, чем без него, уже тошнит от сериализаторов-мутантов.

Переписывать всё на FastAPI (и плодить зоопарк микросервисов на ровном месте) — неоправданный суицид.

Что делать?
Затаскивайте в проект Django Ninja.

💥Главная киллер-фича — нативная дружба с Pydantic (а в последних версиях — и с Pydantic v2).

✍️Типовые проблемы → Решения Ninja:

Проблема: Данные приходят грязные, строки вместо чисел, даты в диком формате.
Ninja: Просто описываете модель Pydantic’ом. Всё. Автоматическая валидация, coercion типов и JSON Schema.

Проблема: Вложенные объекты валидировать больно.
Ninja: Схемы вкладываются как матрёшки, глубоко и без боли.

Проблема: OpenAPI/Swagger документация вечно устаревшая.
Ninja: Доки генерируются автоматически из ваших type hints. Код = Документация. Никакой магии и декораторов-уродцев.

⚔️Django Ninja vs FastAPI: война, которой нет

Зачем Ninja, если есть FastAPI и SQLAlchemy?. Ответ прост: экосистема и реальный мир.

Когда вы выбираете Ninja вместо FastAPI:

Монолит Django:
У вас уже есть модели Django ORM, админка, система аутентификации. Ninja просто садится сверху как современный API-слой, не требуя переписывать бизнес-логику.

Сложная аутентификация: Бесшовная интеграция с сессиями Django, куками и встроенной User моделью. Не нужно городить велосипеды на JWT, если используются сессии.

Синхронность:
Django ORM в основе своей синхронна. FastAPI с async SQLAlchemy требует дисциплины и легко ловит «зеленые потоки» на продакшене. Ninja работает в родной среде без сюрпризов.

Батарейки в комплекте: Кэширование, очереди (Celery), ORM с Signals — всё это стабильно работает в Django и ломается, если начать переезжать фрагментами.

🚀 Для сложных веб-сервисов: профит в скорости разработки
Вам не нужно спорить с тимлидом о том, какой ASGI сервер выбрать или как подружить Alembic с продакшен-миграциями. У вас уже есть панель администратора на сотню таблиц — просто навесьте на неё Ninja-эндпоинты и получайте JSON со скоростью FastAPI. Да, он реально быстрый, по бенчмаркам не уступает, а где-то и обгоняет благодаря оптимизациям.

📝 Синтаксис, который вы полюбите:
from ninja import NinjaAPI, Schema

class ItemIn(Schema):
name: str
price: float
quantity: int = 1 # дефолтные значения!

api = NinjaAPI()

@api.post("/items")
def create(request, payload: ItemIn):
# Поля payload.name, payload.price уже провалидированы
return {"success": True, "id": 1}

‼️Риски

Основной django-ninja — стабильный продукт, который прекрасно работает. С 2024 года активность единственного мейнтейнера Виталия Кучерявого в основном репозитории по код-ревью и слиянию pull request'ов почти остановилась. На GitHub накопились десятки PR, включая исправления критических ошибок и улучшения производительности.

В 2025 году появились форки батарейки. Если в процессе работы вы упретесь в баг, имейте в виду, что есть форк  Django Shinobi как более оперативно обновляемая альтернатива в той же экосистеме.

Вердикт: Если Django для вас — готовый авианосец, а не помеха, Django Ninja превращает его в современный быстроходный катер. Это не «замена FastAPI ради замены», а эволюционный скачок для экосистемы Django.

✍️Мы уже дискутировали на эту тему в видео-формате. Если не смотрели, то вот ссылки:
Ютуб
Рутуб
VK
🔥5
Как внедрить ИИ и получить прибыль, а не убытки?

В апреле мы выступали для бизнес-клуба «Гермес»! Собрали главные тезисы и кейсы из выступления в статью!

➡️ Читайте и делитесь своими кейсами использования ИИ в комментариях!
⚡️Обновили урок из мини-курса «API веб-сервисов»

Урок 5 из модуля «API веб-сервисов» долгое время был одним из самых любимых и популярных. Ученик парсил данные по API и прикидывал какую зарплату станет получать после курса на HH.ru и паре других сервисов.

И сейчас это более чем актуально, ведь около 67–75% компаний и рекрутеров используют технологии искусственного интеллекта и автоматизированные ATS-системы (Applicant Tracking Systems) для первичного отбора и скрининга резюме.

Уже видели мемы про разговор ИИ-рекрутера и ИИ-кандидата? ИИ пишет резюме, ИИ фильтрует резюме. А API позволяет легко подключить бота, парсить вакансии и откликаться на них. В итоге количество откликов зашкаливает, просмотреть всех в принципе невозможно, найм превращается в безумие!

❗️HH в конце прошлого года принял важное решениезакрыть публичное API, чтобы снизить накал страстей. По факту API работал до апреля текущего года. И наш урок тоже.

Нам пришлось все-таки искать другую площадку, на которой можно парсить зарплаты. Обновили урок «Прикиньте будущую зарплату»hh.ru заменен на habr.career. Навыки по работе с API те же, но размах не тот, конечно.

➡️ А вы проходили мини-курс API веб-сервисов? Какой ваш любимый урок? Делитесь в комментариях!
🤔 Давайте вместе разберемся, что не так с этим кодом?

owners = flat.owner.all()


👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.

➡️Пишите в комментариях, что можно исправить!

Мы в Макс
Неправильная форма числа ведёт к обманутым ожиданиям и ошибкам. Если related_name в ManyToManyField указан в единственном числе, то запросы с его участием будут выглядеть странно и неожиданно.

Код из нашего примера может выглядеть так:

owners = flat.owners.all()


💙Спасибо вам, что делились своими вариантами в комментариях!

Мы в Макс
👍2