{"id":14270,"url":"\/distributions\/14270\/click?bit=1&hash=a51bb85a950ab21cdf691932d23b81e76bd428323f3fda8d1e62b0843a9e5699","title":"\u041b\u044b\u0436\u0438, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u2014 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u0440\u0435","buttonText":"\u041d\u0430 \u043a\u0430\u043a\u043e\u0439?","imageUuid":"f84aced9-2f9d-5a50-9157-8e37d6ce1060"}

Как увлечь 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 комментария
Написать комментарий...
Сергей Подливчук

Нафига, а главное зачем? Программирование как ИЗО - сколько человека не заставляй рисовать пейзажи, он не станет великим художником. Да и питон - так себе язык для обучения программированию, во-первых: он сложный, во-вторых: у него динамическая типизация. Без статической типизации у человека нет понимания, почему нельзя складывать цифры и строки и вообще структуру кода. Ну и к тому же тот же + это перегруженный оператор у класса. Алгоритмический склад ума, тут лучше математики, геометрии, физики, химии еще лучше ничего не придумали. Только если ребенок начал сам залипать за кодом, может что то получится, в противном случае эти занятия - засорение головы ненужными обстракциями и отторжение, подобное занятиям музыкой.

Ответить
Развернуть ветку
Вадим Чиняев

в статье не написано что кого-то заставляют
оценку лучше - хуже имеет смысл проводить с целевой группой и фактами на руках
народ  занят? - занят, лучше это игрулек - "расскачай мага на 100 уровень" - хз, субъективно - более полезней.

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

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

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

Ответить
Развернуть ветку
Учи.ру team
Автор

Спасибо! Кстати, о решении проблемы с отдыхом от экрана мы уже думаем, планах уже есть эксперимент.

Ответить
Развернуть ветку
Ярослав Иликбаев

А как у вас с "доходимостью" до конца? По мой статистике 80 % отваливаются по ходу учёбы. 
И ваш интерфейс напомнил прогкидс там где они майнкрафт програмирруют), хотя это лучше чем драгдропплей или бродилка робота. 
Есть фри версия, для ознакомления?

Ответить
Развернуть ветку
Damir Shakirov

Отваливается 90% в записях. Учитывая что это питон, то отвал думаю 99,9%

Ответить
Развернуть ветку
Учи.ру team
Автор

Первые 8 заданий курса бесплатные, можно начать с них.
Пока о данных по "доходимости" рано судить - курс еще не полностью разработан.

Ответить
Развернуть ветку
Сергей Подливчук

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

Каким фронтом рулить, дядя? Сейчас клепальщиков форм как собак нерезанных, зато появились нейронки все бросились учить матан, который 10 лет назад на хую вертели, как и информатику в школе. Зато сейчас родители прям кипятком ссут, чтобы их дитя имело хорошие оценки по "компьютерным предметам". Всё это напоминает отдавание детей в музыкальную школу, занятия для ребенка в которой превращается а ад, так как игра на инструментах его не интересует как класс.

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

Ответить
Развернуть ветку
Вадим Чиняев

тяжело спорить с тем, кто на ходу реальность выдумывает.
родители разные - сегодня ойти, завтра юристы. Это уже на совести оных, если не вникают в интересы.
Мы же про детскую школу говорим? Ну если у тебя зп в 6 классе меньше сварщика - это терпимо.
Залез на hh(самые низкие рейты обычно) - vue, react полно в целом платят больше чем сварщику, хотя грят аргонщики норм подымают. 

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