Как авторы в Практикуме пишут образовательные курсы
Если коротко, программа курса создается так:
Даже после всех этих этапов программа дополняется и обновляется. Выходят новые версии языков программирования и фреймворков, меняется контекст использования инструментов, приходит обратная связь от студентов — всё это учитывается при составлении свежей версии курса.
В этом посте мы расскажем, как процесс написания курсов устроен со стороны авторов. Под катом — главные правила создания полезных курсов, концепция смерти автора, топ-5 вещей, которые не надо делать, если вы хотите написать хороший курс, и немного личных историй. Пост пригодится специалистам, которые участвуют в процессе передачи знаний: тимлидам, техноблогерам и создателям обучающего контента.
Как подавать материал
В Практикуме есть курсы для начинающих и продолжающих. В этом посте мы будем говорить о первой группе.
Чаще всего к нам приходят студенты, которые либо совсем ничего не знают по теме, либо знают довольно мало. Хотя есть и те, кто уже изучал что-то самостоятельно, мы всё равно ориентируемся на первых и стараемся подавать материал простым языком.
Чтобы студентам было просто воспринимать материал, мы строим его на примерах из реальной жизни. Так мы можем объяснять работу переменных, функций, циклов и всего остального, не используя сложные термины. Как правило, студенты-новички очень благодарны, когда мы объясняем циклы не на примере других циклов, а, например, на примере хождения к холодильнику.
Пример из курса «Разработчик C++»
Нам очень помогает опыт самих авторов. Они хорошо помнят, как сами добывали знания. Многие из них не просто зубрили документацию, а пересказывали себе суть темы в упрощённом формате, на привычных примерах, с понятными сравнениями. Теперь они делают то же самое для других людей.
С помощью бабули, клубка ниток и свитера мы объясняем, что такое ORM, на курсе «Мидл python-разработчик»
Навык объяснения сложных вещей самому себе или своей команде простым языком — краеугольный камень в работе автора.
Как поддерживать интерес студента
Даже понятный и полезный текст всё равно может наскучить, поэтому мы всегда стараемся учитывать современный культурный контекст. Мы считаем, что авторам полезно следить за медиа, быть в курсе культурного кода, помнить старую добрую классику и смотреть новые фильмы.
Отсылка к «Пятому элементу» в теме про универсальный паспорт на курсе по Python
Часто мы используем пасхальные элементы. Например, курс по Java, который мы сейчас готовим к запуску, построен как путешествие с героем, который по мере прохождения решает различные задачи. Мы зашиваем в процесс пасхалки, чтобы студент не просто решил задачу, а ещё и улыбнулся в процессе, увидев отсылку к любимому сериалу или известной песне.
На многих курсах внимание студентов удерживают при помощи сторителлинга. Даже если герой и его история выдуманы, материал становится более интересным и запоминающимся для читателя-новичка.
Например, на новом курсе «React-разработчик» студент в самом начале знакомится с героиней, которая устраивается в захолустную космическую бургерную официанткой и мечтает её улучшить. На протяжении всего обучения студент разрабатывает сайт для космобургерной, а герои истории его поддерживают: когда в проектной работе ему предстоит создать CRA-заготовку и структуру папок под компоненты, героиня представляет свой план по улучшению бургерной, а когда студент должен написать весь JSX и сверстать, герои приступают к ремонту в бургерной и красят стены.
Космическая официантка сопровождает студентов на курсе «React-разработчик»
В бесплатной части курса «Python-разработчик» студенты создают собственного персонального помощника Анфису. Анфиса умеет запрашивать информацию на сторонних сервисах и использовать полученные данные в работе. Она хранит список друзей (как в записной книжке), может определять погоду в городе каждого друга и угощать друзей мороженым. Друзья в списке Анфисы — это ребята из нашей команды, которые готовили курс (небольшая пасхалочка от авторов). А города, в которых живут друзья, — это города, где на самом деле родились ребята из команды. Анфиса постепенно увеличивается по мере прохождения курса. В самом начале Анфиса маленькая, так как ещё мало что умеет. Но постепенно студент пишет код, добавляет ей разные функции, и Анфиса растёт.
Иллюстрация из курса «Python-разработчик»: открытая коробка — это пройденный урок, в ней предметы, метафорично связанные с Django, а новая коробка — это то, что ещё предстоит узнать
Какие сложности возникают
Очень важно объяснять сложные технические явления на простых примерах и привычных ассоциациях. Но далеко не всё из мира программирования можно быстро и понятно переложить на повседневность. Некоторые примеры довольно очевидны, но ряд понятий сложно объяснить просто.
Например, как объяснить, что такое фреймворк? На курсе «Python-разработчик» мы делаем это так:
- В совершенно разных проектах разработчики вынуждены решать стандартные задачи. Раз за разом программисты пишут системы хранения и модификации данных, инструменты для управления аккаунтами, программы для отображения информации на экране пользователя. Эти системы есть почти в каждом проекте, также как у любого дома есть стены, крыша и окна.
Предположим, нужно обзавестись жильём.
Можно сделать всё самостоятельно. Изготовить кирпичи и сложить стены. Напилить досок и сделать окна, двери и табуретки. Не забыть бы про плитку в ванной, трубы и тысячу других вещей.
Долго. Дорого. Неэффективно. Сложно в обслуживании (никто не знает, как у вас всё устроено). А можно купить готовую квартиру: у неё есть внешние стены, подведены вода, отопление, канализация и свет. Останется установить внутренние стены, наклеить обои и расставить мебель.
Такая квартира — это фреймворк, основа проекта. Перенести несущие стены или сделать из неё самолёт или корабль не получится, но всё, что внутри, можно менять в довольно широких рамках. Мраморный пол, махровый халат в ванной и мягкий кот? На здоровье. Чёрные стены, кованые шторы и свирепый доберман? Пожалуйста.
Можно сделать всё что угодно. Фреймворк позволит быстро обустроиться и жить с комфортом.
Это неожиданный и серьёзный вызов. Может показаться, что нет ничего сложного, когда автор в теме, — пусть сядет и объяснит. Но именно из-за того, что автор хорошо разбирается в теме, он будет объяснять что-либо на примерах, которые требуют отдельного объяснения.
Однако когда у автора получается подобрать правильную (и понятную!) аналогию — это повод для отдельной и бурной радости.
Вот ещё несколько примеров, как мы объясняем сложные понятия:
- конверсию объясняем на примере съеденных внуками пирожков:
- противоположные события из теории вероятностей — на примере покупки фильма в онлайн-кинотеатре:
- типы данных в программировании определяют множество значений, а также набор операций, которые можно производить с объектом. Здесь как часть объяснения рассказываем про перечницу и солонку, которые отличаются ситуациями использования, а их содержимое определено количеством отверстий в крышечке;
- в теме про циклы for показываем визуализацию алгоритма приготовления пяти блинчиков в виде пазла: такой рецепт изначально содержит много повторов одних и тех же действий, которые можно схлопнуть вместе, обернув в цикл с заданным количеством повторений:
- объясняя структуру данных «словарь» в Python, проводим аналогию с англо-русским словарём, в котором каждому английскому слову соответствует один или несколько вариантов перевода на русский.
Какую роль выполняют авторы
У каждого автора свой стиль, и мы стараемся его сохранить. В корпоративной среде популярна концепция смерти автора. Её идея такова: в готовом материале не должно быть видно автора. Главное — передать смысл, факты и опыт. Дальше редактор сделает текст максимально обезличенным и выверенным.
Мы не согласны с этой концепцией. Как нам кажется, она разрушает наш формат подачи материала. Да, у нас есть редакторы, вместе с методистами они отсматривают тексты авторов, поправляют, ставят себя на место студентов. При этом автор может по-особенному шутить в рамках своих представлений о прекрасном. Если это не вредит смыслу, редакторы оставляют подобные штуки в тексте.
Авторы продумывают внутренние связки этапов, названия модулей, связки с событиями сторителлинга и многое другое. Редакторы следят за тем, чтобы программа курса усложнялась постепенно, без резких рывков. Методист может предложить перенести информацию в дополнительные материалы, чтобы не перегружать студента в самом начале.
Текст кочует туда-сюда, пока не станет достаточно информативным и однозначным, однако авторская подача из него не пропадает.
Как разработчики становятся авторами
Люди приходят к авторству разными путями и из разных специальностей. Было бы логично, если бы к нам приходили те, кто писали статьи или уроки раньше, но таких кандидатов довольно мало. Чаще всего авторы — это разработчики, которым интересна сфера образования и которые хотят делиться знаниями с другими. Помимо опыта в конкретной области программирования нам важно, чтобы автор умел интересно писать и объяснять так, чтобы его понял человек не из IT. Ещё важно, чтобы автор умел проводить точные аналогии, придумывать метафоры, примеры и задачи из практики.
Вот несколько историй авторов Практикума.
Артемий Верещинский, автор курса «React-разработчик», руководитель разработки пользовательских интерфейсов в компании АО «Нетрис»
Артемий всегда хотел заниматься интерфейсами, верстать начал ещё будучи сисадмином, затем освоил разработку с CMS (Wordpress), после чего работал с европейскими брендами пищевой промышленности. Потом были полтора года фриланса и освоение дизайна и JS.
Работал frontend-разработчиком у дистрибьютора Razer, Pantone и других компаний, сделал ЛК и корзину. Совмещал две роли и в дочерней компании Ростелекома, осваивал fullstack-разработку, реализовал продукт для управление видеотрансляциями и наблюдением для мировых судов.
Сейчас Артемий управляет командой дизайнеров, создающих дизайн-систему и разрабатывающих B2G-проекты в сфере видеонаблюдения, пишет код в роли фронта.
Я думаю, это отчасти кармическая история: мне захотелось преподавать IT именно в России. Не то чтобы я был слишком патриотичен, но таков мир: кому-то повезло больше, кому-то меньше. Освоение digital-профессии сейчас — это полноценная возможность серьёзно поменять свою жизнь, знания и уровень заработка, а распространение знаний и экспертизы через неклассические методы — это очень важно. Можно вообще всю жизнь заниматься созидательной деятельностью, став программистом или дата-сайентистом, например. Вы не привязаны к конкретному городу, можно так или иначе из глубинки работать на ту же Москву.И на самом деле приятно осознавать, что мы можем делиться экспертизой, доносить полезные знания и в итоге делать жизнь людей лучше.
Сергей Озеров, автор курса «Веб-разработчик», фронтенд-разработчик в nebenan.de
Знакомый позвал Сергея преподавать детям основы программирования. До этого он учился в физмат-лицее, затем в техническом вузе на физика, но программирование во время учёбы давалось ему с трудом. В очередной раз в попытках разобраться в теме он решил объяснить её самому себе, как ребёнку, максимально разжёвывая все термины и определения.
Этот подход в будущем помог ему объяснять не сферическое программирование в вакууме, а показывать на пальцах, где, как и для чего какой код можно применять, какие программы можно писать, что они делают и где встречаются в реальной жизни.
Когда ты объясняешь что-то детям, даже то, что ты давно прошёл и вроде бы отлично знаешь, начинаешь разбираться в этом ещё лучше. На старте я сам только вливался в некоторые темы, и подготовка материалов для детей помогла мне отлично их освоить.
Андрей Строгов, лид контента первого этажа веб-факультета
Андрей учился в меде и в свободное время изучал программирование. Ему тоже случайно предложили преподавать школьникам JS и основы вёрстки.
Я долго не соглашался, думал, это не моё. Но потом провёл пару пробных занятий и втянулся: это реально круто, когда сидишь и занимаешься своими делами в четыре утра, а тебе ученик пишет в дискорд: «Андрей, зацени, я тут сбацал приложение на реакте». Причём на тот момент я вообще им про реакт ничего не рассказывал, парень сам до этого докопался и пришёл ко мне с рабочим примером.А когда меня позвали в Практикум, я долго выбирал между наставничеством и созданием контента для курсов. В результате понял, что хочу именно понятно и просто доносить до новичков свою экспертизу. Мне вообще кажется, что базовые штуки из computer science можно преподавать кому угодно, вне зависимости от возраста и бэкграунда.
Настя Рагозина, автор курса «Java-разработчик»
Настя несколько лет работала программистом на Java в B2B-сегменте, но со временем потеряла к этому интерес. Спустя пару месяцев после ухода с работы начала искать парттайм, связанный с образованием, — хотела сохранить собственные навыки, а также ей всегда нравилось помогать новичкам. Настя начала с роли ревьюера на одном из курсов, затем написала несколько материалов для курса.
Я поняла, что готова работать в этой сфере, и на данном этапе мне бы хотелось сделать это своей основной занятостью. Мне повезло: именно в этот момент в Практикуме начали набирать авторов для курса по Java.
Как не надо доносить знания до новичков
В процессе работы мы составили для себя отдельный список из того, чего надо всеми силами избегать.
- Давать студентам примеры кода и просить прорешать задачи без какого-либо объяснения.
Наши уроки построены в виде лонгридов с теорией, которые разбавлены квизами и заданиями, или в формате конспекта-теории с тренажёром для написания кода. Таким образом, студенты никогда не пишут код до объяснения.
- При объяснении темы ссылаться на то, чего студент ещё не знает, просить его пока просто поверить, что всё так и работает.
Если вы начинаете объяснение с фразы «В общем, оно тут вот так работает, просто запомните, это мы на следующих занятиях обсудим», — это неудачная практика. Объясняйте сразу, как и почему работает тот или иной инструмент, о котором вы рассказываете.
- Сразу закидывать человека множеством сложных терминов и определений или усложнять подачу академическим стилем.
Это отличный способ отбить желание учиться в принципе. Если перегрузить человека огромным списком формализованного текста, он быстро потеряет интерес к учёбе. Фразы вида «При объявлении переменной необходимо добиться того, чтобы её тип соответствовал…» стоит забыть.
- Не объяснять студенту, какой практический навык он сейчас приобретает и где он ему пригодится.
Отчасти перекликается с первым пунктом, но выделим его отдельно. Студент должен понимать, как то, чему вы его учите, поможет ему в работе. Он должен понимать, что не просто пишет код ради кода, а создаёт работающие программы для выполнения действий, нужных пользователю. Это важно донести в каждом случае.
- Объяснять одну сущность с помощью упоминаний десятка других сущностей. Такой подход путает и отнимает много времени у студента.
Мы пишем наши курсы усилиями крутых авторов и редакторов, постоянно дорабатываем и улучшаем их благодаря обратной связи от студентов и наших методистов. Если вам по душе наш подход и вы хотели бы делиться своим опытом, у нас есть несколько вакансий для авторов.