Как увлечь 3 млн школьников программированием на Python

Как мы делали курс программирования для детей 6–11 лет, не оглядываясь на другие свои продукты, а ориентируясь на опыт, амбиции и здравый смысл.

Ирина Красильникова
Дизайнер интерактивных курсов образовательной онлайн-платформы Учи.ру

Как все начиналось

В июне 2018 года мы собрали команду, чтобы создать новый предмет — программирование для учеников начальной школы. Методист, программист, иллюстратор и дизайнер (это я) должны были сделать такой курс, на котором дети без помощи родителей и учителей смогли бы освоить Python. В идеале он должен был получиться захватывающим и удерживать интерес ребенка как можно дольше.

Сейчас над курсом работают восемь человек: менеджер по продукту и методист в одном лице, дизайнер, иллюстратор, тестировщик и четыре JavaScript-разработчика.

Обучение делится на десять модулей, семь из которых уже выложены на сайт, а три — в разработке. За время существования курса уже 3 млн детей прошли хотя бы одно задание, более 2,4 млн — написали свой первый код. Многие возвращаются к пройденным заданиям и решают их повторно.

Наша команда, слева — в сентябре 2018 года, справа — в декабре 2019

Концепция и цель

У нас был полный карт-бланш. Мы могли делать что угодно, не оглядываясь на предыдущие курсы и ориентируясь на опыт, амбиции и здравый смысл. На первом совещании у нас не было ТЗ, программы и вводных — мы начали с нуля.

На берегу мы договорились, что делаем честное программирование, в котором ребенок научится вводить приближенный к реальному код, сможет стирать, отлаживать и проверять написанное. Два года назад уже было немало хороших scratch-based-платформ обучения, и нам было неинтересно делать еще одну drag-and-drop-игрушку. Поэтому мы сфокусировались на создании среды разработки с игровым контекстом и максимально отзывчивым интерфейсом.

Игровая основа

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

1. Бессвязность сюжета и механик

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

2. Однообразность механик и задач

Другие же конкуренты показались мне, напротив, чересчур последовательными. Курсы представляли собой набор из 200 уровней, на которых необходимо управлять одним и тем же роботом/трактором/обезьяной, — изменялся только рельеф местности и добавлялось количество функций.

Обе проблемы были решены формулой «герой + программируемые предметы»

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

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

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

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

Сергей Шашков, Менеджер по продукту курса «Программирование»

Как выглядит курс

Главная страница курса — это длинная карта с островами, на которых расположены кружочки уровней. Остров — это группа упражнений, объединенных темой и локацией. В каждом из них примерно 20 задач, часть из которых — необязательные задания «с огоньком», повышенной сложности. В среднем один остров дети проходят за час-полтора, а на весь курс уходит от 14 (для первоклассника) до 9 часов (для четвероклассника).

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

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

Кодовая зона максимально напоминает взрослую среду разработки. Тут есть название файла, кнопки Undo, Clear, запуска и отладки, а также инструменты для редактирования строк.

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

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

Доступность

На момент проектирования курса процент мобильных устройств среди нашей ЦА был не больше 10 (сейчас он вырос до 35%), но мы все равно решили, что будем адаптировать его для всех устройств — от мобильника до интерактивной доски. Это был первый адаптированный курс на Учи.ру, до этого все карточки масштабировались под размер экрана, а поля заполнялись обоями. Кроме того, было вызовом создать не только адаптив под разные размеры экранов, но учитывать и тач-устройства. В этом нам снова помогла находка с выпадающими подсказками, а для передвижения Гриши мы включаем экранный джойстик.

Наш курс рассчитан на учеников 1–6 классов. А это значит, что мы должны быть готовы к тому, что некоторые из них еще плохо читают и не знают английского. Для всех заданий мы делаем озвучку, английские слова озвучиваем отдельно и выделяем особым образом. Иконки при написании кода тоже здорово помогают детям ориентироваться в языке.

Новые острова

В основе каждого нового острова необходимо заложить крепкий фундамент из трех составляющих:

  • методической цели (чему учим);

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

Например, на шестом острове мы учим детей поворачивать космический корабль на произвольный угол и чуть позже — циклам. А чтобы усложнить и поддержать интерес, добавили механику шутера: надо отстреливать астероиды на своем пути.

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

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

Ачивки, мультики и звездочки

Мы много работаем над онбордингом и оптимизацией проходимости курса.

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

Второй метод — звездочки, которые ученик зарабатывает во время прохождения каждого уровня. Часто дети, увидев на финальном экране, что они получили не все звездочки, проходят уровень повторно. Это стимулирует собирать больше звездочек в следующий раз, писать больше кода, проходить задания повышенной сложности. Также это сильно влияет на время, которое проводит пользователь на платформе. Решение «на три звезды» в среднем требует на 30–50% больше времени, чем просто прохождение уровня.

