Как авторы в Практикуме пишут образовательные курсы

За каждым из курсов в Яндекс.Практикуме стоит большая команда: разработчики, иллюстраторы, дизайнеры, методисты, наставники, код-ревьюеры и, конечно, авторы и редакторы, которые пишут материал курса.

Если коротко, программа курса создается так:

b_1h5myunf-jtc7dwyfga7o2jtg.png

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

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

Как подавать материал


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

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

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

-ptjtbwte2-rcq4ztcs-rr_gw_k.png

Пример из курса «Разработчик C++»

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

znsjeaauoydvc3dmfssd52dl6n8.png

С помощью бабули, клубка ниток и свитера мы объясняем, что такое ORM, на курсе «Мидл python-разработчик»

Навык объяснения сложных вещей самому себе или своей команде простым языком — краеугольный камень в работе автора.

Как поддерживать интерес студента


Даже понятный и полезный текст всё равно может наскучить, поэтому мы всегда стараемся учитывать современный культурный контекст. Мы считаем, что авторам полезно следить за медиа, быть в курсе культурного кода, помнить старую добрую классику и смотреть новые фильмы.
f6w35huebzcwprzvwhpzg74jzaq.png

Отсылка к «Пятому элементу» в теме про универсальный паспорт на курсе по Python

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

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

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

g_livdvb0anp0pqhso65kbdovw8.png

Космическая официантка сопровождает студентов на курсе «React-разработчик»

В бесплатной части курса «Python-разработчик» студенты создают собственного персонального помощника Анфису. Анфиса умеет запрашивать информацию на сторонних сервисах и использовать полученные данные в работе. Она хранит список друзей (как в записной книжке), может определять погоду в городе каждого друга и угощать друзей мороженым. Друзья в списке Анфисы — это ребята из нашей команды, которые готовили курс (небольшая пасхалочка от авторов). А города, в которых живут друзья, — это города, где на самом деле родились ребята из команды. Анфиса постепенно увеличивается по мере прохождения курса. В самом начале Анфиса маленькая, так как ещё мало что умеет. Но постепенно студент пишет код, добавляет ей разные функции, и Анфиса растёт.

pdpat56zfdibpnq15mmqeqsgreo.png

Иллюстрация из курса «Python-разработчик»: открытая коробка — это пройденный урок, в ней предметы, метафорично связанные с Django, а новая коробка — это то, что ещё предстоит узнать

Какие сложности возникают


Очень важно объяснять сложные технические явления на простых примерах и привычных ассоциациях. Но далеко не всё из мира программирования можно быстро и понятно переложить на повседневность. Некоторые примеры довольно очевидны, но ряд понятий сложно объяснить просто.

Например, как объяснить, что такое фреймворк? На курсе «Python-разработчик» мы делаем это так:

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

    Предположим, нужно обзавестись жильём.

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

    Долго. Дорого. Неэффективно. Сложно в обслуживании (никто не знает, как у вас всё устроено). А можно купить готовую квартиру: у неё есть внешние стены, подведены вода, отопление, канализация и свет. Останется установить внутренние стены, наклеить обои и расставить мебель.

    ykc6s-adl1cjc0k46fulye66yjk.png

    Такая квартира — это фреймворк, основа проекта. Перенести несущие стены или сделать из неё самолёт или корабль не получится, но всё, что внутри, можно менять в довольно широких рамках. Мраморный пол, махровый халат в ванной и мягкий кот? На здоровье. Чёрные стены, кованые шторы и свирепый доберман? Пожалуйста.

    Можно сделать всё что угодно. Фреймворк позволит быстро обустроиться и жить с комфортом.


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

Однако когда у автора получается подобрать правильную (и понятную!) аналогию — это повод для отдельной и бурной радости.

Вот ещё несколько примеров, как мы объясняем сложные понятия:

  • конверсию объясняем на примере съеденных внуками пирожков:
    wxiecbsdk_xfk3a8kxub1g9rwrw.png

  • противоположные события из теории вероятностей — на примере покупки фильма в онлайн-кинотеатре:
    mbq4ldsft2jaksqmmceihs4xdym.png

  • типы данных в программировании определяют множество значений, а также набор операций, которые можно производить с объектом. Здесь как часть объяснения рассказываем про перечницу и солонку, которые отличаются ситуациями использования, а их содержимое определено количеством отверстий в крышечке;
  • в теме про циклы for показываем визуализацию алгоритма приготовления пяти блинчиков в виде пазла: такой рецепт изначально содержит много повторов одних и тех же действий, которые можно схлопнуть вместе, обернув в цикл с заданным количеством повторений:
    nzg_elx8ttaodtddvdujehhjzcu.png
  • объясняя структуру данных «словарь» в Python, проводим аналогию с англо-русским словарём, в котором каждому английскому слову соответствует один или несколько вариантов перевода на русский.

