Журнал / польза

Как устроены онлайн-курсы Яндекса по C++

Рассказывает старший разработчик Яндекса Илья Шишков.

C++ — язык, который используют крупнейшие IT-компании мира. На нем написана поисковая система Яндекса. Но выучить «плюсы» не так-то просто. Нужна не только теория, но и много-много практики. Соавтор специализации «Искусство разработки на современном C++», старший разработчик Яндекса Илья Шишков рассказал, как нужно построить онлайн-курс, чтобы сформировать у пользователей навык программирования на этом языке.

​Илья Шишков
​Илья Шишков

В специализации пять курсов. Первый из них мы назвали «Белый пояс по С++», и дальше по нарастающей, как в карате: желтый, красный, коричневый и черный. Три пояса уже запущены, над последними двумя мы активно работаем. У запущенных курсов высокие рейтинги на Coursera. У «Белого пояса» 16 тысяч активных участников (тех, кто посмотрел хотя бы одно видео) и уже больше 1000 выпускников. Следует учитывать, что, хотя мы обучаем C++ с нуля, в идеале на старте нужно знание другого языка программирования.

У нашей команды был как опыт применения «плюсов» на практике, так и опыт преподавания в Школе анализа данных и в российских вузах, так что и эти курсы хотелось сделать современными и практичными. Но когда дело дошло до записи видео, то оказалось, что первая версия «Белого пояса» выглядит как обычные лекции: большое количеством теории и код на слайдах. Мы смогли понять, что такая форма обучения никуда не годится, и путем проб и ошибок выработать несколько основополагающих принципов того, как сделать курсы полезными и удобными для освоения. 

Учить тому, чем действительно пользуются

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

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

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

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

Кроме того, мы добавили в специализацию темы, без которых невозможно представить современную разработку, хотя они и не относятся напрямую к C++. Поэтому на втором курсе мы учим людей писать юнит-тесты и покрывать ими код, а на третьем показываем, как искать в программе узкие места с помощью профилирования. 

Меньше, но понятнее

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

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

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

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

Пользователь постоянно видит свой результат

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

Пользователи как можно скорее должны почувствовать: «О! Я научился делать что-то, чего раньше не умел!»

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

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

Каждый пояс заканчивается финальным проектом. Это большая сложная задача, для решения которой нужно применить знания, полученные на всех предыдущих неделях курса. В «Белом поясе» нужно написать очень простую базу данных, «Желтый пояс» добавляет в нее новые возможности, «Красный» ставит перед слушателем задачу написать свою поисковую систему. Она простая, но построена на тех же принципах, что и реальные поисковики. Таким образом люди тратят на проект достаточно много времени, но зато сводят воедино все, что мы им рассказали на предыдущих неделях.