Добрый день
Данный курс оставил очень двоякое впечатление и у меня не поднимается мышь поставить ему 5 звезд.
Сразу оговорюсь, что не ставлю себе задачу этим отзывом "скомпрометировать курс" и потребовать обратно деньги - я хочу максимально объективно и непредвзято изложить факты, чтобы команда курса (или один Крыжановский Михаил) довели курс до качественного состояния.
Напомню, что я пишу отзыв на платный курс, который выложили в доступ в начале 2024 (т.е. на текущий момент курс существует порядка 1,5 лет)!
Для сравнения: базовый бесплатный курс Крыжановского имеет равномерное по качеству восхитительное изложение, постоянно расширяется и за него в свое время я честно и без сомнений поставил 5 звезд и задонатил денег.
Для начала стоит отметить, что колаборация 3 авторов удалась, на мой взгляд, не очень: те разделы, которые писал и поддерживает Михаил восхительны, а разделы которые писали другие авторы отличаются, как по качеству (кратко и сложно), так и по стилю изложения (автор пишет код и изредка, скорее случайно, что-то поясняет по теории…), так и по достаточно расслабленной поддержке (неоднократно наблюдаю ситуации, когда на свои 5 вопросов получаю 1-2-3 ответа не очень быстро и не очень понятно).
Т.е. получается "сумасшедшая болтанка": модуль Михаила проходишь с радостью, читаешь теорию по принципу от простого к сложному, спокойно вникаешь, затем разбирается специально подобранный учебный пример, если что-то непонятно - Михаил обычно в течение суток отвечает и помогает;
модуль неМихаила - сразу падаешь в депрессию от собственной неполноценности: объяснение теории является случайным побочным продуктом, пример берется вероятно копи-пастом из какого-то рабочего проекта (все сложно и малопонятно), на вопросы отвечают медленно, редко и на те, которые избрал достойными куратор модуля; потом снова попадется модуль Михаила и жизнь снова прекрасна…
Приходит в голову метафора "письма дяди Федора родителям":
Мои папа и мама! Я живу хорошо … так что лохматость у меня повысилась. До свидания, ваш сын, дядя Шарик.
Теперь изложу реальные факты, выводы на которые каждый сделает сам:
1. Курс охватывает большое количество сложных тем.
2. Большинство модулей имеют теоретичесую и практическую составляющие.
3. Курс потихоньку дополняется и дорабатывается.
4. Отличный и подробный модуль по Aiogram Dialog (поддерживает Михаил).
5. "Модуль пониженного качества" по тестированию - один из модулей, освоением которого я неудовлетворен.
6. Очень маленький "Модуль пониженного качества" по деплою. Если бы не 2 безупречных модуля в базовом курсе Михаила, то я бы мало, что усвоил фундаментально в этом модуле (вдумайтесь в комичность ситуации: студент платного курса обращается в бесплатный курс за качественным результатом!).
7. Небольшой модуль по интернационализации (поддерживает Михаил), поэтому усвоение хорошое, но надеюсь Михаил расширит и дополнит этот модуль.
8. Большой модуль по NATS (поддерживает Михаил) очень хорошо усваивается, но в конце он не дописан, например, в части отложенной отправки сообщений. Очень рассчитываю, что Михаил допишет его.
9. Маленький модуль "Очереди (в разработке)": 8.1 это фактически "заготовки материала", которые использовались в предыдущем модуле (т.е. 8.1 лучше удалить), 8.2 Taskiq - очень-очень кратко разбирается планировщик; однозначно требует дополнения.
10. Сравнительно небольшой модуль по SQLAlchemy и Alembic. Однозначно, что без безупречного модуля СУБД в базовом курсе Михаила результат был бы слабый. Сравните сами: в базовом курсе по одной теме СУБД порядка 32 шагов! восхитительного плавного обучения, а в этом курсе в среднем по 6 шагов на более сложные темы SQLAlchemy Core, SQLAlchemy ORM, Alembic. Очень жаль, что в базовом курсе нет про Alembic - 2 шагов в этом курсе по миграциям катастрофически мало.
11. Модуль "Финальный проект" совсем испортил все впечатление от курса. Суровые факты:
• 10.1 Обоснование выбора - очень общая информация
• 10.2 Постановка задачи - очень общая информация
• 10.3 Проект - ДВА шага! из которых 1 шаг - команды клонирования репозитория и 1 шаг с docker-compose.yml. Т.е. финальный проект НЕ РАЗБИРАЕТСЯ ВООБЩЕ - клонируйте и разбирайтесь сами с мамой и бабушкой…
• Откровенные недороботки проекта (я потратил пару недель на внимательное изучение, задал кучу вопросов, но ответы получил лишь на малое количество и теми зачастую не удовлетворен):
○ Банальные опечатки, которые никто не исправляет, например: time_format = '%Y-%m-%dT H:%M:%S'
○ Асинхронный логгер из репозитория работает с кучей ошибок, которые не исправляют
○ В миддлвари переменная start_time инициализиоуется дважды, т.о. образом время лога получается не совсем точным из-за второго сброса
○ В DatabaseMiddleware очень заморочно передается ключ контекста context_name - это считаю примером нарушения PEP и антипаттерном ясности
○ В bot/handling/dialogs/watermark.py цикл отрабатывает один раз и сразу прерывается (фактически цикл не нужен), а также try без except и pass в finally - ощущение, что этот код скопировали откуда-то не читая…
○ В тесте проверяем наличие подстроки "Привет!", которой не было в словарях переводов (т.е. тест в принципе не может быть пройден)
○ В хэндлере bot/handlers/get_user.py ошибка в названии команды, отсутствует миддлварь сохраннения пользователя в БД, код запроса в БД и т.д. Т.е. хэндлер вообще не реализован, ощущение, что этот код скопировали откуда-то не читая
○ Тест фактически не работает, я так и не смог "победить" ошибку "TypeError: object NoneType can't be used in 'await' expression" и не очень верю, что куратор модуля мне поможет.
Авторы, без обид: у меня сложилось устойчивое ощущение, что здесь, как в басне Крылова, собрались лебедь, рак и щука, которые живут в разных мирах и имеют совершенно разные привычки и взгляды на жизнь при составлении своих модулей. Кроме того, ситуация скорее всего усугубилась тем, что авторы (за исключением Михаила) устали/недооценили сложность/выгорели/забили/… в процессе создания курса - это сильно заметно по ответам/неответам на вопросы и качеству финального проекта, который будто скопипастили не читая и не запуская… Фантастический выпускной проект в духе "смотрите, как делать не надо".
Вывод: в целом я не жалею, что приобрел этот курс. Безусловно он очень ценный для меня и комплексный, но хотелось бы, чтобы курс был единообразнее по изложению и поддержке. Сейчас на его освоение уходит большое количество времени, сил и нервов, а в некоторых "модулях пониженного качества" я так и не достиг желаемых результатов хотя потратил на курс порядка 4 месяцев усидчивого обучения. Считаю это недопустимым для платного продукта.
В общем курс рекомендую, но будьте готовы к регулярным страданиям, комплексу собственной неполноценности и полному разочарованию финальным проектом если авторы не предпримут корректировочных мер. Собственно ради этого я и потратил сейчас свое время на написание фактически пошагового плана доработки.