Как развернуть автоматизацию тестирования API за неделю?
Сейчас расскажу, как моя жена развернула автоматизацию на проекте за неделю.
У нас семья айтишников, и было бы глупо полагать, что она не имеет свободного доступа к моим курсам.
Я не люблю помогать)))
Это высказывание не совсем вяжется с тем, что происходит на самом деле. Моя телега обычно трещит от вопросов, и я всегда отвечаю. Просто я не люблю быть чатом GPT и просто говорить, как тут сделать. Я всегда вместо "рыбы" пытаюсь дать "удочку".
Почему?
Да потому, что я очень ленив. Мне проще один раз научить человека, чем он будет приходить миллион раз с типовыми вопросами.
Примерно так же было, когда с таким же запросом ко мне пришла моя жена. Как мне развернуть автоматизацию у себя на проекте?
Я сказал: "Вот курс — смотри." Наверное, можно было сесть, все показать и рассказать, но зачем, если я уже снял видео? ))
Для нее это был жуткий марафон. С утра до ночи она сидела и все пробовала. И вот спустя неделю у нее уже работает pipeline, прикручен Allure, логи, степы, уведомления о прохождении сыпятся в телегу, и при падении могут тэгать нужных людей.
Как вы думаете, это быстро, учитывая, что человек до этого ни разу не писал код? 🤔
ЭТО ПИЗДЕЦ КАК БЫСТРО! 💥
А схема получилась проста: большую часть времени занимает написание клиентов, поэтому она их просто генерирует, а дальше заполнение сценария не сложнее, чем выполнять то же самое в Swagger или Postman.
Получился такой флоу:
К концу второй недели она уже покрыла 90% сервиса смоками — 88 автотестов, и это не статус-код 200, а реальные бизнесовые проверки с хождением по разным сервисам.
Есть ли тут подвох?
Да, есть.
Эти инструменты я даю только на ступени professional. Можно будет остановиться только на их использовании, и это уже ооооочень сильно сократит время. Но главная фишка этого обучения не в этом, а в том, что я буду давать именно удочку. Мы сами научимся писать генераторы кода, чтобы вы могли писать свой кастом под свой проект или дорабатывать инструмент при переходе на другой проект.
Вчера я тестировал инструмент, который будет итогом обучения professional, и это очень круто! 😍
Я думаю, вам понравится тоже.
Приглашаю на обучение)
Сейчас расскажу, как моя жена развернула автоматизацию на проекте за неделю.
У нас семья айтишников, и было бы глупо полагать, что она не имеет свободного доступа к моим курсам.
Я не люблю помогать)))
Это высказывание не совсем вяжется с тем, что происходит на самом деле. Моя телега обычно трещит от вопросов, и я всегда отвечаю. Просто я не люблю быть чатом GPT и просто говорить, как тут сделать. Я всегда вместо "рыбы" пытаюсь дать "удочку".
Почему?
Да потому, что я очень ленив. Мне проще один раз научить человека, чем он будет приходить миллион раз с типовыми вопросами.
Примерно так же было, когда с таким же запросом ко мне пришла моя жена. Как мне развернуть автоматизацию у себя на проекте?
Я сказал: "Вот курс — смотри." Наверное, можно было сесть, все показать и рассказать, но зачем, если я уже снял видео? ))
Для нее это был жуткий марафон. С утра до ночи она сидела и все пробовала. И вот спустя неделю у нее уже работает pipeline, прикручен Allure, логи, степы, уведомления о прохождении сыпятся в телегу, и при падении могут тэгать нужных людей.
Как вы думаете, это быстро, учитывая, что человек до этого ни разу не писал код? 🤔
ЭТО ПИЗДЕЦ КАК БЫСТРО! 💥
А схема получилась проста: большую часть времени занимает написание клиентов, поэтому она их просто генерирует, а дальше заполнение сценария не сложнее, чем выполнять то же самое в Swagger или Postman.
Получился такой флоу:
генерирует клиент -> делает фикстуру -> пишет тест.К концу второй недели она уже покрыла 90% сервиса смоками — 88 автотестов, и это не статус-код 200, а реальные бизнесовые проверки с хождением по разным сервисам.
Есть ли тут подвох?
Да, есть.
Эти инструменты я даю только на ступени professional. Можно будет остановиться только на их использовании, и это уже ооооочень сильно сократит время. Но главная фишка этого обучения не в этом, а в том, что я буду давать именно удочку. Мы сами научимся писать генераторы кода, чтобы вы могли писать свой кастом под свой проект или дорабатывать инструмент при переходе на другой проект.
Вчера я тестировал инструмент, который будет итогом обучения professional, и это очень круто! 😍
Я думаю, вам понравится тоже.
Приглашаю на обучение)
💩75
Привет, друзья!
Вчера на вебинаре прошли весь путь – от базовых вещей до архитектуры полноценного фреймворка. Написали достаточно кода, чтобы понять, как выглядит по-настоящему сильное решение.
Я не люблю воду на вебинарах, поэтому сделал его максимально прикладным и техническим – только практика, только хардкор.
Что выяснили:
- На написание одного хорошего автотеста (с учетом опыта) уходит ~1,5 часа
- Но это без учета сопровождения – а там могут быть бесконечные правки и доработки
- С правильными инструментами тот же тест пишется за 5 минут (да, в 18 раз быстрее!)
90 минут против 5 – и это без учета времени на настройку линтеров, CI/CD и прочей инфраструктуры.
Это не просто экономия времени – это возможность:
✅ Развиваться вместо бесконечного фикса багов
✅ Делать сложные задачи легко
✅ Стать настоящим Senior’ом, а не просто "поставить галочку" в резюме
Пока другие крутят "опыт" и продают вымышленные успехи, вы сможете:
🔹 Писать чисто, быстро и профессионально
🔹 Работать с реальной технической базой (а не поверхностными знаниями)
🔹 Сократить не только свои трудозатраты, но и бюджет компании
Мои тренинги я считаю лучшими на рынке – и это не просто слова. Многие студенты после них растут в 2-3 раза быстрее коллег.
Хочешь так же? Присоединяйся – научу!
Старт уже в понедельник 7 апреля!
А если пропустил вебинар – обязательно посмотри запись, пока она доступна. Это сильный рывок даже для тех, кто уже в теме.
P.S. Разница в 18 раз – это не магия. Это знание того, как делать правильно. Если хочешь таких же результатов – пиши, расскажу подробнее. 💪
Описание всех тренингов можно найти тут
Вчера на вебинаре прошли весь путь – от базовых вещей до архитектуры полноценного фреймворка. Написали достаточно кода, чтобы понять, как выглядит по-настоящему сильное решение.
Я не люблю воду на вебинарах, поэтому сделал его максимально прикладным и техническим – только практика, только хардкор.
Что выяснили:
- На написание одного хорошего автотеста (с учетом опыта) уходит ~1,5 часа
- Но это без учета сопровождения – а там могут быть бесконечные правки и доработки
- С правильными инструментами тот же тест пишется за 5 минут (да, в 18 раз быстрее!)
90 минут против 5 – и это без учета времени на настройку линтеров, CI/CD и прочей инфраструктуры.
Это не просто экономия времени – это возможность:
✅ Развиваться вместо бесконечного фикса багов
✅ Делать сложные задачи легко
✅ Стать настоящим Senior’ом, а не просто "поставить галочку" в резюме
Пока другие крутят "опыт" и продают вымышленные успехи, вы сможете:
🔹 Писать чисто, быстро и профессионально
🔹 Работать с реальной технической базой (а не поверхностными знаниями)
🔹 Сократить не только свои трудозатраты, но и бюджет компании
Мои тренинги я считаю лучшими на рынке – и это не просто слова. Многие студенты после них растут в 2-3 раза быстрее коллег.
Хочешь так же? Присоединяйся – научу!
Старт уже в понедельник 7 апреля!
А если пропустил вебинар – обязательно посмотри запись, пока она доступна. Это сильный рывок даже для тех, кто уже в теме.
P.S. Разница в 18 раз – это не магия. Это знание того, как делать правильно. Если хочешь таких же результатов – пиши, расскажу подробнее. 💪
Описание всех тренингов можно найти тут
💩59
Media is too big
VIEW IN TELEGRAM
🚀 Открыл набор на потоки REST API Advanced и Professional!
Если ты автоматизатор, и до сих пор не с этими навыками — ты просто теряешь в деньгах.
Выкладываю один из самых интересных моментов прошедшего вебинара, где менее чем за минуту ⏱️ мы разворачиваем целый фреймворк!
📊 И немного про ступени.
🎓 Advanced — это не “чуть сложнее”, это переход на уровень, где:
- ты больше не “дописываешь тесты” — ты строишь фреймворк, и делаешь это правильно
- ты шаришь в микросервисной архитектуре, авторизации, логах, отчётах и Telegram-нотификациях
- ты понимаешь, как устроен CI/CD и как тесты встраиваются в процесс поставки продукта.
- можешь дать оценку покрытия своего сервиса автотестами.
🏆 Professional — для тех, кто хочет делать так, как делают в top-компаниях:
- асинхронность, CLIs, генерация кода и фикстур, тестов, проектные шаблоны, управление зависимостями и качество кода на уровне команды
- ты не просто пишешь код — ты делаешь инструменты, которые экономят часы другим
- после этого курса ты больше не “один из”, ты становишься носителем экспертизы.
Как вы знаете я работаю и с юридическими лицами.
Почему стоит согласовать обучение с работодателем прямо сейчас:
✅ Это не теория — ты сразу начнёшь внедрять полезные штуки в проект.
✅ Можно частично или полностью компенсировать курс через обучение от компании.
✅ Это прямой вклад в эффективность команды, стабильность автотестов и ускорение поставок.
Почему надо шевелиться:
🔹 Поток стартует скоро — 12 мая.
🔹 Кол-во мест ограничено, чтобы каждому было внимание.
🔹 Если ты от компании, нужно успеть согласовать нужные документы.
🔹 В следующем квартале ты или уже покажешь рост, или опять скажешь “вот в следующем точно пройду”.
Готов? Тогда выбирай курс и вписывайся:
• 🎓 Advanced
• 🏆 Professional
И если сомневаешься, с какого лучше начать — напиши, помогу определиться. 💬
Если ты автоматизатор, и до сих пор не с этими навыками — ты просто теряешь в деньгах.
Выкладываю один из самых интересных моментов прошедшего вебинара, где менее чем за минуту ⏱️ мы разворачиваем целый фреймворк!
📊 И немного про ступени.
🎓 Advanced — это не “чуть сложнее”, это переход на уровень, где:
- ты больше не “дописываешь тесты” — ты строишь фреймворк, и делаешь это правильно
- ты шаришь в микросервисной архитектуре, авторизации, логах, отчётах и Telegram-нотификациях
- ты понимаешь, как устроен CI/CD и как тесты встраиваются в процесс поставки продукта.
- можешь дать оценку покрытия своего сервиса автотестами.
🏆 Professional — для тех, кто хочет делать так, как делают в top-компаниях:
- асинхронность, CLIs, генерация кода и фикстур, тестов, проектные шаблоны, управление зависимостями и качество кода на уровне команды
- ты не просто пишешь код — ты делаешь инструменты, которые экономят часы другим
- после этого курса ты больше не “один из”, ты становишься носителем экспертизы.
Как вы знаете я работаю и с юридическими лицами.
Почему стоит согласовать обучение с работодателем прямо сейчас:
✅ Это не теория — ты сразу начнёшь внедрять полезные штуки в проект.
✅ Можно частично или полностью компенсировать курс через обучение от компании.
✅ Это прямой вклад в эффективность команды, стабильность автотестов и ускорение поставок.
Почему надо шевелиться:
🔹 Поток стартует скоро — 12 мая.
🔹 Кол-во мест ограничено, чтобы каждому было внимание.
🔹 Если ты от компании, нужно успеть согласовать нужные документы.
🔹 В следующем квартале ты или уже покажешь рост, или опять скажешь “вот в следующем точно пройду”.
Готов? Тогда выбирай курс и вписывайся:
• 🎓 Advanced
• 🏆 Professional
И если сомневаешься, с какого лучше начать — напиши, помогу определиться. 💬
💩84🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Отзыв на курс Advanced, запоздалый немного, но вот только созрел)
Когда отзыв приходит не сразу — это тоже хорошо.
Значит, человек не просто посмотрел курс, а пожил с ним.
Вот кусочек одного такого отзыва на курс Advanced:
«Сейчас пробую свои собственные проекты писать по этой же структуре и все реально легко работает, прописал основные моменты и дальше остается только описывать апишку и шаги тестов, все работает красиво с первых дней)».
Курс отлежался в голове, прошёл через пару шишек, и вдруг всё встало на свои места.
Читаемость, структура, простота — это не случайно.
Весь курс построен так, чтобы после него можно было не “переизобретать”, а спокойно писать API-тесты на понятной архитектуре, без боли и гадания, «как бы тут лучше».
И самое приятное — когда люди возвращаются за следующей ступенью.
Значит, не просто зашло, а стало частью рабочего процесса.
Спасибо за отзыв — и жду на 🏆 про-уровне, когда придёт время.
Полный отзыв можно прочитать тут.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩57🔥11❤1
“Ты не хуже, просто у тебя не было нужного тренера.”
Недавно мой ученик написал:
«К нам пришёл человек с 4 годами опыта в автотестах — и он знает ровно столько же, сколько я.»
Он добавил:
«я хотел сказал, что с таким учителем как ты я развил потенциал и опыт меньше чем за год.»
Это не про меня. Это про силу правильного подхода.
Про то, как практика, структура, и обучение дают больше, чем 4 года «просто работы».
Что даёт результат быстрее опыта в вакууме?
• Фокус не на инструментах, а на понимании архитектуры
• Практика, приближённая к реальным задачам на проекте
• Преподаватель, который объясняет
Если ты:
• Хочешь не просто «писать тесты», а строить фреймворки
• Чувствуешь, что время идёт, а прогресса нет
• Или уже в тестировании, но хочешь расти как инженер —
присоединяйся.
Ты не отстаёшь. У тебя просто ещё не было правильной траектории.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Недавно мой ученик написал:
«К нам пришёл человек с 4 годами опыта в автотестах — и он знает ровно столько же, сколько я.»
Он добавил:
«я хотел сказал, что с таким учителем как ты я развил потенциал и опыт меньше чем за год.»
Это не про меня. Это про силу правильного подхода.
Про то, как практика, структура, и обучение дают больше, чем 4 года «просто работы».
Что даёт результат быстрее опыта в вакууме?
• Фокус не на инструментах, а на понимании архитектуры
• Практика, приближённая к реальным задачам на проекте
• Преподаватель, который объясняет
Если ты:
• Хочешь не просто «писать тесты», а строить фреймворки
• Чувствуешь, что время идёт, а прогресса нет
• Или уже в тестировании, но хочешь расти как инженер —
присоединяйся.
Ты не отстаёшь. У тебя просто ещё не было правильной траектории.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩63🔥7❤5💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Fuzzing тестирование API
В этом канале мы с вами рассматриваем преимущественно темы автоматизации тестирования API.
У меня все никак не доходили руки рассказать про инструмент, который вы возможно даже использовали и который занимается fuzzing тестированием.
🔍 Что такое фаззинг-тестирование?
Фаззинг (fuzzing) — это метод автоматического тестирования, при котором программа проверяется на уязвимости и ошибки с помощью передачи случайных или полу-случайных данных на вход. Цель — найти краш, утечку памяти, неожиданное поведение или уязвимости безопасности.
🧩 Виды фаззинга:
- Мутационный фаззинг — изменяет существующие входные данные (например, искажая корректный JSON).
- Генеративный фаззинг — создает данные с нуля на основе спецификации (например, OpenAPI/Swagger).
А теперь собственно про сам инструмент.
⚡️ Schemathesis — фаззер для API
Schemathesis — это инструмент для тестирования API, основанный на OpenAPI/Swagger-схеме сервиса. Он автоматически генерирует тестовые сценарии и "обстреливает" ваш API некорректными или неожиданными данными, чтобы выявить:
- Ошибки сервера (500 Internal Server Error)
- Уязвимости (SQL-инъекции, XSS)
- Проблемы валидации
- Неожиданное поведение
🚀 Как работает?
1. Берет схему OpenAPI/Swagger.
2. Генерирует корректные и некорректные запросы на основе property based testing.
3. Отправляет их в API и анализирует ответы.
🔧 Пример использования:
Или с кастомными параметрами:
💡 Зачем это нужно?
- Находить баги до продакшена.
- Улучшать отказоустойчивость API.
- Автоматизировать тестирование безопасности.
На практике имеет смысл использовать скорее если вы вылизываете свое API и у вас есть ресурсы, чтобы упороться, кривые схемы будут порождать огромное количество ошибок которые с высокой долей вероятности никто не будет править.
Инструмент безумно простой в использовании и очень эффективный, в целом можно внедрить отдельной не блокирующей гитлаб джобой с заделом на будущее. Кстати недавно обнаружил, что он еще умеет в GraphQL
Думаю добавлю урок с этим инструментом в курс Advanced, лишним не будет)
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
В этом канале мы с вами рассматриваем преимущественно темы автоматизации тестирования API.
У меня все никак не доходили руки рассказать про инструмент, который вы возможно даже использовали и который занимается fuzzing тестированием.
🔍 Что такое фаззинг-тестирование?
Фаззинг (fuzzing) — это метод автоматического тестирования, при котором программа проверяется на уязвимости и ошибки с помощью передачи случайных или полу-случайных данных на вход. Цель — найти краш, утечку памяти, неожиданное поведение или уязвимости безопасности.
🧩 Виды фаззинга:
- Мутационный фаззинг — изменяет существующие входные данные (например, искажая корректный JSON).
- Генеративный фаззинг — создает данные с нуля на основе спецификации (например, OpenAPI/Swagger).
А теперь собственно про сам инструмент.
⚡️ Schemathesis — фаззер для API
Schemathesis — это инструмент для тестирования API, основанный на OpenAPI/Swagger-схеме сервиса. Он автоматически генерирует тестовые сценарии и "обстреливает" ваш API некорректными или неожиданными данными, чтобы выявить:
- Ошибки сервера (500 Internal Server Error)
- Уязвимости (SQL-инъекции, XSS)
- Проблемы валидации
- Неожиданное поведение
🚀 Как работает?
1. Берет схему OpenAPI/Swagger.
2. Генерирует корректные и некорректные запросы на основе property based testing.
3. Отправляет их в API и анализирует ответы.
🔧 Пример использования:
pip install schemathesis
schemathesis run https://example.com/openapi.json
Или с кастомными параметрами:
schemathesis run --checks all --max-response-time 5000 http://api.example.com/schema.json
💡 Зачем это нужно?
- Находить баги до продакшена.
- Улучшать отказоустойчивость API.
- Автоматизировать тестирование безопасности.
На практике имеет смысл использовать скорее если вы вылизываете свое API и у вас есть ресурсы, чтобы упороться, кривые схемы будут порождать огромное количество ошибок которые с высокой долей вероятности никто не будет править.
Инструмент безумно простой в использовании и очень эффективный, в целом можно внедрить отдельной не блокирующей гитлаб джобой с заделом на будущее. Кстати недавно обнаружил, что он еще умеет в GraphQL
Думаю добавлю урок с этим инструментом в курс Advanced, лишним не будет)
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩53🔥14👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет!
Поздравляю с прошедшими майскими праздниками, но.
Майские - закончились. Время включаться.
Шашлыки -были. Отдых - был.
Теперь - время расти как инженер.
Сегодня стартует новый поток курса по API-автотестированию.
И это последний день, когда можно впрыгнуть в этот поток.
После этого набор закрываю.
Если ты хочешь:
- разбираться в архитектуре
- писать уверенный продакшн-код
- не просто “ковыряться в Postman”, а строить фреймворки
Переходи по ссылке и выбирай нужный модуль.
Успей сегодня.
Работаем.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Поздравляю с прошедшими майскими праздниками, но.
Майские - закончились. Время включаться.
Шашлыки -были. Отдых - был.
Теперь - время расти как инженер.
Сегодня стартует новый поток курса по API-автотестированию.
И это последний день, когда можно впрыгнуть в этот поток.
После этого набор закрываю.
Если ты хочешь:
- разбираться в архитектуре
- писать уверенный продакшн-код
- не просто “ковыряться в Postman”, а строить фреймворки
Переходи по ссылке и выбирай нужный модуль.
Успей сегодня.
Работаем.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩53🔥4❤1
“Если оно ходит как утка… 🦆” — питон не требует паспорта.
А вы знали, что Python поддерживает несколько видов типизации? 🤔
Например:
- 🦆 Утиная
- 🦢 Гусиная
- 📜 Статическая утиная типизация
- 🔍 Статическая типизация
В этом посте поговорим про ту типизацию, которая изначально была в Python — Утиную.
Одно время я все никак не мог понять, что это такое. Если вы уже в теме — отлично! Если нет — сейчас расскажу.
Python — язык про поведение, а не про формальности.
Здесь не так важно, от какого класса ты наследуешься.
Важно, что ты умеешь делать!
Пример:
Представь, тебе нужна "последовательность": список, массив, колода карт — не суть.
Он просто попробует вызвать:
-
-
Если получилось — значит, ты "последовательность". ✅
🔎 Обратите внимание: этот класс ни от кого не наследуется!
Но его можно:
- перебирать в цикле,
- брать срезы,
- передавать в `sorted()`, `random.choice()` и т.д.
Потому что он ведёт себя как список!
То есть тебе просто нужно реализовать нужные методы — и этого достаточно.
🦆 Что такое утиная типизация?
“Если что-то ходит как утка, крякает как утка — значит, это утка.”
Такой подход даёт гибкость:
- Можно писать адаптивный код без лишней иерархии.
- Главное — понимать, какие "протоколы поведения" ждёт от тебя Python.
Хочешь разбираться в таких концепциях глубже?
Учись читать поведение, а не только сигнатуры!
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
А вы знали, что Python поддерживает несколько видов типизации? 🤔
Например:
- 🦆 Утиная
- 🦢 Гусиная
- 📜 Статическая утиная типизация
- 🔍 Статическая типизация
В этом посте поговорим про ту типизацию, которая изначально была в Python — Утиную.
Одно время я все никак не мог понять, что это такое. Если вы уже в теме — отлично! Если нет — сейчас расскажу.
Python — язык про поведение, а не про формальности.
Здесь не так важно, от какого класса ты наследуешься.
Важно, что ты умеешь делать!
Пример:
Представь, тебе нужна "последовательность": список, массив, колода карт — не суть.
Python не будет проверять, наследуешься ли ты от `list` или `collections.abc.Sequence`.
Он просто попробует вызвать:
-
__len__()-
__getitem__()Если получилось — значит, ты "последовательность". ✅
class FrenchDeck:
def __init__(self):
self._cards = []
def __len__(self):
return len(self._cards)
def __getitem__(self, pos):
return self._cards[pos]
🔎 Обратите внимание: этот класс ни от кого не наследуется!
Но его можно:
- перебирать в цикле,
- брать срезы,
- передавать в `sorted()`, `random.choice()` и т.д.
Потому что он ведёт себя как список!
То есть тебе просто нужно реализовать нужные методы — и этого достаточно.
🦆 Что такое утиная типизация?
“Если что-то ходит как утка, крякает как утка — значит, это утка.”
Такой подход даёт гибкость:
- Можно писать адаптивный код без лишней иерархии.
- Главное — понимать, какие "протоколы поведения" ждёт от тебя Python.
Хочешь разбираться в таких концепциях глубже?
Учись читать поведение, а не только сигнатуры!
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩77🔥7👍5❤3🆒1
Гусиная типизация — когда утки 🦆 недостаточно
(а интерфейс всё-таки нужен)
В Python есть утиная типизация — “если выглядит как утка и крякает как утка — это утка”.
Это удобно. Но не всегда безопасно.
Иногда нужно чётко сказать:
“Я реализую этот интерфейс” — и получить защиту на уровне кода.
Вот тут появляется гусиная типизация 🦢.
Что это такое?
Да, в Python нет ключевого слова interface, но есть модуль abc, который позволяет создать интерфейс через абстрактный класс.
Пример:
Теперь можно сделать проверку:
Хотя EmailSender реализует метод send, он не унаследован от MessageSender.
Python этого не “засчитает” — и это отличие от утиной типизации.
❓ Для чего это нужно?
- Когда важно явно указать, что ты реализуешь интерфейс
- Когда нужна статическая проверка типов (например, через mypy)
- Когда hasattr() уже не спасает и хочется чёткости и надёжности
✔ Коротко:
- Утиная типизация — поведение важнее наследования
- Гусиная типизация — поведение + явная декларация через ABC
- Поддерживается isinstance(), issubclass() и статическими анализаторами
В Python можно писать и гибко, и строго — выбор за тобой.
Понимание обеих моделей делает твой код читаемым, надёжным и масштабируемым.
В глоссарии Python есть статья посвященная абстрактным базовым классам.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
(а интерфейс всё-таки нужен)
В Python есть утиная типизация — “если выглядит как утка и крякает как утка — это утка”.
Это удобно. Но не всегда безопасно.
Название «гусиная типизация» возникло как противопоставление «утиной»: если утиная типизация в Python ориентируется на поведение объекта (если у него есть нужные методы — значит, подходит), то гусиная делает акцент на происхождение — как в биологии, где гусей и уток раньше классифицировали по внешнему сходству, но позже стали объединять по общим предкам (кладистика). Аналогично в программировании: два класса могут иметь одинаковые методы (например, draw()), но с разным смыслом — и потому они не обязательно взаимозаменяемы. Гусиная типизация требует явного указания интерфейса через абстрактные базовые классы (ABC) — чтобы быть уверенным, что объекты действительно «родом» от нужного интерфейса, а не просто «выглядят похоже».
Иногда нужно чётко сказать:
“Я реализую этот интерфейс” — и получить защиту на уровне кода.
Вот тут появляется гусиная типизация 🦢.
Что это такое?
Гусиная типизация — это подход к проверке типов во время выполнения, основанный на использовании абстрактных базовых классов (ABC).
Да, в Python нет ключевого слова interface, но есть модуль abc, который позволяет создать интерфейс через абстрактный класс.
Пример:
from abc import ABC, abstractmethod
class MessageSender(ABC):
@abstractmethod
def send(self, message: str) -> None:
pass
class TelegramSender(MessageSender):
def send(self, message: str) -> None:
print(f"Отправлено в ТГ: {message}")
class EmailSender:
def send(self, message: str) -> None:
print(f"Письмо: {message}")
Теперь можно сделать проверку:
isinstance(TelegramSender(), MessageSender) # True
isinstance(EmailSender(), MessageSender) # False
Хотя EmailSender реализует метод send, он не унаследован от MessageSender.
Python этого не “засчитает” — и это отличие от утиной типизации.
- Когда важно явно указать, что ты реализуешь интерфейс
- Когда нужна статическая проверка типов (например, через mypy)
- Когда hasattr() уже не спасает и хочется чёткости и надёжности
- Утиная типизация — поведение важнее наследования
- Гусиная типизация — поведение + явная декларация через ABC
- Поддерживается isinstance(), issubclass() и статическими анализаторами
В Python можно писать и гибко, и строго — выбор за тобой.
Понимание обеих моделей делает твой код читаемым, надёжным и масштабируемым.
В глоссарии Python есть статья посвященная абстрактным базовым классам.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩80👍5🔥4
Статическая утиная типизация — когда нужно понять, что это утка, ещё до запуска.
Мы уже с вами узнали:
• Утиная типизация — “если выглядит как утка и крякает как утка — это утка”
• Гусиная типизация — “эта утка официально записана в реестре как утка” (через ABC)
Теперь познакомимся с третьим подходом — статической утиной типизацией через Protocol.
Что это такое❓
Protocol из модуля typing позволяет описать интерфейс по ожидаемому поведению — без наследования.
Если у объекта есть нужные методы — он считается совместимым.
Обрати внимание: FileWriter не наследует Writer, но типовые анализаторы (mypy, pyright) поймут — всё ок.
Потому что поведение совпадает.
Зачем это нужно❓
• Статическая проверка интерфейсов до запуска
• Без isinstance() и жёсткой иерархии
• Отлично подходит для тестов, моков
• Совместим с mypy, Pyright, Pylance и другими инструментами
• С полной свободой: хочешь — наследуй, хочешь — просто реализуй нужные методы
Утиная типизация была про “смотрим, что умеет объект”.
Статическая утиная — про “давайте это ещё и проверим заранее”.
✔️ Коротко:
• Protocol — это интерфейс без наследования
• Работает по принципу “если поведение совпадает — значит, подходит”
• Используется для статической проверки типов
• Совместим с mypy, Pyright и другими анализаторами
Можем ли мы проверить, что утка это утка используя протокол в рантайме?
Да например так:
🧠 Статическая утиная типизация помогает писать гибкий, но при этом безопасный код.
Это некий баланс между свободой и контролем.
Более подробно про протоколы можно почитать тут.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Мы уже с вами узнали:
• Утиная типизация — “если выглядит как утка и крякает как утка — это утка”
• Гусиная типизация — “эта утка официально записана в реестре как утка” (через ABC)
Теперь познакомимся с третьим подходом — статической утиной типизацией через Protocol.
Что это такое
Protocol из модуля typing позволяет описать интерфейс по ожидаемому поведению — без наследования.
Если у объекта есть нужные методы — он считается совместимым.
from typing import Protocol
class Writer(Protocol):
def write(self, data: str) -> None: ...
class FileWriter:
def write(self, data: str) -> None:
print(f"Пишу: {data}")
def save(w: Writer, msg: str):
w.write(msg)
save(FileWriter(), "Привет!")
Обрати внимание: FileWriter не наследует Writer, но типовые анализаторы (mypy, pyright) поймут — всё ок.
Потому что поведение совпадает.
Зачем это нужно
• Статическая проверка интерфейсов до запуска
• Без isinstance() и жёсткой иерархии
• Отлично подходит для тестов, моков
• Совместим с mypy, Pyright, Pylance и другими инструментами
• С полной свободой: хочешь — наследуй, хочешь — просто реализуй нужные методы
Утиная типизация была про “смотрим, что умеет объект”.
Статическая утиная — про “давайте это ещё и проверим заранее”.
• Protocol — это интерфейс без наследования
• Работает по принципу “если поведение совпадает — значит, подходит”
• Используется для статической проверки типов
• Совместим с mypy, Pyright и другими анализаторами
Можем ли мы проверить, что утка это утка используя протокол в рантайме?
Да например так:
from typing import Protocol, runtime_checkable
@runtime_checkable
class Writer(Protocol):
def write(self, data: str) -> None: ...
class FileWriter:
def write(self, data: str) -> None:
print("Пишу:", data)
fw = FileWriter()
print(isinstance(fw, Writer)) # True
🧠 Статическая утиная типизация помогает писать гибкий, но при этом безопасный код.
Это некий баланс между свободой и контролем.
Более подробно про протоколы можно почитать тут.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩57❤3👍2
Впереди выходные, почему бы не уделить это время тюнингу своего гитхаб аккаунта)
💻 Как оформить GitHub-профиль, чтобы он работал на вас.
Если вы пишете код, GitHub — это не просто хранилище кода. Это ваша публичная визитка. Грамотно оформленный профиль помогает:
🔹 Привлечь внимание рекрутеров и заказчиков
🔹 Выделиться среди других кандидатов
🔹 Показывает, что вы заботитесь о деталях и уважаете своих коллег по цеху
🔹 Да и в целом даже самому приятно смотреть на красивый профиль.
📌 Что можно сделать:
– Создать README для профиля с краткой информацией о себе
– Выделить ключевые проекты и красиво их оформить
– Добавить бейджи, статистику и немного стиля
– Подчеркнуть свою активность, навыки и интересы
Сделать это довольно просто, достаточно просто создать репозиторий с названием своего GH профиля и положить туда README.
👀 Нашёл пару отличных гайдов, которые помогут навести порядок и сделать профиль действительно заметным:
📄 Как информативно оформить профиль на GitHub?
📄 Оформляем README-файл профиля на GitHub
Но сильно не увлекайтесь, слишком много свистелок перделок тоже не есть хорошо))
Если давно хотели прокачать свой профиль, но откладывали — самое время ✌️
А если уже что-то сделали — кидайте ссылки, интересно посмотреть!
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
💻 Как оформить GitHub-профиль, чтобы он работал на вас.
Если вы пишете код, GitHub — это не просто хранилище кода. Это ваша публичная визитка. Грамотно оформленный профиль помогает:
🔹 Привлечь внимание рекрутеров и заказчиков
🔹 Выделиться среди других кандидатов
🔹 Показывает, что вы заботитесь о деталях и уважаете своих коллег по цеху
🔹 Да и в целом даже самому приятно смотреть на красивый профиль.
📌 Что можно сделать:
– Создать README для профиля с краткой информацией о себе
– Выделить ключевые проекты и красиво их оформить
– Добавить бейджи, статистику и немного стиля
– Подчеркнуть свою активность, навыки и интересы
Сделать это довольно просто, достаточно просто создать репозиторий с названием своего GH профиля и положить туда README.
👀 Нашёл пару отличных гайдов, которые помогут навести порядок и сделать профиль действительно заметным:
📄 Как информативно оформить профиль на GitHub?
📄 Оформляем README-файл профиля на GitHub
Но сильно не увлекайтесь, слишком много свистелок перделок тоже не есть хорошо))
Если давно хотели прокачать свой профиль, но откладывали — самое время ✌️
А если уже что-то сделали — кидайте ссылки, интересно посмотреть!
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩85🔥6❤3
Статическая типизация в Python — когда уткам уже не доверяешь 🧊
Python — язык с динамической природой.
Но что, если хочется надёжности уже до запуска?
Добро пожаловать в мир статической типизации.
Без уток, без гусей — просто строгая проверка типов.
🧐 Что это вообще?
Статическая типизация — это когда ты явно указываешь типы переменных, аргументов и возвращаемых значений, а специальные инструменты (например, mypy) проверяют это до выполнения кода.
Python по-прежнему выполнит код, даже если ты передашь int, но анализатор заранее скажет: «что-то не так».
На этом примере особо не почувствуешь плюсов. Но если ты работаешь с большим количеством DTO, например pydantic модели, запросов и ответов или у тебя большой проект, когда ты не знаешь ожидаемых типов становится очень тяжело программировать. Среда разработки подсказывает хуже.
В общем сейчас я рекомендую всем по возможности проставлять аннотации.
📌 Как это работает?
• Используется синтаксис аннотаций (x: int, -> str)
• Проверка идёт снаружи, через инструменты (mypy, pyright, IDE)
• Ошибки ловятся ещё до запуска (в идеале — на этапе CI)
⚖️ Зачем это нужно?
• Уменьшить баги, так как python при запуске не выбрасывает ошибки при расхождении типов.
• Упростить навигацию по коду (IDE покажет сигнатуры, автокомплит и т.п.)
• Улучшить читаемость: ты сразу видишь, что принимает и возвращает функция
• Повысить доверие к чужому коду: «ничего не сломаю, если передам вот это»
На ступени Advanced мы пишем код практически без аннотаций, но на Professional мы уже используем статическую типизацию и инструменты для анализа нашего кода.
🔥 Советы:
• Начинай с простого: добавляй типы в публичные функции
• Используй mypy — он легко интегрируется в проекты
• Не бойся писать Optional, Union, TypedDict, Literal — они реально спасают
✔️ Коротко:
• Python остаётся динамическим, но может быть типизированным
• Статическая типизация помогает ловить ошибки до запуска
• Ты не обязан, но ты можешь — и это делает код сильнее
🎯 Итог:
Утиная типизация даёт свободу.
Гусиная — структуру.
Статическая — уверенность.
А вместе они дают тебе гибкий, читаемый и защищённый код.
Про модуль typing и type hints можно почитать в официальной доке.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Python — язык с динамической природой.
Но что, если хочется надёжности уже до запуска?
Добро пожаловать в мир статической типизации.
Без уток, без гусей — просто строгая проверка типов.
🧐 Что это вообще?
Статическая типизация — это когда ты явно указываешь типы переменных, аргументов и возвращаемых значений, а специальные инструменты (например, mypy) проверяют это до выполнения кода.
def greet(name: str) -> str:
return f"Привет, {name}"
greet("Питон") # Всё хорошо
greet(123) # mypy тут же даст ошибку
Python по-прежнему выполнит код, даже если ты передашь int, но анализатор заранее скажет: «что-то не так».
На этом примере особо не почувствуешь плюсов. Но если ты работаешь с большим количеством DTO, например pydantic модели, запросов и ответов или у тебя большой проект, когда ты не знаешь ожидаемых типов становится очень тяжело программировать. Среда разработки подсказывает хуже.
В общем сейчас я рекомендую всем по возможности проставлять аннотации.
📌 Как это работает?
• Используется синтаксис аннотаций (x: int, -> str)
• Проверка идёт снаружи, через инструменты (mypy, pyright, IDE)
• Ошибки ловятся ещё до запуска (в идеале — на этапе CI)
⚖️ Зачем это нужно?
• Уменьшить баги, так как python при запуске не выбрасывает ошибки при расхождении типов.
• Упростить навигацию по коду (IDE покажет сигнатуры, автокомплит и т.п.)
• Улучшить читаемость: ты сразу видишь, что принимает и возвращает функция
• Повысить доверие к чужому коду: «ничего не сломаю, если передам вот это»
На ступени Advanced мы пишем код практически без аннотаций, но на Professional мы уже используем статическую типизацию и инструменты для анализа нашего кода.
🔥 Советы:
• Начинай с простого: добавляй типы в публичные функции
• Используй mypy — он легко интегрируется в проекты
• Не бойся писать Optional, Union, TypedDict, Literal — они реально спасают
✔️ Коротко:
• Python остаётся динамическим, но может быть типизированным
• Статическая типизация помогает ловить ошибки до запуска
• Ты не обязан, но ты можешь — и это делает код сильнее
🎯 Итог:
Утиная типизация даёт свободу.
Гусиная — структуру.
Статическая — уверенность.
А вместе они дают тебе гибкий, читаемый и защищённый код.
Про модуль typing и type hints можно почитать в официальной доке.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩51👍2🔥2❤1
🎓 Мою библиотеку выбрали для академического исследования в США
На днях мне написал Samuel Flint, исследователь из Университета Небраски–Линкольн (США), с предложением поучаствовать в их научной работе. Они с Dr. Robert Dyer изучают, как разработчики добавляют и убирают аннотации типов в динамических языках, вроде Python.
📌 В рамках исследования они отбирают репозитории, где используются или развиваются практики типизации, и… мой проект pbreflect попал в выборку.
Что именно за исследование?
Проект называется “Understanding Developers’ Addition and Removal of Type Annotations” (IRB#23988).
Они анализируют реальные изменения в open-source-проектах, чтобы понять, зачем и когда программисты используют type hints — и как это влияет на читаемость, сопровождение и качество кода.
Исследование одобрено этическим комитетом (IRB), бот TypeChangeBot будет отслеживать изменения, связанные с типами, и приглашать коммитеров поучаствовать в опросе. Подробнее: https://cse-rdyer-05.unl.edu/tcbot
Кто они такие?
• Dr. Robert Dyer — профессор Computer Science, автор десятков статей по empirical software engineering, участник топовых конференций вроде ICSE и MSR.
Примеры:
• Understanding Kotlin Type Usage
• How developers use Python type annotations
• Samuel Flint — его аспирант и соавтор, активно занимается разработкой tooling-а для анализа кода на Python и Kotlin.
Почему мне это приятно?
Во-первых, моя библиотека попала в поле зрения международных исследователей — а значит, там есть что-то интересное с точки зрения инженерии.
Во-вторых, такие штуки — хороший сигнал: когда твой код достаточно читаем, открыт и “type-aware”, чтобы его использовать в научной работе.
Ну и, если честно, просто круто, что твой проект не просто валяется на GitHub, а живёт своей жизнью и попадает в научные pdf’ки 😄
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
На днях мне написал Samuel Flint, исследователь из Университета Небраски–Линкольн (США), с предложением поучаствовать в их научной работе. Они с Dr. Robert Dyer изучают, как разработчики добавляют и убирают аннотации типов в динамических языках, вроде Python.
📌 В рамках исследования они отбирают репозитории, где используются или развиваются практики типизации, и… мой проект pbreflect попал в выборку.
Что именно за исследование?
Проект называется “Understanding Developers’ Addition and Removal of Type Annotations” (IRB#23988).
Они анализируют реальные изменения в open-source-проектах, чтобы понять, зачем и когда программисты используют type hints — и как это влияет на читаемость, сопровождение и качество кода.
Исследование одобрено этическим комитетом (IRB), бот TypeChangeBot будет отслеживать изменения, связанные с типами, и приглашать коммитеров поучаствовать в опросе. Подробнее: https://cse-rdyer-05.unl.edu/tcbot
Кто они такие?
• Dr. Robert Dyer — профессор Computer Science, автор десятков статей по empirical software engineering, участник топовых конференций вроде ICSE и MSR.
Примеры:
• Understanding Kotlin Type Usage
• How developers use Python type annotations
• Samuel Flint — его аспирант и соавтор, активно занимается разработкой tooling-а для анализа кода на Python и Kotlin.
Почему мне это приятно?
Во-первых, моя библиотека попала в поле зрения международных исследователей — а значит, там есть что-то интересное с точки зрения инженерии.
Во-вторых, такие штуки — хороший сигнал: когда твой код достаточно читаем, открыт и “type-aware”, чтобы его использовать в научной работе.
Ну и, если честно, просто круто, что твой проект не просто валяется на GitHub, а живёт своей жизнью и попадает в научные pdf’ки 😄
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💩77🔥57❤7👍4🆒2
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня тестировал библиотеку одного из моих учеников @AndreiDudin с курса Professional.
Записал видео - инструмент автоматизирует настройку линтеров, прекоммит-хуков, генерацию проекта и клиентов к сервисам.
Это первый ученик на курсе, который дошёл до такого этапа - собрал рабочий инструмент, который реально можно использовать в бою. И если честно мне очень приятно наблюдать за тем как это работает))
Проект позволяет автоматизировать ту самую часть которая занимает самую большую часть времени.
И выполняет те вещи, которые обычно приходится делать вручную:
✅ Ставит линтеры и настраивает их по единому стандарту
✅ Настраивает прекоммит-хуки (чтобы не было “залетело в мастер без форматирования”)
✅ Генерирует проектную структуру и клиентов для общения между сервисами
Это уже не просто «учебный проект», это прорыв, ближе к SDET и разработке тулов.
@AndreiDudin один из тех кто пинал меня с этой ступенью и приобрел курс еще до официального старта.
За что ему спасибо.
Горжусь и надеюсь, что это только начало — дальше будет ещё круче💪
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Записал видео - инструмент автоматизирует настройку линтеров, прекоммит-хуков, генерацию проекта и клиентов к сервисам.
Это первый ученик на курсе, который дошёл до такого этапа - собрал рабочий инструмент, который реально можно использовать в бою. И если честно мне очень приятно наблюдать за тем как это работает))
Проект позволяет автоматизировать ту самую часть которая занимает самую большую часть времени.
И выполняет те вещи, которые обычно приходится делать вручную:
✅ Ставит линтеры и настраивает их по единому стандарту
✅ Настраивает прекоммит-хуки (чтобы не было “залетело в мастер без форматирования”)
✅ Генерирует проектную структуру и клиентов для общения между сервисами
Это уже не просто «учебный проект», это прорыв, ближе к SDET и разработке тулов.
@AndreiDudin один из тех кто пинал меня с этой ступенью и приобрел курс еще до официального старта.
За что ему спасибо.
Горжусь и надеюсь, что это только начало — дальше будет ещё круче
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩87🔥28
В эти выходные у меня первый выпускник с курса Professional 🥳
Естественно, я радуюсь, как и любой преподаватель)
Отзыв
Что важно отметить, в курсе действительно собрано очень большое количество информации.
И как я уже говорил он больше про SDET , мы и приводим фреймворк автотестов в порядок, используя лучшие практики и разрабатываем библитеку, которая нам эти тесты с нуля поднимает менее чем за минуту.
Один раз напилив инструмент, мы забываем про проблемы:
- Стандартизации структуры проекта (мы генерируем структуру пакетов проекта)
- Поддержки API клиентов в актуальном состоянии (мы генерируем клиенты и встраиваем их в фреймворк)
- Настройки пайплайнов (мы пишем common pipeline и интегрируем его в шаблоны проекта)
- Написания smoke тестов (мы генерируем код автотестоа)
- Поддержка качества кода (мы настраиваем линтеры, пайплайн и прекоммит хуки)
и многое другое.
Ну, а что касается проблем винды они решаемы, ведь я всегда на связи)✔️
Я уже открыл запись на следующий поток, который стартует 4 августа.
Хотите не просто писать автотесты, а разрабатывать инструменты, перейти на другой уровень профессионализма, сэкономить часы а может даже и недели времени на разработку автотестов себе или вашей компании жду на тренинге)
Напомню, вы можете согласовать обучение у вашей компании.
У меня уже были ученики из Т-банк, Ингосстрахбанк и других.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Естественно, я радуюсь, как и любой преподаватель)
отзыв на курс по API Professional
Необычный курс. На нем вы не будете писать автотесты) Курс немного про другое: как выстраивать фреймворк, в котором потом будут писаться тесты . И упростить/ускорить развертывание фреймворка с нуля и его интеграцию в CI
Архитектура, полезные либы, линтеры, форматтеры, генераторы кода и подобные вещи. То, что полезно, но приходится собирать из разных мест.
Курс сложный, рекомендую закладывать для себя побольше времени. Но однозначно полезный!
И делать не на винде 😁 т.к. много работы с путями к файлам, а синтаксис несколько различается. Либо держать это в голове. Ну и на ровном месте вылезают разные какие-то "особенности" винды )
Курс рекомендую, очень полезен 👍
Отзыв
Что важно отметить, в курсе действительно собрано очень большое количество информации.
И как я уже говорил он больше про SDET , мы и приводим фреймворк автотестов в порядок, используя лучшие практики и разрабатываем библитеку, которая нам эти тесты с нуля поднимает менее чем за минуту.
Один раз напилив инструмент, мы забываем про проблемы:
- Стандартизации структуры проекта (мы генерируем структуру пакетов проекта)
- Поддержки API клиентов в актуальном состоянии (мы генерируем клиенты и встраиваем их в фреймворк)
- Настройки пайплайнов (мы пишем common pipeline и интегрируем его в шаблоны проекта)
- Написания smoke тестов (мы генерируем код автотестоа)
- Поддержка качества кода (мы настраиваем линтеры, пайплайн и прекоммит хуки)
и многое другое.
Ну, а что касается проблем винды они решаемы, ведь я всегда на связи)
Я уже открыл запись на следующий поток, который стартует 4 августа.
Хотите не просто писать автотесты, а разрабатывать инструменты, перейти на другой уровень профессионализма, сэкономить часы а может даже и недели времени на разработку автотестов себе или вашей компании жду на тренинге)
Напомню, вы можете согласовать обучение у вашей компании.
У меня уже были ученики из Т-банк, Ингосстрахбанк и других.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩73👍9❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Последнее время моей любимой соцсетью стал LinkedIn.
Но, если честно, даже там я чувствую себя не в своей тарелке, потому что он все больше напоминает нельзяграм.
Куча постов в стиле: из-за нейросетей нас всех уволят.
Потом такая же куча постов: да нихрена эти нейросети без человека не могут.
Каждый пост с кричащим заголовком, и все они не про инженерию, а про то, как в два клика нейросеткой сделать какую-нибудь херню или поднять холиварную тему для поднятия охватов. То ли я начинаю стареть, но мне кажется, что технический контент никому особо не нужен и не интересен. Возможно, это и правильно, как говорится, "я сюда деградировать захожу".
Примерно такая же ситуация была, когда я вкатывался в IT, в 2018 году. Я начал вести аккаунт про тестирование в запрещенной социальной сети, у меня в подписчиках было три калеки. Я понял, что нельзяграм - это место еды, жоп, сисек и красивой жизни.
Но потом вокруг IT набрали такой хайп, что аккаунты начали расти как на дрожжах. Но к тому моменту я уже выгорел в этой теме и ушел писать свои кодики в тележку.
Сейчас я всё больше думаю о том, как делать контент, который не только интересен, но и полезен. Хочется писать что-то сложное, чтобы и самому развиваться, и другим помогать. Без хайповых заголовков, без "холиваров ради охватов", а с акцентом на реальную инженерию и глубокие технические темы.
Я могу назвать только двух человек, которые себе не изменяют и за которыми слежу очень давно - это Надя и Артем. И один аккаунт, который мне очень нравится, можно сказать, даже немного завидую - это Егор Векслер (его можете очень просто найти). У него и классная подача, и отменный юмор.
А что касается моего контента - он не про то, как "в два клика сделать какую-нибудь херню нейросеткой", а про техническое погружение в некоторых случаях даже фундаментальные вещи про которые все чаще забывают. У меня довольно сухая информация и если вы здесь я рад, что вам интересны темы, связанные с инженерией, тестированием, автоматизацией, и техническими подходами. Возможно, именно такие люди и помогут мне вернуть веру в ценность технического контента и профессионального комьюнити))
И да, что думаете насчет дублирования контента в разные соцсети? Стоит ли пробовать технические посты в нельзяграм и линк или это совсем не туда?
Ну и поделись, ссылонькой на канал если среди знакомых есть кто пришел в IT не только чтобы зарабатывать 300К\наносек "генерируя код нейросеткой", но и потому что ему реально интересно развиваться в IT-шке.
Ну или может просто причина в том, что я пишу неинтересное говно))
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Но, если честно, даже там я чувствую себя не в своей тарелке, потому что он все больше напоминает нельзяграм.
Куча постов в стиле: из-за нейросетей нас всех уволят.
Потом такая же куча постов: да нихрена эти нейросети без человека не могут.
Каждый пост с кричащим заголовком, и все они не про инженерию, а про то, как в два клика нейросеткой сделать какую-нибудь херню или поднять холиварную тему для поднятия охватов. То ли я начинаю стареть, но мне кажется, что технический контент никому особо не нужен и не интересен. Возможно, это и правильно, как говорится, "я сюда деградировать захожу".
Примерно такая же ситуация была, когда я вкатывался в IT, в 2018 году. Я начал вести аккаунт про тестирование в запрещенной социальной сети, у меня в подписчиках было три калеки. Я понял, что нельзяграм - это место еды, жоп, сисек и красивой жизни.
Но потом вокруг IT набрали такой хайп, что аккаунты начали расти как на дрожжах. Но к тому моменту я уже выгорел в этой теме и ушел писать свои кодики в тележку.
Сейчас я всё больше думаю о том, как делать контент, который не только интересен, но и полезен. Хочется писать что-то сложное, чтобы и самому развиваться, и другим помогать. Без хайповых заголовков, без "холиваров ради охватов", а с акцентом на реальную инженерию и глубокие технические темы.
Я могу назвать только двух человек, которые себе не изменяют и за которыми слежу очень давно - это Надя и Артем. И один аккаунт, который мне очень нравится, можно сказать, даже немного завидую - это Егор Векслер (его можете очень просто найти). У него и классная подача, и отменный юмор.
А что касается моего контента - он не про то, как "в два клика сделать какую-нибудь херню нейросеткой", а про техническое погружение в некоторых случаях даже фундаментальные вещи про которые все чаще забывают. У меня довольно сухая информация и если вы здесь я рад, что вам интересны темы, связанные с инженерией, тестированием, автоматизацией, и техническими подходами. Возможно, именно такие люди и помогут мне вернуть веру в ценность технического контента и профессионального комьюнити))
И да, что думаете насчет дублирования контента в разные соцсети? Стоит ли пробовать технические посты в нельзяграм и линк или это совсем не туда?
Ну и поделись, ссылонькой на канал если среди знакомых есть кто пришел в IT не только чтобы зарабатывать 300К\наносек "генерируя код нейросеткой", но и потому что ему реально интересно развиваться в IT-шке.
Ну или может просто причина в том, что я пишу неинтересное говно))
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩56👍12❤6
Как вы помните, ранее я проводил опрос о том, какая тема автоматизации тестирования вам была бы интересна.
Ну так вот, вы просили — брокеры сообщений, значит, будут брокеры сообщений!
Кодовая база уже написана, презентации готовы на 40%.
Что будет интересного? Мы будем работать с Kafka и RabbitMQ.
Курс будет независим от ступеней Professional и Advanced, это значит, что он будет максимально емким: никаких Allure, настроек CI и прочего — только брокеры сообщений.
Если в ступени Professional мы уже работали с асинхронным кодом, то здесь я решил раскрыть еще одну тему — многопоточность.
Поэтому рекомендую подтянуть навыки в Python и готовиться к новой ступени!
Курс будет помечен маркировкой Professional, потому что темы сложные.
В конце мы напишем интеграционный сценарий проверки flow регистрации, почти со всеми промежуточными этапами. Flow можно будет посмотреть на этой UML-диаграмме.
В общем, готовьтесь будет интересно!
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Ну так вот, вы просили — брокеры сообщений, значит, будут брокеры сообщений!
Кодовая база уже написана, презентации готовы на 40%.
Что будет интересного? Мы будем работать с Kafka и RabbitMQ.
Курс будет независим от ступеней Professional и Advanced, это значит, что он будет максимально емким: никаких Allure, настроек CI и прочего — только брокеры сообщений.
Если в ступени Professional мы уже работали с асинхронным кодом, то здесь я решил раскрыть еще одну тему — многопоточность.
Поэтому рекомендую подтянуть навыки в Python и готовиться к новой ступени!
Курс будет помечен маркировкой Professional, потому что темы сложные.
В конце мы напишем интеграционный сценарий проверки flow регистрации, почти со всеми промежуточными этапами. Flow можно будет посмотреть на этой UML-диаграмме.
В общем, готовьтесь будет интересно!
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
💩72🔥12👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Ложное качество кода
Сейчас многие начали слишком сильно полагаться на нейросети.
Я стал замечать это даже по работам своих студентов.
Сегодня можно просто попросить ИИ:
Сделай мне проект — и он сгенерирует структуру, классы, папочки, комментарии.
На вид — реально как магия. Почти имба.
Но если честно, я и сам довольно ленивый.
Не раз пытался отрефакторить свой код через нейросети.
И пока — ни одной попытки, которую хотелось бы просто взять и влить в мастер.
Например, у меня есть библиотека, о которой я уже упоминал — restcodegen.
Даже если подробно расписать промт, ИИ начинает генерировать лавину кода —
и в какой-то момент даже я уже не понимаю, что и зачем там сделано. Класс на 500-600 строк может разбить на 3-4 файла где в каждом по 500-600 строк!!!
Иногда нейросеть скатывается в оверинжиниринг:
- Создаёт десятки протоколов и абстрактных классов
- Распиливает методы до супер-атомарного состояния
- Пишет публичный метод, который вызывает точно такой же приватный — и ты сидишь и думаешь: зачем?
Для кого-то это может выглядеть как «код сеньора».
Но по факту — это просто усложнение ради усложнения.
Настоящий сеньор знает, когда использовать интерфейсы и паттерны, а когда — просто обычную функцию.
Тем не менее, ИИ — это очень мощный инструмент.
Игнорировать его в 2025 — всё равно что отвергать IDE и писать в блокноте.
Но, как и с любой мощной штукой, важно уметь правильно применять.
Мои рекомендации по использованию ИИ в разработке:
✅ Решайте задачи атомарно.
Каждый шаг — с фиксацией в git.
Если пустить нейросеть в код без контроля — она может перелопатить всё, и предыдущие промты окажутся бесполезны.
✅ Формулируйте чёткую задачу.
Опишите:
— в чём проблема
— какой способ решения вам ближе
— что должно быть на входе и выходе
✅ Задавайте сигнатуры и контракты.
Чем яснее ожидания — тем точнее результат.
Описывайте, какие типы, поля, методы хотите видеть.
✅ Показывайте примеры и паттерны, которые хотите использовать.
ИИ очень хорошо работает по аналогии — покажите, что вам нравится, и он постарается повторить стиль.
ИИ — это очень крутой помощник, который позволяет делать многое, не заглядывая лишний раз в документацию.
Но он не заменяет понимание!!!
Он усиливает тех, кто и так понимает, что делает.
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Сейчас многие начали слишком сильно полагаться на нейросети.
Я стал замечать это даже по работам своих студентов.
Сегодня можно просто попросить ИИ:
Сделай мне проект — и он сгенерирует структуру, классы, папочки, комментарии.
На вид — реально как магия. Почти имба.
Но если честно, я и сам довольно ленивый.
Не раз пытался отрефакторить свой код через нейросети.
И пока — ни одной попытки, которую хотелось бы просто взять и влить в мастер.
Например, у меня есть библиотека, о которой я уже упоминал — restcodegen.
Даже если подробно расписать промт, ИИ начинает генерировать лавину кода —
и в какой-то момент даже я уже не понимаю, что и зачем там сделано. Класс на 500-600 строк может разбить на 3-4 файла где в каждом по 500-600 строк!!!
Иногда нейросеть скатывается в оверинжиниринг:
- Создаёт десятки протоколов и абстрактных классов
- Распиливает методы до супер-атомарного состояния
- Пишет публичный метод, который вызывает точно такой же приватный — и ты сидишь и думаешь: зачем?
Для кого-то это может выглядеть как «код сеньора».
Но по факту — это просто усложнение ради усложнения.
Настоящий сеньор знает, когда использовать интерфейсы и паттерны, а когда — просто обычную функцию.
Тем не менее, ИИ — это очень мощный инструмент.
Игнорировать его в 2025 — всё равно что отвергать IDE и писать в блокноте.
Но, как и с любой мощной штукой, важно уметь правильно применять.
Мои рекомендации по использованию ИИ в разработке:
✅ Решайте задачи атомарно.
Каждый шаг — с фиксацией в git.
Если пустить нейросеть в код без контроля — она может перелопатить всё, и предыдущие промты окажутся бесполезны.
✅ Формулируйте чёткую задачу.
Опишите:
— в чём проблема
— какой способ решения вам ближе
— что должно быть на входе и выходе
✅ Задавайте сигнатуры и контракты.
Чем яснее ожидания — тем точнее результат.
Описывайте, какие типы, поля, методы хотите видеть.
✅ Показывайте примеры и паттерны, которые хотите использовать.
ИИ очень хорошо работает по аналогии — покажите, что вам нравится, и он постарается повторить стиль.
ИИ — это очень крутой помощник, который позволяет делать многое, не заглядывая лишний раз в документацию.
Но он не заменяет понимание!!!
Он усиливает тех, кто и так понимает, что делает.
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Про Kafka я уже писал.
Давайте теперь поговорим про RabbitMQ🐰
Несмотря на то, что эту тему я буду разбирать на тренинге по брокерам, думаю, остальным тоже будет полезно.
Основные понятия, которые нужно знать:
• Publisher — публикует сообщения в Rabbit.
Если сравнивать с Kafka — это producer. То есть сущность, которая шлёт сообщения в обменник.
• Exchange — обменник.
Это точка входа всех сообщений в RabbitMQ.
Publisher публикует в exchange, а он уже раскидывает сообщения по очередям с помощью routing_key.
• Binding — связь между exchange и queue.
Через неё мы указываем: какая очередь получает какие сообщения от какого обменника.
• Queue — очередь.
Здесь лежат сообщения, которые ждут обработки.
• Message — сообщение. Атомарная единица данных.
• Consumer — подписывается на очередь и получает сообщения от Rabbit.
Что важно помнить при тестировании❓
Когда сообщение обработано (т.е. закоммичено), оно пропадает из очереди.
И если вы тестируете прямо на боевой очереди, есть риск:
• либо “украсть” сообщение у продового консюмера (если закоммитите его раньше)
• либо просто не увидеть его, потому что прод его уже съел
Что делать✔️
Создаём свою тестовую очередь и роутим в неё те же сообщения, что и в боевую.
Так можно тестировать спокойно, не мешая логике основного приложения.
Об этом я подробно расскажу на курсе.
Что ещё важно знать❓
Типы обменников.
Но это — в следующем посте 😉
——————————-
📱 TG-сообщество
📱 Обучение
📱 Отзывы
Давайте теперь поговорим про RabbitMQ
Несмотря на то, что эту тему я буду разбирать на тренинге по брокерам, думаю, остальным тоже будет полезно.
Основные понятия, которые нужно знать:
• Publisher — публикует сообщения в Rabbit.
Если сравнивать с Kafka — это producer. То есть сущность, которая шлёт сообщения в обменник.
• Exchange — обменник.
Это точка входа всех сообщений в RabbitMQ.
Publisher публикует в exchange, а он уже раскидывает сообщения по очередям с помощью routing_key.
• Binding — связь между exchange и queue.
Через неё мы указываем: какая очередь получает какие сообщения от какого обменника.
• Queue — очередь.
Здесь лежат сообщения, которые ждут обработки.
• Message — сообщение. Атомарная единица данных.
• Consumer — подписывается на очередь и получает сообщения от Rabbit.
Что важно помнить при тестировании
Когда сообщение обработано (т.е. закоммичено), оно пропадает из очереди.
И если вы тестируете прямо на боевой очереди, есть риск:
• либо “украсть” сообщение у продового консюмера (если закоммитите его раньше)
• либо просто не увидеть его, потому что прод его уже съел
Что делать
Создаём свою тестовую очередь и роутим в неё те же сообщения, что и в боевую.
Так можно тестировать спокойно, не мешая логике основного приложения.
Об этом я подробно расскажу на курсе.
Что ещё важно знать
Типы обменников.
Но это — в следующем посте 😉
——————————-
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2