рейтинг блогов

Почему игровое обучение программированию не работает

топ 100 блогов olegmakarenko.ru21.09.2019

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

Типичный рецепт создания сайта для «игрового» обучения таков.

1. Создаём примитивную недоигру: что-нибудь про орков или про космос. Качеством исполнения не заморачиваемся, делаем такую халтуру, за которую было бы стыдно даже создателям волны игрового хлама из семидесятых годов.

2. Говорим ученику: ты управляешь вот этим рыцарем или вот этим космическим кораблём. Твоя задача — создать код, чтобы найти ближайшего врага и ударить его мечом/лазером.

3. Показываем ученику кусок непонятного кода, в середину которого ученик должен засунуть свою часть.

4. Если всё получилось, переходим к следующему заданию, выбирая при этом темы обучения таким образом, чтобы их можно было хотя бы за уши притянуть к сюжету нашей недоигры.

5. За успешное выполнение заданий назначаем игроку очки и позволяем ему покупать игровые предметы — опять-таки, даже на 5 минут не задумываясь ни о балансе, ни о дизайне, ни о разнообразии веток прокачки, то есть принципиально не пытаясь сделать нашу игру играбельной.

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

Причины провала понятны. С тем же успехом мы могли бы «геймифицировать» вузовские лекции, переодев лектора в клоунский костюм, и заставив студентов кричать «эх-хе-хей, кости на бочку!» вместо «Игорь Петрович, помогите, пожалуйста, разобраться с ошибкой». Типичный пример неудачной геймификации можно наблюдать на видео к посту. Увы, аналогичным образом пытаются действовать и создатели «игровых» сайтов для обучения программированию:

«Значочки пробельчика и табуляшечки, начинающие условненькую строчечку, используются для вычисления уровенька отступчика строчечки, который, в свою очередь, определяет группировочку операторчиков».

Вообразите себе детскую табуретку. У неё есть важные и второстепенные свойства. Важное свойство детской табуретки — она должна быть маленькой, лёгкой и без острых углов. Будет ли на ней при этом нарисован дракончик, и будет ли табуретка раскрашена в ядовито-розовый цвет — уже дело десятое.

То же самое верно и для геймификации. Когда мы делаем геймифицированные курсы по обучению программированию, нам следует соблюдать следующие важные правила:

1. Курсы должны начинаться с самого нуля, может, даже и ещё ниже, чем ноль.

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

3. Ученик должен иметь достаточный уровень свободы, мир обучения должен быть открытым.

4. Прокачка персонажа должна быть не только понятной, но и управляемой.

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

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

В каждом языке программирования есть официальная нулевая точка, так называемый хелловорлд. Это команда, которая выдаёт на монитор сообщение «Hello World», «Привет, мир». В языке 1С, к примеру, хелловорлд выглядит так:

Сообщить("Hello Wold");

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

На «геймифицированных» курсах из числа тех, которые я сейчас ругаю, в качестве первого задания ученику выдают сразу несколько строк непонятного кода, куда он должен что-то вставлять. Вот типичный, далеко не самый худший пример первого задания:

# game loop
while 1:
    enemy_1 = input() # name of enemy 1
    dist_1 = int(input()) # distance to enemy 1
    enemy_2 = input() # name of enemy 2
    dist_2 = int(input()) # distance to enemy 2

    # Write an action using print

    # Enter the code here


Как видите, тут у нас сразу и бесконечный цикл, и логический тип данных, и приведения строк к числам, и оператор присваивания, и комментарии… И как думаете, что предлагают сделать новичку? Ему предлагают взять непонятный кусок кода из второго окна и скопировать туда, куда укажет система.

Замечательный старт! Мало что убивает желание учиться сильнее, чем осознание своей неспособности разобраться даже в самом первом упражнении.

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

Бойлерплейт-код — главная проблема для новичков, которые пытаются учить язык онлайн, без учителя. «Так, мне дали задание проверить документы у водителя. Это я понимаю. Почему же он на меня не реагирует? Может, надо требовать громче? Постучать жезлом по крыше? Подпрыгнуть? Нет, ничего не помогает… Ах, надо было сказать в самом начале "Инспектор Иванов"! Почему меня заставили потратить полчаса жизни на попытки выяснить эту чушь?».

Со стороны авторов курсов проблема бойлерплейт-кода решается элементарно — достаточно добавить пару проверок, которые будут говорить ученику: «вы забыли сказать "Инспектор Иванов", ваш код не заработает». К сожалению, авторы предпочитают в случае возникновения любых ошибок не расшифровать их, а отделываться от учеников шаблонным «что-то пошло не так, попробуйте снова».