Какую роль выполняют авторы


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

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

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

Текст кочует туда-сюда, пока не станет достаточно информативным и однозначным, однако авторская подача из него не пропадает.

Как разработчики становятся авторами


Люди приходят к авторству разными путями и из разных специальностей. Было бы логично, если бы к нам приходили те, кто писали статьи или уроки раньше, но таких кандидатов довольно мало. Чаще всего авторы — это разработчики, которым интересна сфера образования и которые хотят делиться знаниями с другими. Помимо опыта в конкретной области программирования нам важно, чтобы автор умел интересно писать и объяснять так, чтобы его понял человек не из IT. Ещё важно, чтобы автор умел проводить точные аналогии, придумывать метафоры, примеры и задачи из практики.

Вот несколько историй авторов Практикума.

dzzrhufnswxpxjayaoubyhaptpq.pngАртемий Верещинский, автор курса «React-разработчик», руководитель разработки пользовательских интерфейсов в компании АО «Нетрис»

Артемий всегда хотел заниматься интерфейсами, верстать начал ещё будучи сисадмином, затем освоил разработку с CMS (Wordpress), после чего работал с европейскими брендами пищевой промышленности. Потом были полтора года фриланса и освоение дизайна и JS.

Работал frontend-разработчиком у дистрибьютора Razer, Pantone и других компаний, сделал ЛК и корзину. Совмещал две роли и в дочерней компании Ростелекома, осваивал fullstack-разработку, реализовал продукт для управление видеотрансляциями и наблюдением для мировых судов.

Сейчас Артемий управляет командой дизайнеров, создающих дизайн-систему и разрабатывающих B2G-проекты в сфере видеонаблюдения, пишет код в роли фронта.

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

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


wcf5bfi1dyhv55ueswf8vkis_fy.jpegСергей Озеров, автор курса «Веб-разработчик», фронтенд-разработчик в nebenan.de

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

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

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

ddv-rpx2cxdniesfy-p-hfn-fwm.jpegАндрей Строгов, лид контента первого этажа веб-факультета

Андрей учился в меде и в свободное время изучал программирование. Ему тоже случайно предложили преподавать школьникам JS и основы вёрстки.

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

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


ivcgmebqempblgr6jo30bcnlw9s.jpegНастя Рагозина, автор курса «Java-разработчик»

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

Я поняла, что готова работать в этой сфере, и на данном этапе мне бы хотелось сделать это своей основной занятостью. Мне повезло: именно в этот момент в Практикуме начали набирать авторов для курса по Java.

Как не надо доносить знания до новичков


В процессе работы мы составили для себя отдельный список из того, чего надо всеми силами избегать.
  1. Давать студентам примеры кода и просить прорешать задачи без какого-либо объяснения.

    Наши уроки построены в виде лонгридов с теорией, которые разбавлены квизами и заданиями, или в формате конспекта-теории с тренажёром для написания кода. Таким образом, студенты никогда не пишут код до объяснения.

  2. При объяснении темы ссылаться на то, чего студент ещё не знает, просить его пока просто поверить, что всё так и работает.

    Если вы начинаете объяснение с фразы «В общем, оно тут вот так работает, просто запомните, это мы на следующих занятиях обсудим», — это неудачная практика. Объясняйте сразу, как и почему работает тот или иной инструмент, о котором вы рассказываете.

  3. Сразу закидывать человека множеством сложных терминов и определений или усложнять подачу академическим стилем.

    Это отличный способ отбить желание учиться в принципе. Если перегрузить человека огромным списком формализованного текста, он быстро потеряет интерес к учёбе. Фразы вида «При объявлении переменной необходимо добиться того, чтобы её тип соответствовал…» стоит забыть.

  4. Не объяснять студенту, какой практический навык он сейчас приобретает и где он ему пригодится.

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

  5. Объяснять одну сущность с помощью упоминаний десятка других сущностей. Такой подход путает и отнимает много времени у студента.

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

© Habrahabr.ru