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

Увлечь-то можно, а выхлоп какой?
Вот изучал я турбопаскаль... Грезил программами и небольшими роликами на нем... А потом оказалось, что это один из ущербнейших языков. Это среда Delphi потом нормальная... Хотя до сих пор в некоторых вузах учат TB7, некоторые, к счастью хотя бы на PascalABC и Lazarus переходят.

Ладно, Пайтон не такой, он перспективный. Как и в любом языке первые 4-6 глав учебника такое простенькое, а+б, если с, то д и т.д. И бац! Следующая глава - лямбда-функции со сложновложенными условиями, кортежами и списками, импортируемыми из нескольких источников. И не смотря на кросс-платформенность, какой-нибудь модуль у тебя работать не будет (черепашонок в пайтоне и сишный math на линуксе, например).

Хорошо, как-то понял и с подсказками написал. Открываешь вакансии и видишь доп.требования:  С++, NodeJS, PHP, CSS, VueJS, PyQT, HTML, и Бигдата в придачу с основами AI.

Твой кролик написал (in english)!, да мне еще пару лет надо на это, а жить-то я на что буду? 
А-а-а, я взрослый дядька залез в тему обучения детей? А дети, когда увидят, что еще надо изучить, чтобы хоть как-то успешно применять полученные навыки, грустными не станут? Мотивация не пропадет? Или ваша цель срубить бабла на обучении, а дальше конь не валяйся?

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

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

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

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

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

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

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

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

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

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

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

Ответить
Развернуть ветку
6 комментариев
Андрей Новиков

И чем этот проект отличается от Codecombat? Или "вы не понимаете - это другое"?

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

Мы изучали CodeCombat при разработке, он отличается от нашего курса как минимум отсутствием озвучки, другой ЦА, не такими отзывчивыми и внятными обработками ошибок. Программируют там персонажей-людей, а не объекты реального мира (в статье я написала, почему программировать предметы детям оказалось удобнее), специфичный и немного устаревший, перегруженный интерфейс, опять же, он не для каждого 7 летки подойдет.

Прикрепляю скриншоты Codecombat, можно отметить как много они уделяют места геймификации, и оценить общий look&feel этого продукта.

Ответить
Развернуть ветку
1 комментарий
Сергей Токарев

наверное, тем, что детям 6-11 лет трудно просто так взять и прийти на CodeCombat?

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

Доставка до уже существующего пользователя - решает.

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

Мне кажется вариант логомиров был более взвешенный(сейчас безусловно устаревший, но суть что не должно быть сверхразвлечения, надо напрягаться). Тут по сути слишком много отвлекающего. получается. Станут ли дети действительно обращать внимание на программирование, а не залипнут на картинку. Т.е. проблема в том что обучение и развлекательный характер похоже не очень совместимы с вещами(чтение, математика, программирование), которые не получаются на раз два.
Более того по себе и по большинству своих знакомых - пока честно не сделаешь сам руками - фиг ты научишься решать дифуры и брать зубатые интегралы, сколько бы не пытался просто читать/разбирать примеры. Надо сухо решать самому.(из 100 человек где-то 3-5 только было кто мог прочитав научиться решать)

Откуда такое мнение. У меня ребенок, у моей сестры по старше дочь.
Что я вижу - ребенок хочет здесь и сейчас. Он хочет красивую картинку или звук наименьшими действиями, а сделав действие не задумывается над тем что сделал - начинается залипание в происходящее. Т.е. было отличное приложение для математики - нет рекламы, хорошая озвучка есть разный уровень заданий на сложения(выбрать правильный ответ, ввести самому, составить комбинацию) + разный набор чисел(0-9 и 0-20 и более). Так вот оказалось что толку ни от каких этих заданий нет. Там начинает работать перебор, протыкивание вариантов итп. Точно такая же история с буквами. В итоге бумажный букварь(с нормальными текстами и правильной подборкой слогов), мельная доска и счетные палочки + одобрения родителей дали эффект несравнимый с тем что было от красочных и красивых приложений(они реально хорошие, они спокойные, не вырви глаз по цветам и звукам, с кучей настроек для родителей).

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

Если у ребёнка начинает работать перебор, значит методически что-то сделано не так.
Наши задания нельзя просто взять и прощёлкать: это не сможет сделать даже взрослый человек, умеющий кликать очень быстро. Придётся думать.
Для детей оффлайновые инструменты + родители и их одобрение практически всегда имеют более сильный эффект, чем только онлайн. Мы не претендуем на полную замену занятий с учебниками, учителями и родителями. Наоборот, мы хотим, чтобы у детей была возможность с кайфом учиться чему-то нетривиальному, даже если у родителя/учителя нет возможности заниматься с ребенком индивидуально.