Юмор тут в том, что настоящие, опытные программисты имеют в своём распоряжении массу способов узнать, что же конкретно пошло не так. Система сообщает им и тип ошибки, и конкретную строчку, где произошёл сбой, и ещё массу сопутствующих улик. Студент находится в несравненно худшем положении. «Что-то пошло не так», — и сиди, гадай, где же именно ты ошибся, и как тебе свою ошибку исправить.

Не лучше обстоят дела и с ростом уровня. Когда мы прокачиваем, допустим, свои конечности в реальном мире, мы можем каждую неделю наблюдать новые рекорды. Было три отжимания, стало четыре. Поднимал штангу в 20 килограмм, теперь справился уже с 25 килограммами. Мы можем выбирать, какие упражнения делать и в каком порядке.

В общеобразовательных школах система прокачки кастрирована до формата прямой рельсы. Есть одиннадцать уровней, и раз в год всему стаду школьников присваивают следующий уровень: одновременно по всей стране. Школьник не может составлять себе программу обучения, как меню в ресторане — он должен есть, что ему дают, блюдо за блюдом, при этом ровно в том порядке, который утвердило Министерство образования.

Казалось бы, на курсах есть все возможности сделать красивое дерево прокачки — как в «Цивилизации» или даже как в «Ив Онлайн». Но нет, нам раз за разом снова предлагают проверенные рецепты из поваренной книги для зануд: «пройдите 20 упражнений, чтобы получить следующий уровень. Пройдите 50 уровней, чтобы закончить курс».

Пожалуй, если бы я делал обучающие курсы, я бы тратил ресурсы примерно в таком порядке.

1. Нанял бы по-настоящему талантливого автора, чтобы он преобразовал страницы справочника в чёткие и простые объяснения всех основных понятий языка.

2. Создал бы систему проверки ошибок, чтобы та вместо стандартного «вы ошиблись» выдавала ученику нормальные объяснения: «вы забыли поставить кавычки вокруг цифры три», «у вас получился бесконечный цикл, так как вы прибавляете единицу к "i" вместо того, чтобы отнимать». Эту систему ошибок я бы обновлял еженедельно — на основе новых ошибок учеников, которые я бы собирал специальным роботом.

3. Разработал бы хорошее, ветвистое и сбалансированное «дерево умений», причём не поленился бы найти ещё и опытного дизайнера, чтобы тот представил это дерево в наглядном, понятном с первого взгляда виде.

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

5. Если бы у меня остались деньги, я бы нанял профессионального писателя, чтобы тот разработал полноценную игровую вселенную: с историей, персонажами и так далее.

Как видите, все эти пункты, включая даже последний, не требуют космических вложений. Команда из нескольких высокоуровневых специалистов могла бы сделать всё это в течение года, уложившись в бюджет в 10-20 млн рублей.

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

Впрочем, есть в этой печальной ситуации и один плюс. Наши отечественные разработчики, — сайт «Учи.ру», например, — прогрессируют невероятно быстро. Таким образом, есть шанс, что первые полноценные геймифицированные курсы по программированию создадут именно в России.

Обновление. Важная поправка от читателя.

"На самом деле, bilerplate -- это никакая не кухонная утварь, а табличка (plate) на паровом котле (boiler) паровой машины (будь то паровоз, пароход или что-то другое подобное). Выглядит вот так:

Почему игровое обучение программированию не работает

Таблички эти ставились в обязательном порядке."

Оставить комментарий

Архив записей в блогах:
Человек может сделать повод для гордости из всего. Одна сумасшедшая утверждала, что всё держится потому, что она моет посуду. Определённо, такого же мнения многие женщины, не только сумасшедшие: "весь дом держится на мне". И цена этому заключению та же самая. Человеку удобно ...
Как известно, любой котик всегда стремится пройти за любую закрытую дверь. Чтобы не держать постоянно открытой входную дверь на даче мой брат установил специальную дверь для кота. Котодверь врезается в нижнюю часть двери. С внутренней стороны на двери есть два переключателя, ...
На следующей неделе запланировано несколько мероприятий с участием высокопоставленных российских чиновников, посвященных работе российского сегмента сети интернет в чрезвычайных ситуациях. В частности, эта тема будет обсуждаться в понедельник, 22 сентября, на совещании Совета безопасности ...
Носили мы , носили, но меня все время терзали смутные сомнения... Правильная ли она на самом деле? В общем, решила я Васю все-таки показать ортопеду. Клинику выбрали мною очень уважаемую - Труфит. Я уже было готова ко всему. Главный врач, хирург ...
По слухам, в Аптекарском проклюнулись первые подснежники. Не в оранжерее, в рамках подготовки к "Репетиции весны", а в живом грунте. А "Репетиция весны" официально откроется 23 февраля и продлится по 13 марта. Тюльпаны, нарциссы, крокусы, гиацинты, ландыши и многое, многое другое! И ...