Третья сила — это ачивки. Их можно получить за выполнение нескольких заданий подряд без ошибок и другие подобные мини-квесты. Изначально мы создали эту систему, чтобы подтолкнуть детей к повторному прохождению уровней в промежутках между выходами новых островов, а также для того чтобы ученики хвастались своими успехами в соцсетях. Гипотеза с соцсетями не подтвердилась — дети не очень охотно делились достижениями, но время нахождения в курсе у пользователей, которые реагируют на ачивки, увеличилось на 12%.

Большой проблемой было перебороть страх учеников перед кодовой зоной и сделать простой и внятный онбординг. У нас было 5–6 итераций стартовых заданий, прежде чем мы смогли сгладить резкий отток пользователей на первом упражнении с написанием кода. В итоге нам помогли мультики и плавный вход в тему. А также ангельское терпение наших front-end-разработчиков, которые переделывали эти задания и онбординги.

Тестирование с детьми

В процессе создания у нас возникает много гипотез, которые мы проверяем на разных стадиях разработки острова. Специфика продукта такова, что полноценно протестировать остров возможно только уже на финальной стадии, когда код работает и сцена на него реагирует, поэтому цена ошибки велика. Приходится прибегать к ухищрениям, чтобы убедиться, что остров не окажется слишком трудным или не оттолкнет учеников сеттингом. На ранних стадиях проекта мы тестировали интерфейс с детьми и постоянно находили с ними какие-то волшебные неочевидные баги — это было полезно как для разработчиков, так и для оптимизации интерфейса с моей стороны.

Зоны роста и планы

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

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

На первом совещании мы накидали примерную структуру курса, до чего мы сможем доучить ученика начальной школы в Python, и разбили ее на блоки. Мы покрыли эту программу примерно на 70%: сделали семь островов, на данный момент ученикам доступно 110 заданий. Нам осталось доделать три острова. Сейчас работаем над восьмым и параллельно уже год занимаемся новым курсом Python для учеников 6–11 классов. На днях выкатили его на небольшую тестовую группу пользователей, будем тестировать, дополнять, а осенью раскатим на широкую аудиторию.

И все-таки честным программирование на Python в рамках нашего курса можно назвать с оговоркой: мы не заставляем ученика постоянно подключать модули и городить сложные конструкции и часть черной работы делаем за него. В остальном, кроме отсутствия импортов, код для решения задач — это честный Python. По окончании программы школьники смогут пользоваться черепашьей графикой из модуля Turtle, а также будут знать некоторые языковые конструкции (циклы for и while, ветвление с if, функции).

0
63 комментария
Написать комментарий...
Valeratal Val

А что делают дети 6-11 лет с этим багажом знаний по Питону. Работать им еще рано (вроде) 

Ответить
Развернуть ветку
Alexey Chernov

Расширение кругозора. Программистский взгляд на мир, позволяющий лучше понимать, как работают устройства вокруг нас и каких ошибок от них можно ждать.
А те, кто действительно увлечется, уже лет с 14 могут хоть зарабатывать, хоть пробовать создать что-то своё, хоть в open source проектах участвовать.

Ответить
Развернуть ветку
Valeratal Val

Кругозор расширяют немного иначе.
Программисткий взгляд на мир - это скорее минус
Как работают устройства вокруг нас - изучают устройства
До 14-и еще надо дорасти. Много ли детей в 14 зарабатывают или в опенсорсах участвуют? 

Ответить
Развернуть ветку
Alexey Chernov
 Программисткий взгляд на мир - это скорее минус

Я так не считаю.)

 Как работают устройства вокруг нас - изучают устройства

Одно другому не мешает. Чтобы понимать в общих слова, как отвечает голосовой помощник или почему какой-то сайт выдает ошибку, опыт программирования мне кажется полезнее опыта конструирования устройств.

"С 11 до 14 лет" условно можно что угодно делать. Я пробовал писать программу для игры в быки и коровы. Или замощал экран разноцветными квадратиками, порождёнными остатками чисел Фибоначчи на разные модули. Одноклассник писал простую игрушку, на которую пол-класса залипло.
Конечно, не всем это интересно, как и рисование и что угодно другое; но для меня программировать было очень интересно. Жаль, что не было подобных интерактивных курсов - но мне папа и учителя и книжки их неплохо заменили.

Ответить
Развернуть ветку
Valeratal Val

Вы педагог? психолог детский? Если нет, Ваше мнение - бесценно (в смысле никому не надо)

Вам кажется

Ответить
Развернуть ветку
Alexey Chernov

15 лет работы в школе, в том числе учителем программирования, 7 лет преподавал в университете, если интересно.

Ответить
Развернуть ветку
60 комментариев
Раскрывать всегда