Привет, Хабр! Хотим поделиться опытом проведения ролевых соревнований среди студентов и выпускников курса “Java-разработчик” — Skillbox Java Challenge (SJC). Созданная в 2019 году по инициативе студентов активность полюбилась всей команде, обросла интересными соревновательными и игровыми фичами. Этой осенью SJC состоялся уже в третий раз, его тематикой стали космические путешествия. О подробностях соревнования — под катом. Шел 2019 год, в Skillbox активно развивалось направление “Программирование” и совсем недавно произошло сильное обновление программы обучения Java, с ориентацией на трудоустройство. Именно тогда все и началось. Одному из студентов курса, Роману Фернандо, пришла идея провести соревнование в формате марафона ежедневных задач по коду длиною в месяц. Он рассказывает: “Мне было лениво учиться одному, поэтому я предложил сокурсникам и преподавателям челлендж на выносливость для проверки сил на практике”.  Количество участников первого SJC составило всего 23 человека, а длительность — 30 дней. На решение каждой ежедневной задачи студентам выдавалось 24 часа. Если участник не сдавал решение в срок, он исключался из челленджа и мог вернуться к прохождению основной программы курса. Справиться со всеми заданиями и дойти до конца удалось 6 участникам.  Команда курса поддержала идею Романа обыграть второй челлендж фэнтезийным сеттингом, посвятить его персонажам вселенной World of Warcraft. Теперь задания стали представлять собой цельную цепочку квестов. Каждое новое задание сопровождалось краткой предысторией с интересным сюжетом. Если участник выбывал, сюжет дополнялся соответствующей историей. Заявки на участие подали уже 42 студента. Кроме того, мы расширили возможности коммуникаций. Запустили Telegram-канал для информирования о новых заданиях и списках участников. И добавили усложненные задания, по результатам которых выдавали “медальки”, значки-emoji, к никам участников.  Решение о проведении третьего челленджа было принято в апреле 2021 года. Затем последовало несколько месяцев подготовки и старт в августе. Проводить челлендж помогали студенты Павел Новиков и Ирина Левина. Они собирали иллюстрации, модерировали вопросы участников, улаживали организационные моменты. В этот раз мы выбрали космическую тематику — это снизило градус юмора, но привнесло атмосферу загадочности и мистичности. Главной миссией участников хакатона стало спасение с вражеской планеты. Сюжет обыгрывал модули курса по “Коллекциям” и “Наследованию” в Java. Длительность SJC 2021 составила две недели.   Единственными требованиями для участия являлись обучение на курсе “Java-разработчик” и завершение модуля “Коллекции” — без этих знаний даже стартовые задания не удалось бы решить. К соревнованию присоединились не только текущие студенты курса, но и выпускники, состоящие в чате. Выполнение заданий осуществлялось в открытом сервисе codewars.com. Это сервис для практики написания кода через решение заданий по разным тематикам, включая алгоритмы, паззлы, структуры данных, комбинаторику. Отобрали задачи сложностью 8, 7, 6, 5 kyu (8 — самая простая, 1 — самая сложная). Примеры заданий: 8 kyu - Rock Paper Scissors 7 kyu - TV Remote 6 kyu - Killer Garage Door 5 kyu - RoboScript #2 - Implement the RS1 Specification Константин Шибков, старший преподаватель направления “Программирование”: “Codewars предлагает широкий спектр задач разного уровня сложности, что позволяло нам регулировать трудность заданий по ходу челленджа. Каждое задание на codewars проверено десятками и сотнями участников на корректность условий и тестов. Использование сервиса позволило сократить время подготовки SJC. Немаловажная особенность codewars — простой и публичный API для автоматического сбора результатов решений участников”. Традиционно на каждое задание у участников было 24 часа. Первые задачи выполнялись довольно быстро. Бот ежечасно фиксировал время выполнения задания каждым участником, а трем самым быстрым исполнителям выдавал значок 🤟 до следующего задания. По вечерам все желающие собирались вместе по видеосвязи, разбирали задание, смотрели варианты решений.  Константин Шибков, старший преподаватель направления “Программирование”: “Формат игры с выбыванием популярен на олимпиадах. Отличие нашего челленджа в тесном взаимодействии участников, общении на видеовстречах и регулярном разборе решений. Участники чувствуют себя избранной группой и гордятся переходом на каждый следующий этап”. На выполнение финального задания мы дали студентам двое суток. Эту задачу мы придумали самостоятельно. Здесь оценивали не только факт решения, но и его эффективность: результаты каждого решения тестировались и выводились в канале в виде графика. Студенты могли улучшать свое решение до последних минут. Предлагаем ознакомиться с заданием. Сеттинг: Команда инженеров оказалась в ловушке под землей. Они смогли связаться с нами и попросили пробуриться к ним. Но все буровые установки находились под землей, и нам приходилось пробивать землю разрывными снарядами. Ваша миссия - создать модель поверхности после нанесения серии взрывных ударов. Задача:  Метод реализации получается следующим. public static String fire(int fieldSize, Strike[] strikes) {          return ""; }  Где fieldSize - высота и ширина наземной части, strike - массив разрывных снарядов, содержащий координаты X и силу удара. Удары наносятся последовательно от поверхности. Метод должен возвращать структуру земли после нанесения всех взрывных ударов. Полный код задания и визуализация решения - по ссылке. Сравнительный график эффективности решений. Успешно выполнить последнее задание SJC 2021 удалось 7 участникам. Каждый студент смог проверить свои силы в "полевых" условиях и увидеть свои пробелы. Собрали фидбек участников: Роман Фернандо, участник первого SJC: “Итак, это было интересно, изнурительно и познавательно, достигнута новая степень ненависти к алгоритмам. В конце нас осталось 6, мы стали сплоченной командой единомышленников. Челлендж показывает ваши слабые стороны и помогает всегда быть в седле”. Павел Новиков, участник второго SJC: “Один из полезнейших опытов, что здесь перевернул мое сознание, это java challenger который проводил Константин. Он помог мне включить тумблер девелопера. Я скажу честно, я не закончил курс. Я дошел лишь до конца многопоточности. А сейчас я работаю java back-end разработчиком на e-commerce проекте в международной компании) А начинал я так же как и вы, прям отсюда :)”. Александр Вергун, участник SJC 2021: “Понравилось стартовать с сотней+ людей, а закончить в десятке. Игровые задачи позволяют лучше погрузиться в темы модулей, особенно понравилась задача о кофемашинах по теме интерфейса и имплементаций”. Василий Семко, участник SJC 2021: “Может, конечно, мне кажется, но после него [SJC] обучение пошло намного легче! Есть вероятность, что просто прибавилась уверенность в своих силах, но, возможно, дело не только в ней. Лично для меня это был полезный опыт не только решения задач, но и общения с единомышленниками, если, конечно, я не рановато причисляю себя к ним”. Немного о планах Наша большая цель — создание MVP для внедрения челленджей на других курсах и языках: Python, C++, Kotlin. Для вовлечения большего количества участников мы рассматриваем возможность снижения хардкорности в пользу градации уровней сложности заданий, возможности выбора и рейтинга баллов вместо выбывания.