Мой опыт проведения курса по Android
Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.
В 2019 году я вместе с платформой для онлайн-обучения Skillbox начал делать курс для начинающих мобильных разработчиков. На создание курса у меня ушло полтора года. Надеюсь, мой опыт поможет специалистам, которые хотят сделать курс, но не знают, как это происходит.
Подробнее о том, как это было у меня, расскажу в статье:
Почему я занимаюсь мобильной разработкой
В какой-то момент учебы в университете у меня появился Android-телефон.
Иногда в свободное время я что-то писал для этой платформы, но из чистого интереса, для себя. Учился я в МГТУ им. Баумана, где есть такой проект, как «Технопарк». Это курс на 2 года, где можно на практике изучить различные направления. Эта учеба идет дополнительной нагрузкой к основным занятиям. Брать такой курс тяжело, но полезно. Одним из направлений была «Мобильная Android-разработка». Я прошел этот курс и прокачал предыдущие знания, полученные в вузе.
После «Технопарка» встал выбор, в каком направлении развиваться. Кроме Android-разработки я попробовал фронтенд и бэкенд.
Самым интересным мне показалось вести разработку для смартфонов. В отличие от бэкенда, можно реализовать части, с которыми напрямую взаимодействует пользователь. Во фронтенде есть взаимодействие с пользователем, но на тот момент фронтенд был не так развит, как сейчас, и мне этого не хватило.
Так я остановился на мобильной разработке, которая совмещает все: можно продумать архитектуру, хранение, взаимодействие с сервером, UI.
После окончания учебы я пошел на стажировку в «Mail.ru» в раздел «Почты» и проработал там полтора года. В какой-то момент мы с бывшими однокурсниками решили создать свою компанию KTS. Все основатели поделили зоны ответственности, я взял на себя мобильную разработку. Это был конец 2016 года.
Мой опыт в преподавании
Весной 2019 в компании решили провести курс по Android.
У KTS уже был опыт обучения фронтенду и веб-разработке: на кафедре в МГТУ им. Баумана можно вести лекции, и мои коллеги из KTS уже преподавали там. Внутри нашей компании есть школа для студентов Метакласс, там мы провели курсы по фронтенду и бэкенду. Через какое-то время решили, что настала очередь Android-разработки.
Искать опытных мобильных разработчиков тяжело: их мало, и, как правило, они уже заняты. Поэтому основной задачей первого курса было взять в команду Android стажера, и мы его нашли. Но на первый курс записалось не очень много людей, потому что желающих учиться мобильной разработке было меньше, чем фронтенду или бэкенду. К тому же школу мы тогда проводили офлайн в офисе в вечерние часы после работы, что ограничило возможный круг студентов. Сейчас мы учли предыдущие ошибки и перевели школу в онлайн. На последний курс по Android записалось около 200 человек.
Как решил сделать курс со Skillbox
После окончания курса в KTS прошел месяц.
Как-то я зашел в один из чатов по мобильной разработке и случайно увидел, что Skillbox ищет преподавателя для создания курса программирования на Android. Я решил, что для меня это очень удачное время, чтобы попробовать. Только что я закончил вести курс в KTS, у меня накопился базовый материал, и знания в голове еще свежие. Также хотелось прокачать навыки выступления. Я думал так: прокачаю знания и навыки преподавания, проведу курс на популярной платформе, еще и заработаю.
Для заявки меня попросили прислать короткое видео с объяснением простой темы. После этого я созвонился с менеджером и методистом курса, мы поговорили о мотивации, курсе и условиях работы. В августе закончилась школа KTS, а в сентябре я начал готовить программу.
Подготовка программы курса
Первым этапом сотрудничества было составление программы курса.
Курс должен был познакомить студентов с платформой Android и научить разрабатывать приложения с использованием современных технологий.
Меня попросили составить план: темы, которые я буду рассказывать, что будет внутри каждой из них и что это даст студенту с точки зрения теории и практики. В оглавлении была примерная оценка времени видеоматериала по каждому уроку. Предсказать время у меня не получилось. Из-за того, что курс был для начинающих, все понятия приходилось подробно раскрывать и показывать. Подобного опыта оценки раньше не было, и в результате на некоторые уроки я рассчитывал потратить 10 минут, а потратил более получаса.
Программа нужна была студентам, которые планируют поступить на курс. Но лично мне она тоже пригодилась при подготовке материалов. Я открывал программу, смотрел, что нужно перевести в уроки, и садился за работу.
Изначально Skillbox планировал сделать курс на основе языка Java, по которому уже был готовый курс. Материал по Android нужно было разработать, а курс по Java предоставить студентам отдельно. Но в 2019 году во многих проектах уже использовался Kotlin, и он был рекомендуемым языком для Android-разработки от Google. Записывать новый курс на Java было нецелесообразно, поэтому я предложил разрабатывать курс с Kotlin. Для этого понадобилось добавить дополнительные модули по основам Kotlin в начало курса Android-разработки. В дальнейшем Kotlin тоже был выделен в отдельный курс.
Курс по Android был рассчитан примерно на полтора года. Люди приходят за сменой профессии, поэтому зачастую у них нет даже базовых знаний. Из-за подробной подачи материала получилось много.
Приходилось рассказывать даже то, что обычно пояснять не приходится: что такое Kotlin, переменные, условия, циклы, классы.
В помощь студентам для каждого модуля составляется глоссарий. В него выносятся термины, которые покрываются в модуле и самые базовые понятия, которые не объясняются.
У меня была возможность сократить время работы над курсом, урезав материал. Но в таком виде подача получилась бы скомканной. Я понимал, что занятия будут смотреть новички, поэтому показалось важным хорошо все проработать. Чтобы курс был полезен студентам в будущей практике.
Для сравнения, занятия в KTS совсем другие. Курс, который проводился осенью 2021, включал 7 лекций по 1 в неделю, а студенты должны были успеть все усвоить, выполнить домашнее задание и защитить проект.
В курсе Skillbox было 34 модуля. Новый модуль выходил раз в 2 недели и состоял из 4–5 уроков-лекций. Изначально планировалось, что общая длина уроков в модуле займет час времени. Но из-за обилия подробностей получалось больше — около полутора часов на каждый модуль. Но даже так некоторые студенты писали отзывы о том, что информации недостаточно.
Запись модулей курса
До начала пандемии коронавируса я готовил материал дома и приезжал в студию для записи.
Я собирал презентации, глоссарий, сценарии лекций, примеры кода, домашние задания и тесты по материалам модуля. На начальном этапе курса все материалы проверялись методистом на предмет корректности донесения информации до студентов. На подготовку и запись модуля уходило в среднем 30 часов. Т.к. модуль выпускается раз в две недели, то каждый день после работы я 2–3 часа готовил материал.
В таком режиме я разрабатывал курс почти полтора года. За это время я совершенно выдохся и не осилил работу над вторым, углубленным курсом. Это было немного обидно: готовить подробные занятия по базовому материалу было не очень интересно, изначально я рассчитывал на углубленный курс. Но в итоге я выгорел на базовом курсе, и углубленный разрабатывал уже другой преподаватель.
Были и другие проблемы: в начале было сложно что-то рассказывать под запись. Раньше у меня такого опыта не было, а в студии на меня направлено несколько камер со светом.
Через несколько модулей я привык, но тут начался карантин из-за пандемии. Тогда я стал записывать уроки из дома. Это оказалось комфортнее: я сижу в привычной обстановке, а на втором мониторе всегда можно подглядеть подсказки по тексту.
К тому же так получалось быстрее. Я ехал в студию в пятницу утром и терял там половину рабочего дня. Сама запись там тоже шла дольше: я тратил 6 часов на запись модуля. Дома запись занимала в два раза меньше времени.
В итоге в студии я записал только первые 7 модулей, а остальную часть удаленно.
Домашние задания и выпускные проекты
В модуле есть теоретическая и практическая части.
Теоретическая состоит из лекций и слайдов презентации. В практической части студент видит скринкаст среды разработки, где я пишу код по теме урока. По окончанию модуля студенту обязательно дается домашнее задание.
Изначально планировалось, что вместо стандартных ДЗ студенты будут разрабатывать общий проект на протяжении всего курса. А в качестве домашних заданий будут выступать части проекта. Но потом остановились на обычной схеме других курсов: в каждом модуле или наборе модулей студент должен сделать отдельный мини-проект по разобранной теме, не связанный с другими.
У домашнего задания есть:
Так задания проще придумывать, и в них удается покрыть все темы уроков в полном объеме.
Но выпускная работа тоже была. Для проекта я нашел список открытых API и выбрал самые интересные и актуальные. В итоге мы с методистами выбрали 3 проекта: фотосток unsplash, социальная сеть reddit и тренировочный сервис strava.
По каждому проекту нужно было написать ТЗ для упрощения проверок и стандартизации требуемых функций.
Дополнительно по ТЗ дизайнеры нарисовали дизайн приложений в Figma.
Студенты по окончании курса выбирали одну из тем проекта и реализовывали конкретный список возможностей по готовому описанию.
Некоторые домашние задания я переделывал. Команда продуктового аудита собирает отзывы от студентов, считает показатели CSAT. Если какое-то ДЗ вызывает слишком много вопросов, увеличивается количество итераций исправлений студентами — его перерабатывают, упрощают. Так студенты не бросают курс, остановившись на непонятных темах.
Еще приходилось перезаписывать некоторые уроки: информация, записанная в курсе, постоянно устаревает: версии IDE, подходы, deprecated-методы. Дополнительно случались проблемы технического характера со звуком и видео. Без перезаписи все это добавляет сложности для студентов.
Проверка домашних заданий
Все домашние задания на курсе проверяют преподаватели и дают обратную связь студентам.
После выхода первых модулей задания я проверял сам, чтобы понять, какие проблемы возникают у студентов. На курс пришло порядка 50 человек. Вместо разработки нового материала я почти все время потратил на проверку домашних заданий.
Через какое-то время на курс подключили проверяющих преподавателей. Сначала это были менторы на курсе Java с опытом в Android, а потом Android-разработчики. С этого момента я уже не занимался проверкой заданий, только иногда отвечал на вопросы преподавателей в чате. Вскоре проверяющих преподавателей стало больше десяти, потому что количество студентов увеличилось.
Проблемы во время создания курса
По итогам курса я выделил основные проблемы, которые возникали при его создании и доработке:
Устаревание информации. Пока я записывал курс, материал в первых уроках успел устареть: версии IDE, методы и подходы. Иногда приходилось перезаписывать материал
Звук, видео и монтаж. Иногда на монтаже не вырезались лишние куски, оговорки. Это можно понять: специалисты по монтажу недостаточно владеют материалом. При оговорке лучше явно говорить, что это требуется вырезать. Видео и звук периодически получались плохого качества из-за технических проблем. Поэтому после финального монтажа нужно детально проверить получившийся материал
Недовольство аудитории. Студенты жаловались на слишком растянутое или слишком сжатое повествование, манеру подачи. Угодить всем нереально, и для исправления брались только часто повторяющиеся жалобы
Длинные уроки. Некоторые уроки получились слишком долгими вплоть до часа времени —, а с ростом длительности растет и сложность понимания
Понимание проблем с опозданием. Для анализа и корректировки модулей не хватало промежуточных проверок оценок от студентов. Этим занималась отдельная команда продуктового аудита, когда запись курса уже подходила к концу. Поэтому в момент понимания проблем исправлять некоторые оказалось невозможно без полной перезаписи модулей. Также не удалось учесть прошлые проблемы при создании новых модулей
Лишняя трата времени на сценарии. По итогам курса среднее количество листов сценария в одном модуле — 42. Я убедился, что сценарий урока сильно помогает, но только на теоретической части урока, в остальном достаточно тезисов. Поэтому не нужно делать сценарии слишком подробными
Общая нагрузка на одного человека. Одному писать курс тяжело, особенно такой длинный. Лучше кооперироваться несколькими преподавателями
Жесткий график выпуска модулей. 2-недельные дедлайны по записи модулей приходится соблюдать довольно долгое время, в моем случае — полтора года. Это еще одна причина, по которой такой курс стоит делать командой
Часть материала для другого уровня. В погоне за лучшим пониманием в курс был добавлен некоторый необязательный материал для новичков. Его можно было убрать, тем самым сократив некоторые уроки
Примеры необязательного материала
Теория бд
Внутренности корутин
Нюансы разных видов сборок
Редко используемые UI-элементы
Scoped storage
Углубление в многопоточность, handler, looper
Система оплаты
2 года назад мы заключили договор с оплатой за часы: как поработал, так и заработал. Но в среднем все модули занимали примерно одно количество времени: 30 часов чистой работы. Оплату переводили после публикации каждого модуля на платформе.
Кроме этого, я встречал подход с фиксированной оплатой за модуль и за проверку домашнего задания.
От знакомых я слышал про другие схемы, но самый верный способ узнать об этом — спросить потенциального заказчика курсов напрямую.
При обсуждении оплаты важно правильно оценить ценность вашего времени, объем и длительность курса, график выпуска материала. Так как в большинстве случаев курсы делаются овертаймом, дополнительная активность не должна идти вам в убыток.
Выводы
Работа над курсом заняла полтора года.
За это время я прокачал некоторые темы, изучил, как они работают под капотом. В Android постоянно появляется что-то новое, и каждый год выходит как минимум одно большое обновление с выходом новой версии ОС. С чем-то я не сталкивался на рабочих проектах. Благодаря созданию курса удалось посмотреть, разобраться.
Стало проще рассказывать материал слушателям. Хотя перед лекциями я до сих пор немного волнуюсь, но стало комфортнее.
При написании статьи собрал статистику разработки курса :
Количество модулей — 34
Количество уроков — 162
Количество ДЗ — 40
Количество тестов — 64
Длительность видеокурса (ч) — 46,5
Времени потрачено на курс (ч) — 997
Среднее количество времени на модуль (ч) — 29
Количество листов презентаций — 1243
Среднее количество листов презентаций в одном модуле — 36
Количество листов сценария — 1449
Среднее количество листов сценария в одном модуле — 42
Когда курс в Skillbox закончился, у меня выдался относительно свободный промежуток времени в несколько месяцев. Тогда захотелось начать преподавать где-то еще, и я даже думал податься в другие школы. Но вспомнил, как уставал во время этой работы, и передумал :)
После записи курса для новичков на заказ делать что-то похожее и объемное не так интересно: повторный сбор и структурирование материала не приносят преподавателю много пользы, но занимают много времени. Создавать более короткие курсы внутри компании интереснее. Можно самому продвигать, тестировать гипотезы. Цикл обратной связи короче.
Возможно, через какое-то время наберусь сил и сделаю курс с углубленной программой.
Я хотел бы обратить внимание читателей на то, что создание курса несколькими преподавателями лучше для всех. Студенты получают взгляд на вещи с нескольких сторон, а преподаватели тратят меньше времени и сил.
Если вы тоже делали курсы, поделитесь, как это было? Сильно ли вы уставали? Какой опыт получили? И вообще, понравилось вам это занятие или нет?