Я сделал бесплатный SQL-курс на Stepik. Оказалось, сам курс — это только 20% работы

Когда я решил попробовать себя в создании онлайн-курсов, мне казалось, что всё будет довольно просто: придумал тему, написал уроки, добавил задания, опубликовал — и люди начали учиться.

На практике всё оказалось иначе.

Курс можно сделать за несколько дней. А вот понять, кому он нужен, чем он отличается от конкурентов, почему ученик должен открыть именно его и почему он не бросит его на второй задаче — это уже совсем другая работа.

Расскажу, как я делал бесплатный курс «SQL с нуля: 40 задач для аналитика» на Stepik, какие ошибки поймал и что понял про создание образовательного продукта.

Сначала я просто сделал курс — и ничего не произошло

Я зарегистрировался на Stepik, начал разбираться в платформе, быстро накидал первый курс и опубликовал.

И потом смотрел на пустую статистику.

Курс есть. Учеников нет. Переходов нет. Движения нет.

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

Нужно было понять рынок.

Я начал с аналитики Stepik

Решил не гадать, а посмотреть на данные. Написал скрипт, который через Stepik API собрал информацию по:

  • 12 963 курсам;
  • 529 каталогам;
  • 390 тематическим тегам;
  • 5 647 авторам;
  • рейтингам, отзывам, темам и структурам курсов.

Я смотрел, какие темы живут долго, где есть спрос, где много конкурентов, а где конкуренция слабее. Сравнивал объёмы курсов, цены, отзывы, даты публикации, популярность авторов.

SQL быстро выделился как хорошая ниша для стартового курса.

Почему:

  • SQL нужен аналитикам, тестировщикам, менеджерам, разработчикам;
  • навык стабильный и не устаревает каждые полгода;
  • задачи можно проверять автоматически;
  • не нужно ставить сложное окружение;
  • новичок быстро видит результат: написал запрос — получил таблицу.

Но просто сделать «ещё один курс по SQL» было бессмысленно. Нужно было понять, чем люди недовольны в существующих курсах.

Я пошёл читать отзывы конкурентов

Я изучал курсы по SQL, их структуру, рейтинги и комментарии учеников.

В негативных отзывах постоянно повторялись одни и те же проблемы:

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

А вот что хвалили:

  • короткая теория → сразу задача;
  • единая база на весь курс;
  • понятные условия;
  • автоматическая проверка;
  • отсутствие установки;
  • постепенное усложнение.

Так появилась идея курса:

40 практических задач на одной базе интернет-магазина, без установки, прямо в браузере.

Почему база интернет-магазина

Я не хотел делать набор случайных задач из разных миров: тут книги, там самолёты, потом сотрудники, потом студенты.

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

Поэтому я сделал одну сквозную базу интернет-магазина:

  • покупатели;
  • товары;
  • категории;
  • заказы;
  • позиции заказов.

На ней можно пройти почти весь базовый SQL:

  • SELECT;
  • WHERE;
  • ORDER BY;
  • LIMIT;
  • агрегаты;
  • GROUP BY;
  • JOIN;
  • CASE WHEN;
  • финальные аналитические запросы.

В итоге курс стал не просто набором упражнений, а маленьким тренажёром: ученик постепенно учится доставать данные из одной и той же базы.

Потом начались технические проблемы

Я думал, что основная сложность — придумать задания. Но Stepik быстро показал, что техническая часть тоже может съесть много времени.

Проблема 1. Таблицы исчезали

Добавляю вторую задачу — получаю ошибку:

textERROR 1146: Table 'stepik_XXXXXXXX.products' doesn't exist

Оказалось, что для каждой SQL-задачи нужно отдельно вставлять init SQL: создание таблиц и данные.

То есть если у тебя 40 задач, общий скрипт базы нужно вставить в каждую из них.

Проблема 2. Проверяющий код падал из-за форматов данных

Stepik требует проверяющий код на Python. Я сначала хотел сделать нормальную проверку результата, но столкнулся с тем, что в разных случаях данные приходили в разных форматах.

То словарь, то строка, то старый код продолжает кэшироваться.

В итоге для первой версии я упростил проверку: главное, чтобы запрос вернул непустой результат. Не идеально, зато стабильно.

Проблема 3. GROUP BY оказался строже, чем ожидалось

Stepik использует MySQL со строгим режимом ONLY_FULL_GROUP_BY.

Если поле есть в SELECT, но его нет в GROUP BY, запрос может упасть.

Пришлось переписывать решения так, чтобы они были корректны не только «по ощущениям», но и для строгого SQL-режима.

Проблема 4. Редактор превращал SQL в Markdown

Запись c.name редактор иногда воспринимал как домен и превращал в ссылку:

Markdown[c.name](http://c.name)

SQL, разумеется, ломался.

Проблема 5. Символ > превращался в >

Запрос:

SQLHAVING total_paid > 30000

мог превратиться в:

SQLHAVING total_paid > 30000

И это уже невалидный SQL.

После этого я стал проверять задания не только до сохранения, но и после.

Учебная база должна быть специально спроектирована

Ещё одна неожиданная проблема: в первой версии базы все покупатели имели заказы, а все товары продавались.

Звучит нормально, но тогда задачи вроде:

  • найти клиентов без заказов;
  • найти товары, которые никто не покупал;

возвращали пустой результат.

Формально это корректно. Но для новичка пустой результат выглядит как ошибка.

Пришлось специально добавить:

  • одного клиента без заказов;
  • один товар без продаж.

После этого стало понятно: учебная база — это не просто «реалистичные данные». Она должна быть спроектирована под учебные ситуации.

Ревью от Stepik тоже помогло

Когда отправил курс на ревью, получил развёрнутый комментарий от администратора платформы.

Нужно было:

  • добавить схему базы в первый урок;
  • убрать лишние элементы из тестов;
  • поправить данные;
  • исправить одну галочку в вопросе;
  • доработать формулировки.

Это был полезный этап. Когда долго смотришь на свой курс, начинаешь не замечать очевидных проблем.

Что получилось

Сейчас курс опубликован на Stepik. Он бесплатный, рассчитан на начинающих и состоит из:

  • 7 уроков;
  • 40 SQL-задач;
  • одной сквозной базы интернет-магазина;
  • короткой теории перед заданиями;
  • практики прямо в браузере.

Если вы учите SQL, делаете свои курсы или просто хотите посмотреть на формат — буду рад обратной связи.

Что я понял

Главный вывод такой:

сделать курс — это примерно 20% работы. Остальные 80% — аналитика, упаковка, конкуренты, техническая доводка и исправление мелочей.

Конкуренты — лучшие учителя. Их отзывы показывают, где люди реально страдают.

А технические детали могут убить очень много времени, если не знать о них заранее.

Если бы я начинал заново, я бы сначала сделал не уроки, а чек-лист:

  1. Изучить конкурентов и отзывы.
  2. Выбрать одну понятную аудиторию.
  3. Спроектировать базу под учебные задачи.
  4. Добавить пограничные случаи в данные.
  5. Проверить все SQL-запросы в том же режиме, что и платформа.
  6. Протестировать курс как ученик.
  7. Только потом думать про продвижение.

А ещё я понял, что бесплатный курс — это не «простая версия». Бесплатный курс тоже должен быть нормальным продуктом. Иначе он не приводит доверие, а наоборот его сжигает.

Буду рад комментариям: что бы вы добавили в такой SQL-курс для новичков?