Ответить
Развернуть ветку
Liliia DeCos

моей дочери 5  лет, у нее полный курс 1 класса и сегодня она закончила Програмирование. Ребенок плаче) хочет еще. Скажите, если я куплю второй класс, там будет другие задания по програмированию или с 1 по 6 класс один и тот же курс?Спасибо!

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

Лилия, добрый день! Очень рады таким юным и таким талантливым ученикам! Вы правы, курс для учеников 1-6 классов един. Однако курс еще не завершен: совсем скоро, в течение месяца мы выпустим новый остров "Спасительные функции", следите за обновлениями.

Ответить
Развернуть ветку
anton asanov

Дочери 8 лет, с 6 ходит на робототехнику, в 7 лет занималась немного в Скретч, английский начала изучать во втором классе в школе. на Учи.ру начала "Программирование", ей все нравится, возникают сложности иногда, но не сдается, было пару заданий над которыми думала несколько дней, но все равно доводила дело до конца. О помощи родителей речи даже нет - мы с мужем тут вообще никак))) Пока ещё проходим Космодром и градусы, но уже как родитель хочу сказать огромное спасибо разработчикам. Что касается мнения что курс фигня и он не поможет детям стать программистом, то скажу следущее - задачи сделать из моей дочери программиста нет, она вообще хочет стать массажистом или певицей 😂 Я вижу, что изучая этот курс программирования ребенок, учится мыслить, преодолевать трудности и добиваться результатов, ей это нравится и ей это интересно, она бы не стала заниматься этим предметом на Учи. Ру если бы ей это было скучно. 
С Уважением, Елена мама Жени

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

Елена, спасибо! Желаем Жене успехов!

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

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

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

то же, что и с багажом знаний по математике)

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

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

Ответить
Развернуть ветку
4 комментария
Евгения Шишкина

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

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

Можно в любой момент перечитать стартовые задания перед упражнениями, там вся теория дается с плавным усложнением. Плюс если под аккаунтом родителя зайти на https://uchi.ru/programming/, будут доступны все ответы.

Ответить
Развернуть ветку
2 комментария
Александр Ивельский

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

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

Александр, спасибо! Радостно, что вашему сыну нравится наш курс, передам команде)

Ответить
Развернуть ветку
Sakari Sauso

Мне кажется, что это маркетинговая уловка, вы берёте один самых популярных языков и опа, дети от 6 до 11 уже могут его изучать, родители спокойны за будущее ребёнка и т.д. Я бы лучше со scratch начинал

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

Действительно, Python очень популярный и востребованный на данный момент язык разработки. Почему бы не учить детей ему? У него достаточно простой синтаксис, который легко читать, а так же широкий функционал с множеством готовых расширений.

Скретч - тоже отличный выбор для старта, но практически не применимый в профессиональной среде.

Ответить
Развернуть ветку
2 комментария
Злой Полушубок

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

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

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

Ответить
Развернуть ветку
Maxim Tikhonenkov

Прошли курс полностью именно с первоклашкой. На мой взгляд курс, как и английский сложноват. Проблема как мне кажется в резких скачках сложности. Ребёнок зависает. Плюс родители я думаю в большинстве своём тоже. Я то как программист конечно вижу что это питон и какую именно тему пытаются преподнести (когда то давно сам читал лекции), поэтому с моей помощью курс осилили. Но! Самостоятельно ни в жизни. Надо вводить больше повторений, чтобы автоматизм оттачивался и делать задания более размазанными, чтобы новый функционал в течении 7-8заданий давал я, а только потом наращивать его сложность

Ответить
Развернуть ветку
Igor Kravchinsky

Где ссылка на курс?

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

Курс доступен для ознакомления для аккаунта родителя или ученика по этой ссылке:

Ответить
Развернуть ветку
Александр Головин

Если я правильно понял, то вот:
https://uchi.ru/students/programming

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

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

Комментарий удален модератором

Развернуть ветку
Яна Федотова

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

Ответить
Развернуть ветку
Alexandr Svetlov

Не ЯП надо учить, а математике, алгоритмам и другим базовым вещам. ЯП за 10 лет, пока эти школьники подрастут изменятся по пять раз. А база останется навсегда. Почему так трудно понять, что ЯП это всего лишь инструмент для решения конкретной задачи. 
Дом можно строить из бревен, камня или бетона. Но не зная базовых принципов постройки домов, а только как класть кирпичи, ничего путного такой специалист никогда не построит.

Ответить
Развернуть ветку
anton asanov

Да, и ещё - все кружки, секции, чем заниматься выбирает она сама

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